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

2024-11-08 08:23:32
推荐回答(4个)
回答1:

在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;

回答2:

楼上不懂别害人好不好,4192先换算成16进制是1060H,对应二进制是1000,0000,0110,,0000.其中最低五位赋给TL0,接着八位给TH0,所以TL0=00H,TH0=03H

回答3:

4192换算成二进制是1000001100000,也就是 1,0000,0110,0000
因为你工作在方式0,方式是用了TH0的全部和TL0的低五位,所以,把上述二进制的低五倍给TL0
,高8位给TH0
所以 TH0 = 0x83;TL0 = 0

回答4:

TMOD=0x00; 初值算完是4192
TH0=初值 % 32;
TL0=初值 /32;