|
經(jīng)常看到一些單片機(jī)教材上給定時(shí)器的賦值是這樣寫的TH0=(65536-50000)/256;TL0=(65536-50000)%256;為什么要這樣寫呢?
如12M的晶振要產(chǎn)生50ms的定時(shí)的話應(yīng)怎么設(shè)置呢?
一個(gè)機(jī)器周期等于12個(gè)振蕩脈沖周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12(一個(gè)機(jī)器周期產(chǎn)生一個(gè)計(jì)數(shù))。12M的晶振1S產(chǎn)生 12M * 1/12 = 1M = 1000000個(gè)機(jī)器周期,50ms的話需要0.05 * 1000000 = 50000個(gè)機(jī)器周期。定時(shí)器在工作方式1時(shí)是16位的計(jì)數(shù)結(jié)構(gòu),最大計(jì)數(shù)值為2的16次方,即是65536。所以計(jì)數(shù)初值為(65536-50000),然后通過/256跟%256分別把高8位和低8位放進(jìn)相應(yīng)的寄存器。
有些教材寫成TH0=~(50000/256);TL0=~(50000%256),這個(gè)是通過取反的方法得出相應(yīng)的數(shù),道理是一樣的。
|
|