文章目录
STC89C52定时器简介
一、序言
针对于STC89C52RC而言,这个芯片内部包含了三个定时器——T0、T1和T2,他们的中断优先级分别是1、3和5。
怎么还有一个定时器2呢?博主也是今天整理这篇博客的时候,翻阅芯片手册才发现的。如果说,我们经常用的T0和T1叫做通用定时器的话,那么T2我愿称之为高级定时器。今天这篇博客是给小白介绍定时器的,就暂不介绍T2的功能,有需求的话可以向博主留言。
那么进入正题。
二、定时器的基本介绍
先来分析一下,他为什么叫做定时器?
本质上来说:他就是存储数据的寄存器,每过一个机器周期,存储的数据值加1。因此你想要定时具体的时间,有两个控制因素:一个是机器周期的大小,一个是你设置寄存器的初始值。那么什么是机器周期?
因为周期时频率的倒数,所以下面的内容我都以频率来讲解。
机器周期
官方的定义来说:执行一次最简单的代码所需要的时间。那么他与什么有关呢?答案是时钟周期。
时钟周期
时钟周期就是你单片机工作的外部时钟源的周期,就是我们所说的外部晶振。(最常见的就是11.0592MHZ)
机器频率就是时钟频率除以分频系数,那么对于STC89C52而言,它有两种分频系数,12分频和6分频,也就是我们经常见到的12T模式和6T模式(这些都是在STC-ISP里面设置)。
如此一来,当我们知道了单片机的机器周期是多少,就可以自由设置定时的时间了。
例如:晶振是11.0592MHZ 分频是12T的单片机,寄存器加1需要的时间是:11.0592MHZ / 12 = 0.9216MHZ;
如果设置20ms的定时周期,那么寄存器累加个数为:20000 * 0.9216 = 18432(个);则分别给
TH0(TH1) = (65535 - 18432) / 256;
TL0(TL1ÿ