AT89C52内部定时器/计数器0的使用方法
2025年09月21日
1.AT89C52内部定时器/计数器0的使用方法
AT89C52单片机的内部16位定时器/计数器是一个可编程定时器/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时器/计数器何时工作也是通过TCON特殊功能寄存器来设置的。
在此设计中,选择16位定时工作方式。对于T0来说,系统时钟为12MHz,最大定时也只有65536μs,即65.536ms,无法达到我们所需要的1s的定时,因此必须通过软件来处理这个问题,假设取T0的最大定时为50ms,即要定时1s需要经过20次的50ms的定时。对于这20次计数,就可以采用软件的方法来统计了。
设定TMOD=00000001B,即TMOD=01H,设置定时器/计数器0工作在方式1。
下面要给T0定时器/计数器的TH0、TL0装入预置初值,通过下面的公式可以计算出:
TH0=(216-50000)/256;TL0=(216-50000)MOD 256
这样,当定时器/计数器0计满50ms时,产生一个中断,可以在中断服务程序中对中断次数加以统计,以实现数字钟的逻辑功能。