单片机系列简单应用三

单片机系列三--单片机内部资源之中断、定时器、计数器
这是单片机系列的第三部分内容,此系列主要讲的是中断、定时器、以及计数器这三部分内容。在89C51系列单片机上有四个端口,分别是P3.2(INT0)外部中断0端口,P3.3(INT1)外部中断1端口,P3.4(T0)定时器0端口,P3.5(T1)定时器1端口。此系列我们主要说明这四个端口如何使用即可。
中断的概念在此处就不细说了,使用万维网搜索中断即可。中断是非常有用的,中断可以用来处理一些实时操作所引起的后续操作,例如敲击键盘后,将键盘的数据传输至计算机,那么何时敲击键盘是一个不确定的时间,这时就需要中断程序来响应这个操作。就中断而言,可以划分为外部中断和内部中断,内部中断又划分为可屏蔽中断和不可屏蔽中断(而外部中断均是可屏蔽中断)。不可屏蔽中断简单来说就是处理器内部的一些操作导致程序无法继续运行,比如除0操作等,无论发生什么这些内部不可屏蔽中断必须第一时间解决。而此系列所讲的中断均是外部可屏蔽中断。
定时器的作用就是减轻MCU的负荷,定时开始后到达所给定的时间时自动产生中断,并处理该中断。
计数器的作用是通过设置一个初值,之后检测P3.4端口或者P3.5端口的脉冲信号,当脉冲信号达到计数器初始化数字的时候则进入中断。
在89C51单片机上中断端口是P3.2(INT0)外部中断0端口,P3.3(INT1)外部中断1端口,在89C51单片机上定时器(计数器)端口为P3.4(T0)定时器0端口,P3.5(T1)定时器1端口,这四个端口在单片机内部的硬件电路图如图1所示。其中RX、TX部分为下一讲的重点,再次不再讲述,仅因为完整性将其全部画出。

单片机系列简单应用三
文章图片

图1 中断和定时器(计数器)在单片机内的硬件电路图
图1各部分功能如下:INTx为外部中断x端口,通过选择低电平有效还是下降沿有效来决定触发中断的条件,触发之后将TCON[IEx]置位并保存直至MCU应答之后硬件清零,(这里简单介绍一下硬件清零,在中断发生之后一般芯片都会将中断源所在位置保存以便进行下一步处理,但是置位之后如何清零有的芯片会硬件清零即自动清零,不需要程序员的操作,但是有些芯片会一直置位,直至进入中断函数由程序员将该位清零,外部中断就属于第一种自动清零)该位对于程序员来说是透明的寄存器无需关注太多。之后分别是一个分开关IE[EXx]和一个总开关IE[EA],顾名思义分开关控制每一个中断源是否可以被屏蔽,而总开关控制所有外部中断和定时器(计数器)是否可以被屏蔽,最后一部分则是控制这几个外部中断的优先级的,例如最后一部分的所有位均置1时则优先级为INT0 > T0 > INT1 > T1 > RX&TX,如果IP[PX0]清零,则优先级为T0 > INT1 > T1 > RX&TX > INT0。
中断部分的电路就介绍到这了,下面介绍的是定时器(计数器)的硬件电路,如图2所示,首先看定时器部分,即当TMOD[C/T]开关选择定时器时,晶振经过分频以后作为一个时间基准通过之后的开关来控制定时器(计数器)的开关,当计数器THxTLx溢出时,标志TCON[TFx]并产生中断。其次看计数器部分,即当TMOD[C/T]开关选择计数器时,计数器端口Tx每经过一个脉冲则计数器THxTLx加一直至产生溢出,标志TCON[TFx]并产生中断。
值得注意的一点是:开关信号是由(~TMOD[GATE] | INTx) & TCON[TRx]控制的。当给TMOD[GATE]清零时,则控制信号仅由TCON[TRx]决定,当给TCON[TRx]置1时则开始计数或者定时,否则定时器或者计数器不工作。又或者给TMOD[GATE]置1时则定时器或者计数器工作与否取决于TCON[TRx]与INTx(即外部中断是否存在)。
单片机系列简单应用三
文章图片

图2 定时器x(计数器x)的硬件电路图
下面介绍一下中断所用到的寄存器:

  1. 定时器/计数器控制寄存器TCON功能介绍
定时器/计数器控制寄存器TCON

D7
D6
D5
D4
D3
D2
D1
D0
功能
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TFx为定时器/计数器中断标志位,当定时器/计数器的计数位溢出时产生中断标志位,并由硬件清零。
TRx为定时器/计数器控制开关位,若为0则定时器/计数器暂停工作。
IEx为外部中断标志位,当有外部中断触发时产生中断标志位,并由硬件清零。
ITx为设置外部中断触发条件,当其为0时为低电平触发,当其为1时为下降沿触发。
2、中断允许寄存器IE功能介绍
中断允许寄存器IE
【单片机系列简单应用三】
D7
D6
D5
D4
D3
D2
D1
D0
功能
EA


ES
ET1
EX1
ET0
EX0
EA为总中断允许位,当其为0时,所有外部中断以及定时器/计数器中断均屏蔽。
ES为串口中断允许位,当其为1时,允许串口传输产生中断,将在下一系列讲解。
ETx为定时器/计数器中断允许位,当其为1时,允许定时器产生的中断被MCU响应。
EXx为外部中断允许位,当其为1时,允许外部中断产生的中断被MCU响应。
3、中断优先级寄存器IP功能介绍
中断优先级寄存器IP

D7
D6
D5
D4
D3
D2
D1
D0
功能



PS
PT1
PX1
PT0
PX0
中断优先级寄存器,当其中的位为1时,则为高优先级中断,否则为低优先级中断。
4、定时器/计数器工作方式寄存器TMOD功能介绍
定时器/计数器工作方式寄存器TMOD

D7
D6
D5
D4
D3
D2
D1
D0
功能
GATE1
C/T1
M11
M01
GATE0
C/T0
M10
M00
说明
定时器1控制字段
定时器2控制字段
GATEx为门信号即确定定时器/计数器是自动工作还是需要依靠外部中断信号工作。
C/Tx为选择工作方式是计数器(COUNTER)还是定时器(TIMER)。
M1xM0x为四种工作模式:
M1xM0x
工作模式说明
00
方式0:13位计数器(TH+TL为13位)
01
方式1:16位计数器(TH+TL为16位)
10
方式2:自动重装的8位计数器
11
方式3:仅适用于T0的8位计数器
方式0:为13位计数器所能存放的最大值为2^13=8192,当超出这个数值时产生中断。
方式1:为16位计数器所能存放的最大值为2^18=262144,当超出这个数值时产生中断。
方式2:为自动重装的8位定时器/计数器其中THx为TLx的影子寄存器保存所需要重装的8位数值。
方式3:只有定时器/计数器T0能使用这种方式,计数器TL0占用定时器0的资源(如中断标志位、定时器控制寄存器等),计数器TH0占用定时器1的资源如中断标志位、定时器控制寄存器等)如图3所示。此时定时器/计数器T1可以用于设置波特率(下一系列讲解)等操作。
单片机系列简单应用三
文章图片

单片机系列简单应用三
文章图片

图3 方式3硬件电路图

    推荐阅读