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