《第05章整理ppt.ppt》由会员分享,可在线阅读,更多相关《第05章整理ppt.ppt(46页珍藏版)》请在三一文库上搜索。
1、第5章 MCS-51的中断系统,5.1 中断的概念 CPU正在处理某些事件时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平的变化,一个脉冲沿的发生或内部计数器的计数溢出等)请求CPU迅速去处理。于是,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理程序处理完该事件后,再回到原来被中止的地方,继续原来的工作(例如,继续执行被中断的主程序),这称为中断。 CPU处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,叫中断处理(或中断服务)。,能够实现中断处理功能的部件称为中断系统;产生中断的请求源称为中断请求源。 中断源向CPU提出的处理请求,称为
2、中断请求(或中断申请)。 必须做的工作: (1)保护现场(PUSH) (2)恢复现场(POP) (3)中断返回(RETI),中断的作用,对突发事故,做出紧急处理。 根据现场随时变化的各种参数、信息,做出实时监控。 CPU与外部设备并行工作,以中断方式相联系,提高工作效率。 解决快速CPU与慢速外设之间的矛盾。 在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。,5.2 MCS-51中断系统的结构 51系统有: 5个中断请求源, 两个中断优先级,可两级嵌套(即:低级中断程序执行过程中可以响应高级中断)。,中断系统结构示意图如下图所示。,5.3 中断请求源 五个中断请求
3、源 : (1)/INT0外部中断请求0,由引脚/INT0输入,中断请求标志为IE0; (2)/INT1外部中断请求1,由引脚/INT1输入,中断请求标志为IE1; (3)定时器/计数器T0溢出中断请求,中断请求标志为TF0; (4)定时器/计数器T1溢出中断请求,中断请求标志为TF1; (5)串行口中断请求,中断请求标志为TI或RI; 标志位分别由特殊功能寄存器TCON和SCON的相应位锁存。,TCON为定时器/计数器的控制寄存器,字节地址为88H,可位寻址(复位:00H)。,各标志位的功能如下: (1)IT0选择外部中断请求0为跳沿触发方式还是电平触发方式(可由软件置“1”或清“0”): I
4、T0=0,为电平触发方式,加到引脚/INT0上的外部中断请求输入信号为低电平有效; IT0=1,为跳沿触发方式,加到引脚/INT0上的外部中断请求输入信号电平负跳变有效;,TCON,(2)IE0外部中断请求0的中断请求标志位: 当IT0=0,为电平触发方式,CPU在每个机器周期的S5P2采样/INT0引脚,若为低,则置“1”IE0,说明有中断请求,否则清“0”IE0。 当IT0=1,即外部中断请求0设置为跳沿触发方式时,当第一个机器周期采样到为低电平时,则置“1”IE0。IE0=1,表示外部中断0正在向CPU请求中断。 当CPU响应该中断,转向中断服务程序时,由硬件清“0”IE0。,TCON,
5、(3)IT1选择外部中断请求1为跳沿触发方式还是电平触发方式,其意义与IT0类似。 (4)IE1外部中断请求1的中断请求标志位,其意义与IE0类似。,TCON,(5)TF0MCS-51片内定时器/计数器T0溢出中断请求标志位: 当启动T0计数后,定时器/计数器T0从初值开始加1计数,当最高位产生溢出时,由硬件置“1”TF0,向CPU申请中断,CPU响应TF0中断时,清“0”TF0,TF0也可由软件清0。 (6)TF1MCS-51片内的定时器/计数器T1的溢出中断请求标志位,功能和TF0类似。 TR1(D6位)、TR0(D4位)这2个位与中断无关。 当MCS-51复位后,TCON被清0,则CPU
6、关中断,所有中断请求被禁止。,TCON,SCON为串行口控制寄存器(复位:00H),字节地址为98H,可位寻址。SCON的低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如下图所示:,各标志位的功能如下: (1)TI发送中断请求标志位:CPU将一个字节的数据写入发送缓冲器SBUF时,就启动一帧串行数据的发送,每发送完一帧串行数据后,硬件自动置“1”TI。必须在中断服务程序中用软件对TI标志清“0”。 (2)RI接收中断请求标志位:在串行口接收完一个串行数据帧,硬件自动置“1”RI标志。CPU在响应串行口接收中断。RI标志,必须在中断服务程序中用软件清“0”。,SCON,5.4
7、 中断控制 5.4.1 中断允许寄存器IE CPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。IE的字节地址为A8H,可进行位寻址。格式如下图。(复位:0XX00000B),IE对中断的开放和关闭实现两级控制。 总的开关中断控制位EA(IE.7位),当EA=0时,所有的中断请求被屏蔽。当EA=1时,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定。,IE中各位的功能如下: (1)EA:中断允许总控制位 0:CPU屏蔽所有的中断请求(CPU关中断); 1:CPU开放所有中断(CPU开中断); (2)ES:串行口中断允许位 0
8、:禁止串行口中断; 1:允许串行口中断; (3)ET1:定时器/计数器T1的溢出中断允许位 0:禁止T1溢出中断; 1:允许T1溢出中断;,(4)EX1:外部中断1中断允许位 0:禁止外部中断1中断; 1:允许外部中断1中断; (5)ET0:定时器/计数器T0的溢出中断允许位 0:禁止T0溢出中断; 1:允许T0溢出中断; (6)EX0:外部中断0中断允许位。 0:禁止外部中断0中断; 1:允许外部中断0中断;,例5-1 若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。请编写出设置IE的相应程序段。 (1)用位操作指令来编写如下程序段: CLR ES ;禁止串行口中断 CLR EX
9、1 ;禁止外部中断1中断 CLR EX0 ;禁止外部中断0中断 SETB ET0 ;允许定时器/计数器T0中断 SETB ET1 ;允许定时器/计数器T1中断 SETB EA ;CPU开中断,(2)用字节操作指令来编写: MOV IE,#8AH ;10001010B 或者用: MOV 0A8H,#8AH ;A8H为IE寄存器字节地址,5.4.2 中断优先级寄存器IP,两个中断优先级 ,可实现两级中断嵌套。,高级中断请求,可归纳为下面两条基本规则: (1)低优先级可被高优先级中断,反之则不能; (2)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断源所中断; 某一中断源被设
10、置为高优先级中断,则不能被任何其它的中断源的中断请求所中断。,中断优先级寄存器IP,其字节地址为B8H,可位寻址。(复位:XXX00000H),IP各个位的含义: (1)PS串行口中断优先级控制位 1:高优先级中断; 0:低优先级中断; (2)PT1定时器T1中断优先级控制位 1:高优先级中断; 0:低优先级中断;,(3)PX1外部中断1中断优先级控制位 1:高优先级中断; 0:低优先级中断; (4)PT0定时器T0中断优先级控制位 1:高优先级中断; 0:低优先级中断; (5)PX0外部中断0中断优先级控制位 1:高优先级中断; 0:低优先级中断; 由用户程序置“1”和清“0”,以改变各中断
11、源的中断优先级。,MCS-51的中断优先级结构。中断系统有两个不可寻址的“优先级激活触发器”。 其中一个指示某高优先级的中断正在执行,所有后来的中断均被阻止。 另一个触发器指示某低优先级的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。,在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序如下: 中断源 中断级别 外部中断0 最高 T0溢出中断 外部中断1 T1溢出中断 串行口中断 最低,例5-2 设置IP寄存器的初始值,使得MCS-51的2个外中断请求为高优先级,其它中
12、断请求为低优先级。 (1)用位操作指令 SETB PX0 ;2个外中断为高优先级 SETB PX1 CLR PS ;串行口为低优先级中断 CLR PT0 ;2个定时器/计数器为低优先级中断 CLR PT1 (2)用字节操作指令 MOV IP,#05H ;00000101B 或: MOV 0B8H,#05H ;B8H为IP寄存器的字节地址,5.5 响应中断请求的条件 一个中断请求被响应,需满足以下必要条件: (1)CPU开中断,即IE寄存器中的中断总允许位EA=1; (2)该中断源的中断允许位=1,即该中断没有被屏蔽; (3)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”; (4)无
13、同级或更高级中断正在被服务; 中断响应就是CPU对中断源提出的中断请求的接受。当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。,中断响应的主要过程: 首先由硬件自动生成一条长调用指令LCALL addr16。这里的addr16就是中断入口地址,接着就由CPU执行该指令。首先将PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向响应中断请求的中断入口地址。,中断响应是有条件的,遇到下列三种情况之一时,中断响应被封锁: (1)CPU正在处理同级的或更高优先级的中断。 (2)所查询的机器周期不是所当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能
14、进行中断响应。 (3)正在执行的指令是RETI或是访问IE或IP的指令。按MCS-51中断系统特性的规定,在执行完这些指令后,需要再去执行完一条指令,才能响应新的中断请求。 如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。,5.6 外部中断的响应时间 一、外部中断的最短的响应时间为3个机器周期: 1、中断请求标志位查询占1个机器周期; 2、子程序调用指令LCALL以转到相应的中断服 务程序入口,则需要2个机器周期; 。,二、外部中断响应的最长时间为8个机器周期: 这种情况发生在CPU进行中断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完
15、再继续执行一条指令后,才能响应中断,执行RETI或IE、IP指令,需2个机器周期。接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。加上硬件子程序调用指令LCALL的执行,需要2个机器周期。所以,外部中断响应最长时间为8个机器周期,如果已在处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了。 在一个单一中断的系统里,MCS-51单片机对外部中断请求的响应的时间总是在38个机器周期之间。,5.7 外部中断的触发方式选择,两种触发方式: 电平触发方式和跳沿触发方式。,若外中断定义为电平触发方式
16、,外中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平变化而变化,这能提高响应速度。 在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。 本方式适合于外中断以低电平输入且中断服务程序能清除外部中断请求源(即外部中断输入电平又变为高电平)的情况。,5.7.1 电平触发方式,5.7.2 跳沿触发方式,相继连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置“1”中断申请触发器,直到CPU响应此中断时,该标志才清0。这样不会丢失中断,但输入的负脉冲宽度至少保持12个时钟周期(若晶振频率为6MHz,则
17、为2S)。,5.8 中断请求的撤消 一、定时器/计数器中断请求的撤消: 中断请求被响应后,硬件会自动清TF0或TF1。因此定时/计数器中断请求是自动撤消的。 二、外部中断请求的撤消: 1、跳沿方式外部中断请求的撤消:中断请求被响应后,硬件会自动清IE0或IE1,同时作为中断请求的负跳沿一旦产生也自动消失,所以,该中断请求是自动撤消的; 2、电平方式外部中断请求的撤消:除了标志位是自动清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,所以该中断是通过软硬件结合来实现中断撤消的;,如上图所示: 只要P1.0端输出一个负脉冲(SD为D触发器的置位端)就可以使D触发器置“1”,
18、从而撤消了低电平的中断请求信号。所需的负脉冲可通过在中断服务程序中增加如下两条指令得到: ORL P1,#01H ;P1.0为“1” ANL P1,#0FEH ;P1.0为“0” 所以,电平方式的外部中断请求信号的完全撤消,是通过软硬件相结合的方法来实现的。,三、串行口中断请求的撤消: 响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能使用软件的方法。 也就是说,还需要执行下面的指令: CLR TI ;清TI标志位 CLR RI ;清RI标志位,5.9 中断服务程序的设计 一、中断服
19、务程序设计的任务 基本任务有下列几条: 1、设置中断允许控制寄存器IE,允许相应的中断请求源中断; 2、设置中断优先级寄存器IP,中断源的优先级; 3、对外中断源,要设置中断请求是采用电平触发方式还是跳沿触发方式; 4、编写中断服务程序,处理中断请求; 前3条一般放在主程序的初始化程序段中。,例5-3 假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。在主程序中可编写如下程序段: SETB EA ;EA 置“1”,CPU开中断 SETB ET0 ;ET0置“1”,允许外中断0产生中断 SETB PX0 ;PX0置“1”,外中断0为高级中断 SETB IT0 ;
20、IT0置“1”,外中断0为跳沿触发方式,二、采用中断时的主程序结构 常用的主程序结构如下: ORG 0000H LJMP MAIN;跳转主程序入口 ORG 0003B LJMP INT0;跳转/INT0中断入口 ORG 000BH LJMP T0;跳转T0中断入口 ORG 0013H LJMP INT1;跳转/INT1中断入口 ORG 001BH LJMP T1;跳转T1中断入口 ORG 0023H LJMP RTI;跳转串行中断入口,ORG 0100H MAIN:主 程 序 INT0:中断服务程序 T0:中断服务程序 INT1:中断服务程序 T1:中断服务程序 RTI:中断服务程序 END,
21、三、中断服务程序的流程 中断服务程序执行过程中的说明: 1、现场保护与现场恢复 所谓现场保护是指在中断处理程序执行前,利用PUSH指令,先将中断时刻的某些数据和状态保护起来。 所谓现场恢复是指在中断处理程序执行后,利用POP指令,将保护起来的数据和状态恢复。 2、关中断和开中断 为防止现场数据与状态被破坏,在现场保护与现场恢复操作时,要关闭中断响应。有时关中断操作贯穿整个中断服务程序。 3、中断处理 该步完成中断请求的具体目的。 4、中断返回 最后一句执行RETI指令,程序返回断点处,并清零优先级状态位。,例5-4 根据图5-9的中断服务程序流程,编写出中断服务程序。假设,现场保护只需要将PS
22、W寄存器和累加器A的内容压入堆栈中保护起来。 一个典型的中断服务程序如下: INT: CLR EA ;CPU关中断 PUSH PSW ;现场保护 PUSH A SETB EA ;CPU开中断 中断处理程序段 CLR EA ;CPU关中断 POP A ;现场恢复 POP PSW SETB EA ;CPU开中断 RETI ;中断返回,恢复断点,几点说明: (1)本例的现场保护假设仅涉及到PSW和A的内容,如还有其它需保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。对堆栈的操作是后进先出,次序不可颠倒; (2) “中断处理程序段”,应根据中断任务的具体要求,来编写这部分中断处理程序;
23、 (3)如果本中断服务程序不允许被其它的中断所中断。 可将“中断处理程序段”前后的“SETB EA”和“CLR EA”两条指令去掉,即:整个程序段禁止其他中断响应; (4)中断服务程序的最后一条指令必须是返回指令RETI;,5.10 多外部中断源系统设计 实际的应用系统中,两个外部中断请求源往往不够用,需对外部中断源进行扩充。 5.10.1 定时器/计数器作为外部中断源的使用方法(略),5.10.2 中断和查询结合的方法,ORG 0013H ;/INT1的中断入口 LJMP INT1 ; INT1: PUSH PSW ;保护现场 PUSH ACC JB P1.0,IR1 ;P1.0高,IR1有请求 JB P1.1,IR2 ;P1.1高,IR2有请求 JB P1.2,IR3 ;P1.2脚高,IR1有请求 JB P1.3,IR4 ;P1.4脚高,IR4有请求 INTIR:POP ACC ;恢复现场 POP PSW RETI ;中断返回,IR1: IR1的中断处理程序 AJMP INTIR IR2: IR2的中断处理程序 AJMP INTIR IR3: IR3的中断处理程序 AJMP INTIR IR4: IR4的中断处理程序 AJMP INTIR,
链接地址:https://www.31doc.com/p-2504287.html