定时器
定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。
定时器作用:
-
用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作。
-
替代长时间的Delay,提高CPU的运行效率和处理速度。
STC89C52定时器资源
STC89C52有3个定时器(T0、T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。
注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。
STC89C52定时器详细信息请参考手册第7章:STC89C52.pdf | Mikumikumi 文件站
定时器的运作方式
定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一。当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。
定时器的工作模式
STC89C52的T0和T1均有四种工作模式:
-
模式0:13位定时器/计数器
-
模式1:16位定时器/计数器(常用)
-
模式2:8位自动重装模式
-
模式3:两个8位计数器
模式0、2、3很少用到,这篇文章只涉及模式1。
T0工作模式1框图:
TL0(Timer Low 0)和TH0(Timer High 0)是两个寄存器,每一个有8位,即两个寄存器共同组成16位计数系统,可存储0-65535。
时钟(图左上)为此计数系统提供脉冲,每次脉冲都会使计数系统加1。
当计数系统溢出时,会将TF0(Timer Flag 0 定时器标志位)置1,申请中断(图右)。
控制位(图左下)用来控制定时器的工作状态。GATE置1时,定时器运行状态由INT0(外部中断)和TR0(Timer Run 0)共同决定;GATE置0时,定时器运行状态仅由TR0决定。
定时器时钟
定时器的时钟可以由两个来源提供:
- SYSclk:系统时钟,即晶振周期,新版普中开发板上的晶振为11.0592MHz。
- T0 Pin:外部引脚,每提供一次脉冲就使计数系统加1,此时相当于计数器。
假如系统时钟频率为12MHz。经过分频,如果为12T模式,则提供12 / 12 = 1 MHz
(1us)的脉冲频率;如果为6T模式,则提供12 / 6 = 2 MHz
(0.5us)的脉冲频率。
C/T选择开关分别表示Counter/Timer,分别在高/低电平有效。置1时切换为C,联通T0 Pin,通过外部引脚提供时钟,作计数器;置0时切换为T,联通SYSclk,通过系统时钟提供时钟,作计时器。
中断
中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。
微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。
当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。
STC89C52中断详细信息请参考手册第6章:STC89C52.pdf | Mikumikumi 文件站
中断流程
STC89C52中断源
中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3)。
中断优先级个数:4个。
中断号:
编写中断服务函数格式如下:
void Timer0_Routine() interrupt 1 //interrupt 1对应T0中断
{
//code...
}
•注意:中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同、中断优先级个数不同等等。
定时器与中断的配合
定时器与中断配合以定时执行中断处理函数,此过程不需要CPU反复延时以计算时间,节省CPU时间。就好像设定了一个闹钟,只要闹钟响了之后我们就去做一些事,而不用一直检查时间。
如果只使用定时器而不与中断配合,那么就需要CPU反复检查TF的状态,占用CPU时间,失去了定时器的意义。就好像设定了一个不会响的钟,我们必须反复检查时间来确认是不是到点了,效率非常低。
为了方便理解,这里使用的中断系统图是传统51单片机的图,STC89C52的中断系统图可参考手册。
单片机通过配置寄存器来控制内部线路的连接,即控制图中的各个开关。
寄存器是连接软硬件的媒介,在单片机中寄存器就是一段特殊的RAM存储器。一方面,寄存器可以存储和读取数据;另一方面,每一个寄存器背后都连接了一根“导线”,控制着电路的连接方式。寄存器相当于一个复杂机器的“操作按钮”。
定时器相关寄存器
此部分需要参考手册STC89C52.pdf | Mikumikumi 文件站
寄存器特性:
- 可位寻址:可以对寄存器的某一位单独赋值。
- 不可位寻址:只能对此寄存器整体赋值。
定时器寄存器
中断寄存器
按照上图,要想使中断有效,此处需要配置寄存器IE中的ET0位为1,EA位为1,IP寄存器中的优先级按需配置。
中断优先级寄存器略。
Comments NOTHING