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