51单片机定时器问题 TMOD=0x00; 初值算完是4192 我想问TH0 = ? TL0 = ?

就是不知道该怎么算,如果是模式1就直接转换16进制,但是如果是模式0,不知道该如何赋初值

在51单片机中,模式0为13位C/T,最大定时/计数值为8192。它由TL0的低5位和TH0的8个位组成13位定时器/计数器TL0的5个位最大为0x1f,也就是十进制的31。那么同样可以用模式1那样的公式来计算初始值,只需要把因子改成32即可:
#define CNT XXXX //XXXX为需要定时的值
//假定1个机器周期 = 1us
TH0 = (8192 - CNT) / 32;
TL0 = (8192 - CNT) % 32;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-23
楼上不懂别害人好不好,4192先换算成16进制是1060H,对应二进制是1000,0000,0110,,0000.其中最低五位赋给TL0,接着八位给TH0,所以TL0=00H,TH0=03H
第2个回答  2013-01-15
4192换算成二进制是1000001100000,也就是 1,0000,0110,0000
因为你工作在方式0,方式是用了TH0的全部和TL0的低五位,所以,把上述二进制的低五倍给TL0
,高8位给TH0
所以 TH0 = 0x83;TL0 = 0本回答被提问者和网友采纳
第3个回答  推荐于2017-10-16
TMOD=0x00; 初值算完是4192
TH0=初值 % 32;
TL0=初值 /32;本回答被网友采纳
相似回答