一。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,也就是说一秒=1000000次机器周期。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同理1MS定时器初值的计算:1.晶振12M12MHz除12为1MHz,也就是说一秒=1000000次机器周期。1ms=1000次 机器周期。65536-1000=15536(fc18)TH0=0xfc,TL0=0x182.晶振11.0592M11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=922次机器周期。65536-922=19456(fc66)TH0=0xfc,TL0=0x66 查看原帖>>
如果晶振是12M,那么定时器最长的定时时间是65.536毫秒,所以需要多次中断才能达到定时1秒的目的,这样的话,初值就有多种选择了。一般是定时50毫秒。初值就是:65536-50000
THn=(65536-50000)/256;
TLn=(65536-50000)%256;
第一:把定时器设置成定时方式,工作方式1:TMOD=0x01
第二:计算定时器的初始值(定时50ms),晶振按12MHz计算
(65536-X)*1us = 50000 X=15536 转换成十六进制3CB0
则TH0=0x3C,TL0=0xB0
然后开中断。启动定时器 ET0 =1 EA= 1 TR0=1
在中断服务程序中使用一个变量进行计算,每中断一次加1,中断20次,就是1s