51单片机定时器设置:大部分51单片机都是12分频,也就可以得到一个机器周期, 机器周期=12/n(n是指晶振频率),假设你要定时的时间为M,需要设定的初值=M/机器周期; TH0=(65536-初值)/256; TL0=(65536-初值)%256; 意思就是(65536-初始值)转化为16进制高位是TH0的值,低位是TL0的值;
假设时钟晶振为12M,做1ms定时计算: 机器周期=12/(12*10-6)=1us=10-6s; 定时初值为=10-3/10-6=1000; 所以:TH0=(65536-1000)/256;(求模运算,即可求出高八位的值) TL0=(65536-1000)%256;(求余运算,因为低八位最大能装255) 将65536-1000=64536化为16进制为:0xFC18 TH0=0xFC; TL0=0X18;
EA=1 是打开总中断,EA=0 是关闭总中断,51 单片机,无论使用 T0, T1, INT0,INT1都需要EA=1; ET0=1是打开定时器0中断,ET0=1是关闭定时器0中断 ET1=1是打开定时器1中断,ET1=0是关闭定时器1中断
TR0=1启动T0定时计数,TR0=0停止T0定时计数 TR1=1启动T1定时计数,TR1=0停止T1定时计数
51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数,任何时刻,当TR0/TR1为1时,T0/T1定时器计数;当TR0/TR1为0时,T0/T1定时器停止计数,置TR0/TR1为1的指令一般应该在初始化程序或主程序或其他程序中。
TMOD;
|