1、51 单片机定时器初值的计算一。10MS 定时器初值的计算:1.晶振 12M12MHz 除 12 为 1MHz,也就是说一秒 =1000000 次机器周期。10ms=10000 次 机器周期。65536-10000=55536(d8f0)TH0=0xd8,TL0=0xf02.晶振 11.0592M11.0592MHz 除 12 为 921600Hz,就是一秒 921600 次机器周期,10ms=9216 次机器周期。65536-9216=56320(dc00)TH0=0xdc,TL0=0x00二。50MS 定时器初值的计算:1.晶振 12M12MHz 除 12 为 1MHz,也就是说一秒 =1
2、000000 次机器周期。50ms=50000 次 机器周期。65536-50000=15536(3cb0)TH0=0x3c,TL0=0xb02.晶振 11.0592M11.0592MHz 除 12 为 921600Hz,就是一秒 921600 次机器周期,50ms=46080 次机器周期。65536-46080=19456(4c00)TH0=0x4c,TL0=0x00三。使用说明以 12M 晶振为例:每秒钟可以执行 1000000 次机器周期个机器周期。而 T 每次溢出最多 65536 个机器周期。我们尽量应该让溢出中断的次数最少(如 50ms),这样对主程序的干扰也就最小。开发的时候可能会
3、根据需要更换不同频率的晶振(比如c51 单片机,用 11.0592M 的晶振,很适合产生串口时钟,而 12M 晶振很方便计算定时器的时间),使用插接式比较方便。对 12MHz 1 个机器周期 1us 12/fosc = 1us方式 0 13 位定时器最大时间间隔 = 213 = 8.192ms方式 1 16 位定时器最大时间间隔 = 216 = 65.536ms方式 2 8 位定时器最大时间间隔 = 28 = 0.256ms =256 us定时 5ms,计算计时器初值 M = 2K-X*Fosc/12 12MHz方式 0: K=13,X=5ms,Fosc=12MHz 则 M = 213 - 5
4、*10(-3)*12*106/12= 3192 = 0x0C78 THx = 0CH,TLx = 78H,方式 1: K=16,X=5ms,Fosc=12MHz 则 M = 216 - 5*10(-3)*12*106/12= 60536 = 0xEC78THx = ECH,TLx = 78H, 50ms 12MHz THx = 3CH,TLx = B0H, 10ms THx = D8H,TLx = F0H, 方式 2: 最大时间 28Fosc/12 = 0.256ms十进制数是怎么来的?6MHz 一个机器周期 12/6 = 2us定时 1ms 计数初值 x(216-x)*2us = 1000usx = 216 - 500 ,TH,TL 可置 -50012MHz 一个机器周期 12/12 = 1us12MHz 一个机器周期 12/12 = 1us定时 50ms 计数初值 x(216-x)*1us = 50000usx = 216 - 50000 ,TH,TL 可置 -500定时器 计内部晶振频率计数器 计外部输入 CPU 脚上的脉冲个数 P3.4(T0)P3.5(T1) 负跳变加一当晶振为 6MHz 时,最高计数频率 500KHz