只要晶振不变,单片机的计时器TH/TL 1/0 的初始值不变,是吗?

来源:百度知道 编辑:UC知道 时间:2024/05/20 22:14:11
只要选用的晶振不变,C语言中,单片机的计时器TH0,TL0,TH1,TL1 的初始值赋值就不变,是吗?那么是怎么计算的?

main(void)
{
uchar k;
TMOD|=0x01;
TH0=0XFC;
TL0=0X66; //定时器初始化
TR0=1; //开始计数;//启动定时器0
EA=1;//中断总开关//开总中断
ET0=1;//允许定时器0中断;//开定时器0中断
......
}
只要这块板用的晶振不变,针对这块板的编程的 TH0/TH1初始值都是0XFC,TL0/TL1的初始值都是0X66 ? 0xfc和0x66是怎么算出来的?

定时时间 T = (2^M - X)×机器周期
M和定时器的工作模式有关,模式0中M = 13, 模式1中M = 16, 模式2中M = 8, 模式3中M = 8。
X为设定的计数初值,计算后转化为16进制,高8位存于THx中,低8位存于TLx中(x = 0、1)。
机器周期 t = 12 / 晶振频率。
因此,可以说如果定时器工作模式不变的话,初值的设定只和晶振频率有关。

下一个专门计算单片机定时的软件,计算很方便,手工算的话就翻书吧