前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含:


举例子:


,M1,M0

,M1,M0】
为0
TMOD = 0x01; //设置定时器模式 0000 0001

,M1,M0】的代码——与或赋值法
TMOD = 0x01; //设置定时器模式 0000 0001固然能够改变位,但是当我们遇到同时需要定时器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,只需要设置图中 TF0和TR0


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; //设置定时初值 //要赋初值,保证下一次计数也是1ms
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;
}
}