标题: 定时器计数初值的计数方法 [打印本页]

作者: 51hei单片    时间: 2016-3-13 02:32
标题: 定时器计数初值的计数方法
    经常看到一些单片机教材上给定时器的赋值是这样写的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),这个是通过取反的方法得出相应的数,道理是一样的。                                                                                                                    





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1