Предисловие Привет всем, добро пожаловать в серию микроконтроллеров YY, теплый прием! Основное содержание этой главы предназначено для ветеранов, которые имели дело с микроконтроллерами. Основное содержание включает в себя:
Например:
,M1,M0
,M1,M0】
0
TMOD = 0x01; //Устанавливаем режим таймера 0000 0001
, M1, M0] код - И или метод присваивания
TMOD = 0x01; //Устанавливаем режим таймера 0000 0001
Конечно, можно изменить бит.,Но когда мы сталкиваемся со сценарием, требующим как таймер1таймер 0, так и таймер1таймер 0.,Изменение TMOD также изменит другие таймеры.0001 0000
Изменить на0000 0001
назад,Покрывает переднюю часть;Метод оптимизации:
TMOD &= 0xF0; //Устанавливаем режим таймера,Очистите младшие четыре бита TMOD до нуля.,Старшие четыре бита остаются неизменными.
//1010 0011 & 1111 0000 = 1010 0000
TMOD |= 0x01; //Устанавливаем режим таймера,Установите самое низкое положение TMOD на 1.,Старшие четыре бита остаются неизменными.
//1010 0000 | 00000 0001 = 1010 0001
, просто нужно установить ТФ0 и ТР0
TF0 = 0; //Снимаем флаг TF0
TR0 = 1; //таймер 0 запускает отсчет времени
1111 1111 1111 1111
%
Способен разделить первые несколько и последние несколько поровну.
Получите первые восемь цифр, %
Получите последние восемь цифр
TH0 = 63536/256; //старшие восемь цифр
TL0 = 63536%256; //младшие восемь битов
ET0=1;
EA=1;
PT0=0;
void Timer0_Routine() interrupt 1
#include <REGX52.H>
void main()
{
Timer0Init();
while(1)
{
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x18; //Устанавливаем начальное значение тайминга //Чтобы присвоить начальное значение, убедитесь, что следующий счетчик также равен 1 мс
TH0 = 0xFC; //Устанавливаем начальное значение тайминга
T0Count++; //T0Count считает, делит частоту прерываний
if(T0Count>=1000)
{
T0Count=0;
P2_0=~P2_0;
}
}
void Timer0Init(void)
{
TMOD = 0x01; //Устанавливаем режим таймера
TL0 = 0x18; //Устанавливаем начальное значение тайминга 64536/256
TH0 = 0xFC; //Устанавливаем начальное значение тайминга 64536%256
TF0 = 0; //Снимаем флаг TF0
TR0 = 1; //таймер 0 запускает отсчет времени
ET0=1;
EA=1;
PT0=0;
}
void main()
{
Timer0Init();
while(1)
{
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x18; //Устанавливаем начальное значение тайминга
TH0 = 0xFC; //Устанавливаем начальное значение тайминга
T0Count++; //T0Count считает, делит частоту прерываний
if(T0Count>=500)//Частотное разделение500Второсортный,500ms
{
T0Count=0;
P2_0=~P2_0;
}
}