1. 程式人生 > >微控制器定時器0,TH0和TL0初值的計算

微控制器定時器0,TH0和TL0初值的計算

以晶振12MHZ為例:
可以得到:
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;

至於怎麼來的請看:
12M晶振每秒可產生1M個機器週期,1M個機器週期就是1000000個機器週期。一個機器週期為1us, 50ms就需要50000個機器週期,定時器在方式1工作,為16位,最大值為65536,所以需設初值為65536-50000=15536;
15536轉化為16進製得3cb0;故高位TH0=0x3c;TL0=0xb0;

不同頻率晶振產生的機器週期不一樣:
公式為:機器週期=晶振頻率/12。。。這是在該晶振頻率下每秒產生多少M機器週期。

比如當晶振頻率為11.0592M的晶振。則每秒可產生機器週期為11.0592/12=0.9216M的機器週期,也就是921600個機器週期。50ms等於0.05秒,所以需要921600*0.05=46080個機器週期;定時器在方式1工作,為16位,最大值為65536,所以需設初值為65536-46080=19456;轉為16進製為(4c00),所以高位TH0=0x4c; TL0=0x00;