|
经常看到一些单片机教材上给定时器的赋值是这样写的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),这个是通过取反的方法得出相应的数,道理是一样的。
|
|