定时器延时的时间计算方式是TH0和TL0的常数乘以机器时钟周期。这边的TH0是高8位,TL0是低8位,组成一个16位的常数。
一般51单片机是累加定时器,也就是说当计数器达到65536(0xFFFF)的时候,定时器会产生溢出中断,你的语句中,计时常数是10000,也就是说计数器会从55536开始计数到达65536就会溢出,总共计数10000次。
而机器周期是要根据你的晶振来计算的,假如为12M的晶振,这边的机器时钟周期为1us(12/12M,晶振频率12分频,书上有的,如果为6M晶振则为12/6M=2us)。
所以定时时间是10000*1us,也即10ms。
MOV TH0,#(65536-10000)/256 ;得到高8位
MOV TL0,#(65536-10000)%256 ;得到低8位
看你的时钟频率了。TH0赋值为65536-10000的高八位。TL0赋值为65536-10000的低八位
所以你的定时器计数值应该是10000。如51单片机,12M晶振的话,是10000us=10ms
补充:
因为T0分两个,TH0和TL0,每个只有八位,即从0-255.如果两个合用就是从
0-65535,(是一个16位数)要给TH0赋值的话,就必须把这个16位的数的高八位赋给TH0,即(数/256)为高8位,自然余数就是低八位了
10000*时钟周期
用256计算高八位和低八位