《单片机中断应用.ppt》由会员分享,可在线阅读,更多相关《单片机中断应用.ppt(35页珍藏版)》请在优知文库上搜索。
1、第第5 5章章 单片机中断应用单片机中断应用 5.1 5.1 中断的概念中断的概念 5.2 5.2 中断控制中断控制 5.3 5.3 单片机中断处理过程单片机中断处理过程 5.4 5.4 中断系统中断系统C51C51语言编程要点语言编程要点本章内容:本章内容: 【任务导入】【任务导入】 数码管加减数的实现:用C51编程,使外部中断每发生一次,在共阴极数码管上显示一个数字,且每中断一次显示的数值加1或减1(根据按下的是“加1键”还是“减1键”而定)。 要求:按键有消除抖动功能。【任务分析】【任务分析】 本任务的要求是:每发生一次中断,数码管数值加1或减1。加1和减1是两种不同的任务,在软件里面体
2、现为两个程序。那么什么时候数码管数值加1,什么时候又减1呢?在进行设计之前,需要补充下面有关51单片机中断系统的知识。5.1 5.1 中断的概念中断的概念 所谓中断,是指CPU执行正常程序时,系统中出现特殊请求码,CPU需要暂时中止当前的程序,转去处理更紧急的任务程序,处理完毕后,CPU再返回原程序被中止的地方继续执行原程序的过程。 日常生活中也常发生“中断”现象。比如某人正在看书,有电话铃响,决定接电话,做书签标记,起身接电话,接完电话再从刚才做标记的页码继续读书。5.2 5.2 中断控制中断控制 89C51系列单片机的中断系统结构框图如图所示,由5个中断请求源INT0、T0、INT1、T1
3、、TI/RI,中断请求标志寄存器TCON,中断允许控制寄存器IE,中断优先级寄存器IP和查询硬件等组成。通过对各种寄存器的读/写来控制单片机的中断类型、中断开/关和中断源的优先级。 当有中断源发出请求时,由硬件将相应的中断标志位置1。在中断请求被响应前,相应的中断请求标志位被锁存在特殊功能寄存器TCON和SCON中。外部中断源有外部中断和外部中断,经由外部引脚P3.2、P3.3引入。在特殊功能寄存器TCON中有4位与外部中断有关的位和4位与定时/计数器有关的位,如表5-1所示。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TFTF1 1TRTR1 1TFTF0 0TRTR0
4、0IEIE1 1ITIT1 1IEIE0 0ITIT0 01. 中断请求标志寄存器中断请求标志寄存器TCON表5-1 TCON寄存器结构(1)(1) IT0(IT1)IT0(IT1):外部中断0(或1)触发方式控制位,可由软件进行置位和复位。IT0(或IT1)=0时,外部中断为低电平触发方式;IT0(或IT1)=1时,外部中断为边沿触发方式。(2)(2) IE0(IE1)IE0(IE1):外部中断0(或1)中断请求标志位。 在电平触发方式时,CPU在每个机器周期的S5P2时刻采样P3.2(或P3.3)引脚的电平,若引脚为高电平,则IE0(或IE1)清零,若引脚为低电平,则IE0(或IE1)置1
5、,向CPU提出中断请求;在边沿触发方式时,若第一个机器周期采样到引脚为高电平,第二个机器周期采样到引脚为低电平时,将IE0或IE1置1,向CPU提出中断请求。 在边沿触发方式时,CPU在每个机器周期都采样P3.2(或P3.3)。为了保证检测到下降沿,P3.2(或P3.3)引脚的高电平与低电平至少应该保持1个机器周期。(3)(3) TR0(TR1)TR0(TR1):定时/计数器T0或T1的启动/停止控制位。当置1时启动定时/计数器,清零时停止定时或计数。(4)(4) TF0(TF1)TF0(TF1):定时/计数器T0(或T1)的溢出中断请求标志位。当定时时间到或计数值满时由硬件置位TF0(或TF
6、1)。当CPU响应中断后,再由硬件将该位清零。 89C51系列单片机的5个中断源有6个中断请求标志位,其中4个与外部中断和定时/计数器有关的都属于TCON寄存器,另外2个与串行口中断有关的属于串行口控制寄存器SCON。SCON的D7D2位在第7章中会有详细讲解,本小节只介绍与中断源有关的位,如表5-2所示。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI2. 串行口控制寄存器串行口控制寄存器SCON表5-2 SCON寄存器结构 (1)TI(1)TI:发送中断请求标志位。 (2)RI (2)R
7、I:接收中断请求标志位。 无论哪个标志位置1,都请求串行口中断。到底是发送中断TI,还是接收中断RI,只有在中断服务程序中通过指令查询来判断。串行口中断响应后,TI或RI不能由硬件清零,因此都需要软件清零。 89C51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许控制寄存器IE的各位来控制的。中断允许控制寄存器IE的字节地址为A8H,可以进行位寻址,各位定义如表5-3所示。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0EAEA- - -ESESET1ET1EX1EX1ET0ET0EX0EX03中断允许控制寄存器中断允许控制寄存器IE表5-3
8、中断允许寄存器IE(1)(1) EAEA:中断允许总控制位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。EA的作用是使中断允许形成两级控制,即各中断源首先受EA位的控制,其次还要受各中断源自己的中断允许位控制。(2)(2) ESES:串行口中断控制位。ES=1,允许串行口中断;ES=0, 屏蔽串行口中断。(3)(3) ETET1 1:定时:定时/ /计数器计数器T T1 1溢出中断允许控制位。溢出中断允许控制位。ETET1=11=1,允许,允许T T1 1中断;中断;ETET1=01=0,禁止,禁止T T1 1中断。中断。(4)(4) EXEX1 1:外部中断:外部中断1 1中断允许控制
9、位。中断允许控制位。EXEX1=11=1,允许外部中断,允许外部中断1 1中断;中断;EXEX1=01=0,禁止外部中断,禁止外部中断1 1中断。中断。(5)(5) ETET0 0:定时:定时/ /计数器计数器T T0 0溢出中断允许控制位。溢出中断允许控制位。ETET0=10=1,允许,允许T T0 0中断;中断;ETET0=00=0,禁止,禁止T T0 0中断。中断。(6)(6) EXEX0 0:外部中断:外部中断0 0中断允许控制位。中断允许控制位。EXEX0=10=1,允许外部中断,允许外部中断0 0中断;中断;EXEX0=00=0,禁止外部中断,禁止外部中断0 0中断。中断。 例如,
10、要设置允许外部中断例如,要设置允许外部中断0 0和定时和定时/ /计数器计数器T T1 1中断允许,中断允许,其他中断不允许,则其他中断不允许,则IEIE的值如表的值如表5-45-4所示,即所示,即IEIE=89=89H H。表5-4 IE=89HD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D010001001 89C51单片机采用了自然优先级和人工设置高、低优先级的策略。当CPU处理低优先级中断,又发生更高级中断时,可由软件设置每个中断源的优先级别,实现二级中断嵌套,中断过程如图所示。4中断优先级寄存器中断优先级寄存器IP 上电时,中断优先级寄存器IP被清零,每个中断源都处于
11、同一个优先级,这时若其中几个中断同时产生中断请求,CPU通过内部硬件查询逻辑按自然优先级顺序确定该响应哪个中断请求。其自然优先级由硬件形成,如表5-5所示。中中 断断 源源默认中断级别默认中断级别外部中断外部中断T0T0最高最高定时定时/ /计数器计数器T0T0第第2 2外部中断外部中断T1T1第第3 3定时定时/ /计数器计数器T1T1第第4 4串行口串行口第第5 5表5-5 51单片机中断级别 在某些特殊情况下,如果希望每个中断源有更高的优先级,则可以通过程序人工地设置高、低优先级。中断优先级由中断优先级寄存器IP来设置,如表5-6所示。表5-6 中断优先级寄存器IPD7D7D6D6D5D
12、5D4D4D3D3D2D2D1D1D0D0- - -PSPSPT1PT1PX1PX1PT0PT0PX0PX0(1)(1) PSPS:串行口中断优先级控制位。:串行口中断优先级控制位。PS=1PS=1,声明串行口中,声明串行口中断为高优先级中断;断为高优先级中断;PS=0PS=0,声明串行口中断为低优先级中,声明串行口中断为低优先级中断。断。(2)(2) PT1PT1:定时:定时/ /计数器计数器T1T1优先级控制位。优先级控制位。PT1=1PT1=1,声明定时,声明定时/ /计数器计数器T1T1为高优先级中断;为高优先级中断;PT1=0PT1=0,声明定时,声明定时/ /计数器计数器T1T1为
13、低优先级中断。为低优先级中断。(3)(3) PX1PX1:外部中断:外部中断1 1优先级控制位。优先级控制位。PX1=1PX1=1,声明外部中断,声明外部中断1 1为高优先级中断;为高优先级中断;PX1=0PX1=0,声明外部中断,声明外部中断1 1为低优先级中为低优先级中断。断。(4)(4) PT0PT0:定时:定时/ /计数器计数器T0T0优先级控制位。优先级控制位。PT0=1PT0=1,声明定时,声明定时/ /计数器计数器0 0为高优先级中断;为高优先级中断;PT0=0PT0=0,声明定时,声明定时/ /计数器计数器0 0为为低优先级中断低优先级中断(5)(5) PX0PX0:外部中断:
14、外部中断T0T0优先级控制位。优先级控制位。PX0=1PX0=1,声明外部中,声明外部中断断T0T0为高优先级中断;为高优先级中断;PX0=0PX0=0,声明外部中断,声明外部中断T0T0为低优先为低优先级中断。级中断。 在同一个优先级下,中断响应按照自然优先级顺序进行。在同一个优先级下,中断响应按照自然优先级顺序进行。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D00 00 00 00 00 01 11 10 0中断要求中断要求中断响应中断响应中断入口中断入口中中 断断 源源触发条件触发条件中断中断标志标志TCONTCON中断允中断允许许IEIE中断优中断优先级先级IPIP入
15、口地址入口地址(A(A51)51)中断中断号号( (C C51)51)外部中断外部中断0 0ITIT0=00=0时,时,P P3.23.2引脚低电平触发;引脚低电平触发;ITIT0=10=1时,时,P P3.23.2引脚下降沿触发引脚下降沿触发IEIE0 0EXEX0 0PXPX0 000030003H H0 0定时定时/ /计数器计数器T T0 0中断中断T T0 0定时或计数溢出定时或计数溢出TFTF0 0ETET0 0PTPT0 0000000BHBH1 1外部中断外部中断1 1ITIT1=01=0时,时,P P3.33.3引脚低电平触发;引脚低电平触发;ITIT1=11=1时,时,P
16、P3.33.3引脚下降沿触发引脚下降沿触发IEIE1 1EXEX1 1PXPX1 100130013H H2 2定时定时/ /计数器计数器T T1 1中断中断T T1 1定时或计数溢出定时或计数溢出TFTF1 1ETET1 1PTPT1 1001001BHBH3 3串行口中断串行口中断发送完一帧数据发送完一帧数据TITIESESPSPS00230023H H4 4接收完一帧数据接收完一帧数据RIRI例如,例如,5 5个中断源同时请求中断响应,个中断源同时请求中断响应,CPUCPU响应的顺序为:定响应的顺序为:定时时/ /计数器计数器T0T0外部中断外部中断11外部中断外部中断00定时定时/ /计数器计数器T1T1串行串行口中断。则口中断。则IPIP各位的设置如表各位的设置如表5-75-7所示,即所示,即IP=06HIP=06H。表5-7 IP=06H 表表5-85-8 89C5189C51系列单片机中断系统的主要信息系列单片机中断系统的主要信息 CPU CPU都会去查询各个中断标记,看它们是否是都会去查询各个中断标记,看它们是否是“1”“1”,如果是,如果是“1”“1”,说明有中断请求