51单片机的定时器中断(寄存器)
扫描二维码
随时随地手机看文章
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。
此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。
其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。
1.中断允许寄存器IE
图1.中断寄存器IE
中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时IE全部被清零。下面列举各位的在不同状态下的具体含义:
EA-------全局中断允许位
EA = 1,打开全局中断控制,在此条件下由各个中断控制位(TCON寄存器中的TRn位)控制相应中断的打开和关闭。
EA = 0,关闭全部中断。
-- 无效位
ET2--定时器/计数器2中断允许位
ET2 = 1,打开T2中断。
ET2 = 0,关闭T2中断。
ES--串行口中断允许位
ES = 1,打开串行口中断。
ES = 0,关闭串行口中断。
ET1--定时器/计数器中断允许位
ET1 = 1,打开T1中断。
ET1 = 0, 关闭T1中断.
EX1--外部中断1中断允许位
EX1 = 1,打开外部中断1中断。
EX1 = 0,关闭外部中断1中断。
ET0--定时器/计数器0中断允许位
ET0 = 1, 打开T0中断。
ET0 = 0,关闭T0中断。
EX--外部中断0中断允许位
EX0 = 1,打开外部中断0中断。
EX0 = 0,关闭外部中断0中断。
2.定时器/计数器相关寄存器(TMOD,TCON)
定时器/计数器工作方式寄存器(TMOD)
图2.定时器/计数器工作方式寄存器
定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址。TMOD用来确定定时器的工作方式及功能选择。单片机复位时TMOD全被被清零。下面介绍各位在不同值下的含义:
GATE --门控制位。
GATE = 0,定时器/计数器启动与停止仅受TCON寄存器中TRn(n = 0, 1)来控制。
GATE = 1,定时器/计数器启动与停止由TCON寄存器中的TRn(n=0, 1)和外部中断引脚(INT0或INT1)的电平状态来共同控制。
C/T`--定时器模式和计数器模式选择位。
C/T` = 1,为计数器模式;C/T` = 0,为定时器模式。
M1M0--工作方式选择位(见下表)
图3.定时器/计数器的4中工作方式
定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器在特殊功能寄存器中,字节地址为88H,位地址(由低到高)分别为88H~8FH,该寄存器可进行位寻址。TCON寄存器用来控制定时器启,停,标志寄存器溢出和中断情况。单片机复位时TCON全部被清零。各位被赋不同值的含义如下:
图4.定时器/计数器控制寄存器TCON
TF1--定时器1溢出标志位
当定时器1计满溢出时,由硬件使TF1置1,并申请中断。进入中断程序后由硬件自动清零。如使用定时器中断,则该位不用人为操作;但如用软件查询方式,当查询到该位为1时,需用软件清零。
TR1--定时器1运行控制位
由软件清0关闭定时器1。当GATE = 1,且INT1为高电平时,TR1置1启动定时器1;当GATE = 0时,TR1置1时即可启动定时器1.
TF0--定时器0溢出标志位,功能和操作方式和TF1相同。
TR0--定时器0运行标志位,其功能和操作方式同TR1。
IE1--外部中断1请求标志
当IT1 = 0,时为电平触发方式,每个机器周期的S5P2采样INT1引脚;若INT1引脚为低电平,则置1,否则IE1清0。
当IT1 = 1,INT1为跳变沿触发方式,当第一个机器周期采样到INT1为低电平时,则IE1置1。IE1=1时,表示外部中断1正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清0.
IT1--外部中断1触发方式选择位
IT1= 0,为电平触发方式,引脚INT1上低电平有效。
IT1 = 1,为跳变沿触发方式,引脚INT1上的电平从高到低的负跳变有效。
IE0--外部中断0请求标志,其功能及操作方式同IE1。
IT0--外部中断0触发方式选择位,其功能及操作方式同IT1。
3.总结
<1>.以上列举的各种寄存器都是为我们写中断程序的初始化部分所服务的。我们在初始化部分程序的时候,可以根据具体的需求查询到各寄存器的各个位含义,按照需求对其赋予不同的值使其发挥不同的功能。
<2>.要想编写一个定时器中断函数,还需要知道中断函数的编写方式,还需要对THn、TLn(n= 0, 1)编写初值。然后明确单片机在下载具体的可执行程序后的工作方式。这些将留在下一篇笔记中记录。