计算定时器,最原始的公式是(65536-初值)*12/晶振值=定时的时间,由此式子推出:初值=65536-(晶振值*定时时间/12)。则TH0=初值/256,TL0=初值%256,最终结果就是
TH0 = 255-CLOCK/TIME_PER_SEC/12/256;
TL0 = 255-CLOCK/TIME_PER_SEC/12%256;
其中除以TIME_PER_SEC,是因为TIME_PER_SEC表示要定时的时间的倒数。
一、计算:
1.晶振12M
12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。 65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0
2.晶振11.0592M
11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
二、参考资料:
http://wenku.baidu.com/link?url=NKwBgYZhresxh_H7Vr7wjRFmuwXwIvhK70DjBd0Alt7MT1oBdQvrm85WbXSQej3m2qwlYyoc4XbeNx0bY8-930MYa9hBU01VnlRtftho3FG
TH0 =( 255-CLOCK/TIME_PER_SEC/12)/256;
TL0 = (255-CLOCK/TIME_PER_SEC/12)%256;
这个地方应该有括号,TH0=(255-22118400/200/12)/256
其中22118400/200这个代表所使用的晶振是多大的,这里使用的是11.0592mhz的。然后除以12是代表12分频, 这里给个公式给你 a=-T*f/12 其中a为记数初值,T为定时间隔,f为晶振mhz,-T代表无符号的意思!
th0 = (255-22118400/200/12)/256 = 2;
TL0 = (255-22118400/200/12)%256=6