




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章中断系统及其应用
●教学目标:
介绍中断、中断源、中断系统的概念介绍MCS-51中断系统及中断控制介绍中断处理的过程
介绍中断应用程序的编程
●学习要求:
熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念;掌握MCS-51中断入口地址和各中断控制寄存器的每位含义及应用:包括定时器/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE和中断优先控制器IP;掌握中断初始化和中断服务程序的编制。
第5章中断系统及其应用●教学目标:15.1概述中断技术是计算机中的重要技术之一。引入中断技术作用:(1)实时处理,提高计算机处理故障的能力;(2)解决CPU和外设之间的速度匹配问题,提高CPU的效率。本章将介绍中断的概念,并以MCS-51的中断系统为例介绍中断的处理过程及应用。5.1概述中断技术是计算机中的重要技术之一。25.1.1中断的概念
中断——是指中央处理器CPU正在执行程序,处理某件事情的时候,外部发生了某一事件,请求CPU马上处理,CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再返回到原来被中断的地方,继续原来的工作。实现中断功能的部件称为中断系统。中断服务程序——中断之后所执行的处理程序通常称为中断服务程序,原来运行的程序称为主程序。
断点——主程序被断开的位置(地址)称为断点。
中断源——引起中断的原因,或能发出中断申请的来源,称为中断源。
中断请求——中断源要求服务的请求称为中断请求或中断申请。5.1.1中断的概念中断——是指中央处理器CPU3调用中断服务程序与调用子程序的区别:
调用子程序指令在程序中是事先安排好的,而调用中断服务程序事先却无法确知,因为“中断”的发生是由外设决定的,程序中无法事先安排调用指令,因而调用中断服务程序的过程是由硬件自动完成的。调用中断服务程序与调用子程序的区别:调45.1.2中断源
中断源——在中断系统中,将引起中断请求的设备或事件的来源,—般统称为中断源。常见中断源:
1.输入、输出设备中断源一般计算机的输入、输出设备,如键盘、磁盘驱动器、打印机等,可通过接口电路向CPU申请中断。
2.故障源故障源是产生故障信息的来源。例如:CPU内部故障源,如除法中除数为零时的情况;外部故障源,如电源掉电情况。在电源掉电时可以接入备用的电池供电,以保存存储器中的信息。当电压因掉电降到—定值时,就发出中断申请,由计算机的中断系统完成替换备用电源的控制。
3.实时中断源在实时控制中,常常将被控参数、信息作为实时中断源。例如,电压、电流、温度等超越上限或下限时,以及继电器、开关闭合断开时,都可以作为中断源申请中断。
4.定时/计数脉冲中断源内部定时/计数中断是由单片机内部的定时器/计数器溢出时自动产生的;外部定时/计数中断是由外部定时脉冲通过CPU的中断请求输入线或定时器/计数器的输入线引起的。5.1.2中断源中断源——在中断系统中,将引起55.1.3中断系统的一般功能中断系统一般应具有如下功能:
1.实现中断及返回当某一个中断源发出中断申请时,若允许响应这个中断请求,CPU必须在现行的指令执行完后,把断点处的PC值(即下一条应执行的指令地址)压入堆栈保存起来,称为保护断点,这是由硬件自动完成的。保护现场——响应中断请求后,将有关的寄存器内容和状态标志位压入堆栈保存起来,这称为保护现场。
恢复现场——执行中断服务程序后,恢复原保留的寄存器的内容和标志位的状态,称恢复现场,并执行返回指令“RETI”,这个过程通过用户编程来实现。5.1.3中断系统的一般功能中断系统一般应具有如下6中断及返回过程如图5—1所示:
主程序低级中断高级中断中断中断返回返回图5-2中断嵌套流程图执行中断服务程序主程序继续执行主程序RETI图5-1中断流程图中断及返回过程如图5—1所示:主程序72.实现优先权排队
优先权——给各中断源规定一个优先级别,称为优先权。当两个或者两个以上的中断源同时提出中断请求时,计算机首先为优先权最高的中断源服务,服务结束后再响应级别较低的中断源。计算机按中断源级别高低逐次响应的过程称优先权排队。这个过程可以通过硬件电路来实现,也可以通过程序查询来实现。2.实现优先权排队
优先权——给各中断源规定一个优83.实现中断嵌套
当CPU响应某一中断的请求而进行中断处理时,若有优先权级别更高的中断源发出中断申请,CPU则中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,在高级中断处理完以后,再继续执行被中断的中断服务程序。中断嵌套示意图如图5—2所示。中断申请的中断源的优先权级别与正在处理的中断源同级或更低时,CPU暂时不响应这个中断申请,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。3.实现中断嵌套当CPU9
4.实现中断的撤除
在响应中断申请以后,返回主程序之前,中断请求应该撤除,否则,就等于中断申请依然存在,这将影响对其它中断申请的响应。MCS-51中断系统只能对一部分中断申请,在响应后自动撤除,使用中应注意。
4.实现中断的撤除
在响应中断申请以后,返105.2MCS-51中断系统及中断控制
MCS-51的中断系统结构框图如图5—3所示,与中断有关的特殊功能寄存器有4个,分别为中断源寄存器(即专用寄存器TCON和SCON的相关位)、中断允许控制寄存器IE和中断优先级控制寄存器IP。MCS-51单片机有5个中断源,可提供两个中断优先级,即可实现二级中断嵌套。5.2MCS-51中断系统及中断控制
MCS-51的中断11图5-3MCS-51的中断系统结构框图
图5-3MCS-51的中断系统结构框图125.2..1MCS-51中断源及中断入口
MCS-51的中断源可分为三类:外部中断、定时中断和串行口中断。
1.外部中断类外部中断是由外部原因引起的,即外部中断0(INT0)和外部中断1(INT1):
INT0——外部中断0请求信号,由P3.2引脚输入。由IT0(TCON.0)决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向CPU申请中断,并且使IE0=1。
INT1——外部中断1请求信号,由P3.3引脚输入。由IT1(TCON.2)决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向CPU申请中断,并且使IE1=1。5.2..1MCS-51中断源及中断入口132.定时中断类
定时中断是为满足定时或计数溢出处理的需要而设置的,当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位,这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由单片机芯片外部引入。
TF0—一定时器T0溢出中断请求。当定时器T0产生溢出时,其中断请求标志TF0=1,请求中断处理。
TF1——定时器T1溢出中断请求。当定时器T1产生溢出时,其中断请求标志TF1=1,请求中断处理。2.定时中断类
143.串行口中断类
串行口中断是为串行数据的传送需要而设置的。
RI或TI——串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。
各中断源对应的中断服务程序入口地址:
中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013定时器T1中断001BH串行口中断0023H3.串行口中断类串行口中断是为串行数据的传155.2..2MCS-51中断请求
在中断请求被响应前,中断请求标志分别由特殊功能寄存器TCON和SCON的相应位锁存。
1.TCON中的中断标志
TCON控制寄存器各位含义:
TCON8FH8DH8BH8AH89H88H
TFl——T1溢出中断标志。
T1被启动计数后,从初值开始加1计数,直至计满溢出后,由硬件使TFl=l,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。
TFlTF0IE1IT1IE0IT0(88H)5.2..2MCS-51中断请求
在中断请求16
TF0——T0溢出中断标志。其操作功能类似于TF1。
IE1——INT1外部中断1标志。IE1=1表明外部中断1向CPU申请中断。
IT1——外部中断1触发方式控制位。
(1)ITl=0,外部中断1为电平触发方式,低电平有效。
(2)ITl=1,外部中断1控制为边沿(先高后低的负跳变)触发方式。
IE0——INT0外部中断0标志。其操作功能与IE1类同。
IT0——外部中断0触发方式控制位。其操作功能与IT1类同。
TF0——T0溢出中断标志。其操作功能类似于TF1。172.SCON中的中断标志
SCON是串行口控制寄存器,其低2位TI和RI锁存串口的发送中断和接收中断标志。其格式和各位含义如下:
SCON99H98H
TI——串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。TI标志由软件清除。
RI——串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。RI标志由软件清除。MCS-51系统复位后,TCON和SCON中各位均被清“0”。(98H)SMODTIRI2.SCON中的中断标志
SC185.2.3中断允许控制
中断允许寄存器IE格式和各位含义如下:IEAFHACHABHAAHA9HA8HEA——CPU中断总允许位。EA=1,CPU开放中断,每个中断源是被允许还是被禁止,分别由各自的允许位确定;EA=0,CPU屏蔽所有的中断请求,称关中断。
ES——串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断
ET1一—T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
EX1——外部中断l允许位。EX1=1,允许外部中断1中断;EXl=0,禁止外部中断1中断。
ET0一—T0中断允许位。ET0=l,允许T0中断;ET0=0,禁止T0中断。
EX0——外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。MCS-5l系统复位后,IE中各中断允许位均被清“0”,即禁止所有中断。EA
ESET1EX1ET0EX0(A8H)5.2.3中断允许控制中断允许寄存器IE格式和195.2.4中断优先级
中断优先级——系统设计人员给每个中断源,事先安排一个中断响应的优先顺序。然后按照轻重缓急的次序响应中断。中断源的这种优先顺序常被称为中断优先权级别,或简称中断优先级。
专用寄存器IP统一管理中断优先级。它具有两个中断优先级,由软件设置每个中断源为高优先级中断或低优先级中断,并可实现两级中断嵌套。高优先级中断源可以中断正在执行的低优先级中断服务程序,除非在执行低优先级中断服务程序时设置了CPU关中断或禁止某些高优先级中断源的中断。同级或低优先级的中断源不能中断正在执行的中断服务程序。
5.2.4中断优先级
中断优先级——系统设计人20专用寄存器IP为中断优先级寄存器,其格式和各位含义如下:
IPBCHBBHBAHB9HB8HPS——串行口中断优先级控制位。PT1——T1中断优先级控制位。PX1——外部中断l中断优先级控制位。
PT0——T0中断优先级控制位。PX0——外部中断0中断优先级控制位。
以上对应位为1,高优先级;为0,低优先级。当系统复位后,IP低5位全部清“0”,将所有中断源设置为低优先级中断。
PSPT1PX1PX1PX0(B8H)专用寄存器IP为中断优先级寄存器,其格式和各位含义如下:
21自然优先级由硬件形成,排列次序如下:
中断源自然优先级
外部中断0最高级定时器T0中断外部中断1定时器T1中断串行口中断最低级当重新设置优先级时,则顺序查询逻辑电路将会相应改变排队顺序。例如,给中断优先级寄存器IP中设置的优先级控制字为11H,则PS和PX0均为高优先级中断。当这两个中断源同时发出中断申请时,CPU将先响应自然优先级高的PX0的中断申请,而后响应自然优先级低的PS的中断申请。自然优先级由硬件形成,排列次序如下:中断源225.2.5中断响应时间
不同的情况对中断响应的时间不同:(1)最短的响应时间,需要5个机器周期。调用指令本身要用2个机器周期,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需要3个机器周期。(2)如果遇到中断受阻的情况,中断响应时间会更长一些。不同中断受阻情况,附加的等待时间为1~5个机器周期。(3)若系统中只有一个中断源,则响应时间为3~8个机器周期。(4)如果有两个以上中断源同时申请中断,则响应时间将更长。
—般情况下,可不考虑响应时间,但在精确定时控制的场合需要考虑此问题。5.2.5中断响应时间
不同的情况对中断响应的时235.2.6中断请求的撤除
CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。(1)定时器0或1溢出中断,CPU在响应中断后,中断请求自动撤除。(2)边沿激活的外部中断,CPU在响应中断后,硬件自动清除有关的中断请求。(3)串行口中断,CPU响应中断后,靠软件来清除相应的标志。电平激活的外部中断撤除方法较复杂。5.2.6中断请求的撤除
CPU响应某中断24图5—4是撤除电平激活的中断的可行的方案之一。
用P1.0接在触发器的S端作为应答线,当CPU响应中断后可使用如下两条指令:
ANLPl,#0FEHORLP1,#01H执行第一条指令使P1.0输出为“0”,其持续时间为2个机器周期,足以使D触发器置位,从而撤除中断请求。执行第二条指令使P1.0变为“1”,否则D触发器的S端始终有效,INT0端始终为“1”,无法再次申请中断。图5—4是撤除电平激活的中断的可行的方案之一。25图5-4撤除外部中断请求的电路
图5-4撤除外部中断请求的电路265.3中断处理过程
一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。中断处理流程图如图5-5所示。不同的计算机由于中断系统的硬件结构不完全相同,因而中断响应的方式有所不同。在此,仅以MCS—51单片机为例来介绍中断处理的过程。中止现行程序,保护断点转入中断服务程序入口保护现场中断服务恢复现场中断返回(RETI)
图5-5中断处理流程图中断响应
中断返回中断处理中断请求
CPU响应中断中断请求5.3中断处理过程一个完整的中断处275.3.1中断请求
中断请求是中断源(或者通过接口电路)向CPU发出请求中断的信号,要求CPU中断原来执行的程序,转去为它服务。一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向CPU发出信号,请求CPU中断。
中断请求信号可以是电平信号,也可以是脉冲信号。中断请求信号应该一直保持到CPU做出反应时为止。5.3.1中断请求
中断请求是中断源(285.3.2中断响应
中断响应是在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。在这一阶段,CPU要完成中断服务以前的所有准备工作,包括保护断点和把程序转向中断服务程序的入口地址(通常称为矢量地址)。1.CPU的中断响应条件(1)有中断源发出中断申请;(2)中断总允许位EA=1,即CPU允许所有中断源申请中断;(3)申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。5.3.2中断响应中断响应是在满足CPU的中29
有下列任何一种情况存在,中断响应都会受到阻断:(1)CPU正在执行一个同级或高一级的中断服务程序;(2)当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前,任何中断请求都得不到响应;(3)正在执行的指令是返回(RETI)指令或者对专用寄存器IE、IP进行读/写的指令,此时,在执行RETI或者读写IE或IP之后,不会马上响应中断请求。若存在上述任何一种情况,则不会马上响应中断,而把该中断请求锁存在各自的中断标志位中,在下一个机器周期再按顺序查询。
由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。有下列任何一种情况存在,中断响应都会受到阻断302.中断响应过程
MCS-51中断入口地址和中断输入引脚是一一对应的,从哪个中断输入引脚进入的中断请求,它的中断服务程序入口地址一定是某个固定值。如从INT0(P3.2)引脚进入的中断请求,转向的中断入口地址是0003H单元。2.中断响应过程MCS-5315.3.3中断处理
中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。
一般包括保护现场和处理中断源的请求及恢复现场三部分内容。一般主程序和中断服务程序都可能会用到累加器、PSW寄存器和一些其它寄存器。CPU在进入中断服务程序后,用到上述寄存器时就会破坏它原来存在寄存器中的内容,一旦中断返回,将会造成主程序的混乱。5.3.3中断处理中断处理325.3.4中断返回
中断返回是指执行完中断服务程序后,程序返回到断点(即原来程序执行时被断开的位置),继续执行原来的程序。中断返回由专门的中断返回指令“RETI”实现,该指令的功能是把断点地址取出,送回到程序计数器PC中去。特别要注意不能用子程序返回指令“RET”代替中断返回指令“RETI”。5.3.4中断返回中断返回是指执行完335.4中断应用程序举例
中断程序一般包含中断控制程序(即中断初始化程序)和中断服务程序两部分。5.4.1中断初始化程序中断初始化程序实质上就是对TCON、SCON、IE和IP寄存器的管理和控制。只要这些寄存器的相应位按照要求进行了状态预置,CPU就会按照人们的意图对中断源进行管理和控制。中断初始化程序一般不独立编写,而是包含在主程序中,根据需要进行编写。中断初始化程序需完成以下操作:
1.开中断;
2.某一中断源中断请求的允许与禁止(屏蔽);
3.确定各中断源的优先级别;
4.若是外部中断请求,则要设定触发方式是电平触发还是边沿触发。5.4中断应用程序举例中断程序34例5-1假设规定外部中断0为电平触发方式,高优先级,试写出有关的初始化程序。
解:可用两种方法完成。
①方法1,用位操作指令完成:SETBEA ;开中断允许总控制位SETBEX0 ;外中断0开中断SETBPX0 ;外中断0高优先级CLRIT0 ;电平触发②方法2,用其它指令也可完成同样功能:MOVIE,#81H ;同时置位EA和EX0ORLIP,#01H ;置位PX0ANLTCON,#0FEH ;使IT0为0
这两种方法都可以完成题目规定的要求。一般情况下,用方法1简单些。因为,在编制中断初始化程序时,只需知道控制位的名称就行了,而不必记住它们在寄存器中的确切位置。例5-1假设规定外部中断0为电平触发方式,高优先级,试写出355.4.2中断服务程序
中断服务程序是一种为中断源的特定情况要求服务的独立程序段,以中断返回指令RETI结束,中断服务完后返回到原来被中断的地方(即断点),继续执行原来的程序。
中断服务程序的固定入口:
0003H单元——外部中断INT0的中断服务程序入口
000BH单元——内部定时器/计数器T0的中断服务程序入口
0013H单元——外部中断INT1的中断服务程序入口
001BH单元——内部定时器/计数器T1的中断服务程序入口
0023H单元——串行口的中断服务程序入口
中断服务程序和子程序一样,在调用和返回时,也有一个保护断点和现场的问题。
在中断响应过程中,断点的保护主要由硬件电路自动实现。它将断点压人堆栈,再将中断服务程序的入口地址送入程序计数器PC,使程序转向中断服务程序,即为中断源的请求服务。5.4.2中断服务程序中断服务36
中断时,现场保护由中断服务程序来完成。因此在编写中断服务程序时必须考虑保护现场的问题。在MCS—51单片机中,现场一般包括累加器A、工作寄存器R0~R7以及程序状态字PSW等。保护的方法与子程序相同。
在编写中断服务程序时还应注意以下三点:
(1)各中断源入口地址之间只相隔8个字节。中断服务程序放在此处,一般容量是不够的。常用的方法是在中断入口地址单元处,存放—条无条件转移指令,如“LJMPAddress”,使程序跳转到用户安排的中断服务程序起始地址去。
(2)在执行当前中断程序时,为了禁止更高优先级中断源的中断请求,可先用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放被关闭或被屏蔽的中断。
(3)在多级中断情况下,应在保护现场之前关掉中断,在恢复现场之后打开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后开中断,恢复现场之前关中断。
375.4.3应用举例
在设计中断服务程序时,是按中断源的要求,根据中断处理所要完成的任务来进行的。
保护现场和恢复现场一般采用PUSH和POP指令来实现。PUSH和POP指令一般成对出现,以保证寄存器的内容不会改变。要注意堆栈操作的“先进后出,后进先出”的原则。5.4.3应用举例
38例5-2设在主程序中用到了寄存器PSW、ACC、B、DPTR,而在执行中断服务程序时需要用到这些寄存器。因此,在中断服务程序里要保护PSW、ACC、B、DPTR的内容,以免破坏主程序中相应用到的寄存器PSW、ACC、B、DPTR内容。
程序如下:
SERVICE: PUSH PSW;保护程序状态字
PUSH ACC;保护累加器APUSH B; 保护寄存器BPUSH DPL;保护数据指针低字节PUSH DPH;保护数据指针高字节
┇ ;中断处理POP
DPH;恢复现场,即恢复各寄存器内容POP DPLPOP BPOP ACCPOP PSWRETI中断在实时控制中应用很多,在后面的章节中,会陆续讲到。下面举一例予以介绍。例5-2设在主程序中用到了寄存器PSW、ACC、B、DP39例5-3
图5-5为多个故障显示电路,当系统无故障时,4个故障源输入端X1~X4全为低电平,显示灯全灭;当某部分出现故障,其对应的输入由低电平变为高电平,从而引起MCS-51单片机中断,中断服务程序的任务是判定故障源,并用对应的发光二极管LED1~LED4进行显示。
图5-5多个故障源进行显示例5-3图5-5为多个故障显示电路,当系统无故障时,4个40编程如下:
ORG0000H ;程序开始
AJMPMAIN ;转主程序
ORG0003H ;外部中断INT0入口地址
AJMPSERVICE ;转中断服务程序MAIN: 0RLP1,#0FFH ;灯全灭,准备读入
SETBIT0 ;选择边沿方式
SETBEX0 ;允许INT0中断
SETBEA ;CPU开中断
AJMP$ ;等待中断SERVICE:JNBP1.3,N1 ;若X1无故障转
CLRP1.4 ;若X1有故障,LED1亮N1: JNBP1.2,N2 ;若X2无故障转
CLRP1.5 ;若X2有故障,LED2亮N2: JNBP1.1,N3 ;若X3无故障转
CLRP1.6 ;若X3有故障,LED3亮N3: JNBP1.0,N4 ;若X4无故障转
CLRP1.7 ;若X4有故障,LED4亮N4: RETI编程如下: ORG0000H 41
这个程序主要分为主程序和中断服务程序两部分。主程序主要完成初始化的工作,中断服务程序主要检测故障源是否发生,如果某故障源发生,则将相应的指示灯点亮。在此主程序和中断服务程序中,没有存在使用寄存器之间的干涉问题。因此,在中断服务程序中不用保护现场和恢复现场。这个程序主要分为主程序和中断服务程序两42小结
本章就中断的概念、中断系统、中断控制、中断处理、中断服务程序的编制和应用,进行了比较详细的阐述。引入中断后,计算机的效率得到了很大的提高,在解决实时控制的问题时,变得非常的灵活和方便,应用非常广泛。主要内容有:中断、中断源、中断服务程序、保护现场、恢复现场等概念;中断流程、中断嵌套、中断优先级、中断处理等过程的实现;MCS-51中断入口地址;各中断控制寄存器的每位含义:包括定时器/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE和中断优先控制器IP;中断初始化和中断服务程序的编制等。小43
思考题与习题五
1.什么叫中断?中断系统一般应具备哪些功能?
2.中断服务程序和子程序的主要区别是什么?
3.MCS-51中断系统有几个中断源?中断源的名称是什么?
4.MCS-51中断系统有几级中断优先级?它是如何控制的?
5.MCS-51单片机响应中断后,中断入口地址各是多少?
6.一个完整的中断处理的基本过程包括哪些内容?
7.中断响应后,是怎样保护断点和保护现场的?
8.试编写一段对中断系统进行初始化的程序,使之允许INT0、INT1、T0和串行口中断,且使串行口中断为高优先级中断。
44第5章中断系统及其应用
●教学目标:
介绍中断、中断源、中断系统的概念介绍MCS-51中断系统及中断控制介绍中断处理的过程
介绍中断应用程序的编程
●学习要求:
熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念;掌握MCS-51中断入口地址和各中断控制寄存器的每位含义及应用:包括定时器/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE和中断优先控制器IP;掌握中断初始化和中断服务程序的编制。
第5章中断系统及其应用●教学目标:455.1概述中断技术是计算机中的重要技术之一。引入中断技术作用:(1)实时处理,提高计算机处理故障的能力;(2)解决CPU和外设之间的速度匹配问题,提高CPU的效率。本章将介绍中断的概念,并以MCS-51的中断系统为例介绍中断的处理过程及应用。5.1概述中断技术是计算机中的重要技术之一。465.1.1中断的概念
中断——是指中央处理器CPU正在执行程序,处理某件事情的时候,外部发生了某一事件,请求CPU马上处理,CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再返回到原来被中断的地方,继续原来的工作。实现中断功能的部件称为中断系统。中断服务程序——中断之后所执行的处理程序通常称为中断服务程序,原来运行的程序称为主程序。
断点——主程序被断开的位置(地址)称为断点。
中断源——引起中断的原因,或能发出中断申请的来源,称为中断源。
中断请求——中断源要求服务的请求称为中断请求或中断申请。5.1.1中断的概念中断——是指中央处理器CPU47调用中断服务程序与调用子程序的区别:
调用子程序指令在程序中是事先安排好的,而调用中断服务程序事先却无法确知,因为“中断”的发生是由外设决定的,程序中无法事先安排调用指令,因而调用中断服务程序的过程是由硬件自动完成的。调用中断服务程序与调用子程序的区别:调485.1.2中断源
中断源——在中断系统中,将引起中断请求的设备或事件的来源,—般统称为中断源。常见中断源:
1.输入、输出设备中断源一般计算机的输入、输出设备,如键盘、磁盘驱动器、打印机等,可通过接口电路向CPU申请中断。
2.故障源故障源是产生故障信息的来源。例如:CPU内部故障源,如除法中除数为零时的情况;外部故障源,如电源掉电情况。在电源掉电时可以接入备用的电池供电,以保存存储器中的信息。当电压因掉电降到—定值时,就发出中断申请,由计算机的中断系统完成替换备用电源的控制。
3.实时中断源在实时控制中,常常将被控参数、信息作为实时中断源。例如,电压、电流、温度等超越上限或下限时,以及继电器、开关闭合断开时,都可以作为中断源申请中断。
4.定时/计数脉冲中断源内部定时/计数中断是由单片机内部的定时器/计数器溢出时自动产生的;外部定时/计数中断是由外部定时脉冲通过CPU的中断请求输入线或定时器/计数器的输入线引起的。5.1.2中断源中断源——在中断系统中,将引起495.1.3中断系统的一般功能中断系统一般应具有如下功能:
1.实现中断及返回当某一个中断源发出中断申请时,若允许响应这个中断请求,CPU必须在现行的指令执行完后,把断点处的PC值(即下一条应执行的指令地址)压入堆栈保存起来,称为保护断点,这是由硬件自动完成的。保护现场——响应中断请求后,将有关的寄存器内容和状态标志位压入堆栈保存起来,这称为保护现场。
恢复现场——执行中断服务程序后,恢复原保留的寄存器的内容和标志位的状态,称恢复现场,并执行返回指令“RETI”,这个过程通过用户编程来实现。5.1.3中断系统的一般功能中断系统一般应具有如下50中断及返回过程如图5—1所示:
主程序低级中断高级中断中断中断返回返回图5-2中断嵌套流程图执行中断服务程序主程序继续执行主程序RETI图5-1中断流程图中断及返回过程如图5—1所示:主程序512.实现优先权排队
优先权——给各中断源规定一个优先级别,称为优先权。当两个或者两个以上的中断源同时提出中断请求时,计算机首先为优先权最高的中断源服务,服务结束后再响应级别较低的中断源。计算机按中断源级别高低逐次响应的过程称优先权排队。这个过程可以通过硬件电路来实现,也可以通过程序查询来实现。2.实现优先权排队
优先权——给各中断源规定一个优523.实现中断嵌套
当CPU响应某一中断的请求而进行中断处理时,若有优先权级别更高的中断源发出中断申请,CPU则中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,在高级中断处理完以后,再继续执行被中断的中断服务程序。中断嵌套示意图如图5—2所示。中断申请的中断源的优先权级别与正在处理的中断源同级或更低时,CPU暂时不响应这个中断申请,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。3.实现中断嵌套当CPU53
4.实现中断的撤除
在响应中断申请以后,返回主程序之前,中断请求应该撤除,否则,就等于中断申请依然存在,这将影响对其它中断申请的响应。MCS-51中断系统只能对一部分中断申请,在响应后自动撤除,使用中应注意。
4.实现中断的撤除
在响应中断申请以后,返545.2MCS-51中断系统及中断控制
MCS-51的中断系统结构框图如图5—3所示,与中断有关的特殊功能寄存器有4个,分别为中断源寄存器(即专用寄存器TCON和SCON的相关位)、中断允许控制寄存器IE和中断优先级控制寄存器IP。MCS-51单片机有5个中断源,可提供两个中断优先级,即可实现二级中断嵌套。5.2MCS-51中断系统及中断控制
MCS-51的中断55图5-3MCS-51的中断系统结构框图
图5-3MCS-51的中断系统结构框图565.2..1MCS-51中断源及中断入口
MCS-51的中断源可分为三类:外部中断、定时中断和串行口中断。
1.外部中断类外部中断是由外部原因引起的,即外部中断0(INT0)和外部中断1(INT1):
INT0——外部中断0请求信号,由P3.2引脚输入。由IT0(TCON.0)决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向CPU申请中断,并且使IE0=1。
INT1——外部中断1请求信号,由P3.3引脚输入。由IT1(TCON.2)决定中断请求信号是低电平有效还是下降沿有效。一旦输入信号有效,即向CPU申请中断,并且使IE1=1。5.2..1MCS-51中断源及中断入口572.定时中断类
定时中断是为满足定时或计数溢出处理的需要而设置的,当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位,这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由单片机芯片外部引入。
TF0—一定时器T0溢出中断请求。当定时器T0产生溢出时,其中断请求标志TF0=1,请求中断处理。
TF1——定时器T1溢出中断请求。当定时器T1产生溢出时,其中断请求标志TF1=1,请求中断处理。2.定时中断类
583.串行口中断类
串行口中断是为串行数据的传送需要而设置的。
RI或TI——串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。
各中断源对应的中断服务程序入口地址:
中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013定时器T1中断001BH串行口中断0023H3.串行口中断类串行口中断是为串行数据的传595.2..2MCS-51中断请求
在中断请求被响应前,中断请求标志分别由特殊功能寄存器TCON和SCON的相应位锁存。
1.TCON中的中断标志
TCON控制寄存器各位含义:
TCON8FH8DH8BH8AH89H88H
TFl——T1溢出中断标志。
T1被启动计数后,从初值开始加1计数,直至计满溢出后,由硬件使TFl=l,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。
TFlTF0IE1IT1IE0IT0(88H)5.2..2MCS-51中断请求
在中断请求60
TF0——T0溢出中断标志。其操作功能类似于TF1。
IE1——INT1外部中断1标志。IE1=1表明外部中断1向CPU申请中断。
IT1——外部中断1触发方式控制位。
(1)ITl=0,外部中断1为电平触发方式,低电平有效。
(2)ITl=1,外部中断1控制为边沿(先高后低的负跳变)触发方式。
IE0——INT0外部中断0标志。其操作功能与IE1类同。
IT0——外部中断0触发方式控制位。其操作功能与IT1类同。
TF0——T0溢出中断标志。其操作功能类似于TF1。612.SCON中的中断标志
SCON是串行口控制寄存器,其低2位TI和RI锁存串口的发送中断和接收中断标志。其格式和各位含义如下:
SCON99H98H
TI——串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。TI标志由软件清除。
RI——串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。RI标志由软件清除。MCS-51系统复位后,TCON和SCON中各位均被清“0”。(98H)SMODTIRI2.SCON中的中断标志
SC625.2.3中断允许控制
中断允许寄存器IE格式和各位含义如下:IEAFHACHABHAAHA9HA8HEA——CPU中断总允许位。EA=1,CPU开放中断,每个中断源是被允许还是被禁止,分别由各自的允许位确定;EA=0,CPU屏蔽所有的中断请求,称关中断。
ES——串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断
ET1一—T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
EX1——外部中断l允许位。EX1=1,允许外部中断1中断;EXl=0,禁止外部中断1中断。
ET0一—T0中断允许位。ET0=l,允许T0中断;ET0=0,禁止T0中断。
EX0——外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。MCS-5l系统复位后,IE中各中断允许位均被清“0”,即禁止所有中断。EA
ESET1EX1ET0EX0(A8H)5.2.3中断允许控制中断允许寄存器IE格式和635.2.4中断优先级
中断优先级——系统设计人员给每个中断源,事先安排一个中断响应的优先顺序。然后按照轻重缓急的次序响应中断。中断源的这种优先顺序常被称为中断优先权级别,或简称中断优先级。
专用寄存器IP统一管理中断优先级。它具有两个中断优先级,由软件设置每个中断源为高优先级中断或低优先级中断,并可实现两级中断嵌套。高优先级中断源可以中断正在执行的低优先级中断服务程序,除非在执行低优先级中断服务程序时设置了CPU关中断或禁止某些高优先级中断源的中断。同级或低优先级的中断源不能中断正在执行的中断服务程序。
5.2.4中断优先级
中断优先级——系统设计人64专用寄存器IP为中断优先级寄存器,其格式和各位含义如下:
IPBCHBBHBAHB9HB8HPS——串行口中断优先级控制位。PT1——T1中断优先级控制位。PX1——外部中断l中断优先级控制位。
PT0——T0中断优先级控制位。PX0——外部中断0中断优先级控制位。
以上对应位为1,高优先级;为0,低优先级。当系统复位后,IP低5位全部清“0”,将所有中断源设置为低优先级中断。
PSPT1PX1PX1PX0(B8H)专用寄存器IP为中断优先级寄存器,其格式和各位含义如下:
65自然优先级由硬件形成,排列次序如下:
中断源自然优先级
外部中断0最高级定时器T0中断外部中断1定时器T1中断串行口中断最低级当重新设置优先级时,则顺序查询逻辑电路将会相应改变排队顺序。例如,给中断优先级寄存器IP中设置的优先级控制字为11H,则PS和PX0均为高优先级中断。当这两个中断源同时发出中断申请时,CPU将先响应自然优先级高的PX0的中断申请,而后响应自然优先级低的PS的中断申请。自然优先级由硬件形成,排列次序如下:中断源665.2.5中断响应时间
不同的情况对中断响应的时间不同:(1)最短的响应时间,需要5个机器周期。调用指令本身要用2个机器周期,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需要3个机器周期。(2)如果遇到中断受阻的情况,中断响应时间会更长一些。不同中断受阻情况,附加的等待时间为1~5个机器周期。(3)若系统中只有一个中断源,则响应时间为3~8个机器周期。(4)如果有两个以上中断源同时申请中断,则响应时间将更长。
—般情况下,可不考虑响应时间,但在精确定时控制的场合需要考虑此问题。5.2.5中断响应时间
不同的情况对中断响应的时675.2.6中断请求的撤除
CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。(1)定时器0或1溢出中断,CPU在响应中断后,中断请求自动撤除。(2)边沿激活的外部中断,CPU在响应中断后,硬件自动清除有关的中断请求。(3)串行口中断,CPU响应中断后,靠软件来清除相应的标志。电平激活的外部中断撤除方法较复杂。5.2.6中断请求的撤除
CPU响应某中断68图5—4是撤除电平激活的中断的可行的方案之一。
用P1.0接在触发器的S端作为应答线,当CPU响应中断后可使用如下两条指令:
ANLPl,#0FEHORLP1,#01H执行第一条指令使P1.0输出为“0”,其持续时间为2个机器周期,足以使D触发器置位,从而撤除中断请求。执行第二条指令使P1.0变为“1”,否则D触发器的S端始终有效,INT0端始终为“1”,无法再次申请中断。图5—4是撤除电平激活的中断的可行的方案之一。69图5-4撤除外部中断请求的电路
图5-4撤除外部中断请求的电路705.3中断处理过程
一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。中断处理流程图如图5-5所示。不同的计算机由于中断系统的硬件结构不完全相同,因而中断响应的方式有所不同。在此,仅以MCS—51单片机为例来介绍中断处理的过程。中止现行程序,保护断点转入中断服务程序入口保护现场中断服务恢复现场中断返回(RETI)
图5-5中断处理流程图中断响应
中断返回中断处理中断请求
CPU响应中断中断请求5.3中断处理过程一个完整的中断处715.3.1中断请求
中断请求是中断源(或者通过接口电路)向CPU发出请求中断的信号,要求CPU中断原来执行的程序,转去为它服务。一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向CPU发出信号,请求CPU中断。
中断请求信号可以是电平信号,也可以是脉冲信号。中断请求信号应该一直保持到CPU做出反应时为止。5.3.1中断请求
中断请求是中断源(725.3.2中断响应
中断响应是在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。在这一阶段,CPU要完成中断服务以前的所有准备工作,包括保护断点和把程序转向中断服务程序的入口地址(通常称为矢量地址)。1.CPU的中断响应条件(1)有中断源发出中断申请;(2)中断总允许位EA=1,即CPU允许所有中断源申请中断;(3)申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。5.3.2中断响应中断响应是在满足CPU的中73
有下列任何一种情况存在,中断响应都会受到阻断:(1)CPU正在执行一个同级或高一级的中断服务程序;(2)当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前,任何中断请求都得不到响应;(3)正在执行的指令是返回(RETI)指令或者对专用寄存器IE、IP进行读/写的指令,此时,在执行RETI或者读写IE或IP之后,不会马上响应中断请求。若存在上述任何一种情况,则不会马上响应中断,而把该中断请求锁存在各自的中断标志位中,在下一个机器周期再按顺序查询。
由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。有下列任何一种情况存在,中断响应都会受到阻断742.中断响应过程
MCS-51中断入口地址和中断输入引脚是一一对应的,从哪个中断输入引脚进入的中断请求,它的中断服务程序入口地址一定是某个固定值。如从INT0(P3.2)引脚进入的中断请求,转向的中断入口地址是0003H单元。2.中断响应过程MCS-5755.3.3中断处理
中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。
一般包括保护现场和处理中断源的请求及恢复现场三部分内容。一般主程序和中断服务程序都可能会用到累加器、PSW寄存器和一些其它寄存器。CPU在进入中断服务程序后,用到上述寄存器时就会破坏它原来存在寄存器中的内容,一旦中断返回,将会造成主程序的混乱。5.3.3中断处理中断处理765.3.4中断返回
中断返回是指执行完中断服务程序后,程序返回到断点(即原来程序执行时被断开的位置),继续执行原来的程序。中断返回由专门的中断返回指令“RETI”实现,该指令的功能是把断点地址取出,送回到程序计数器PC中去。特别要注意不能用子程序返回指令“RET”代替中断返回指令“RETI”。5.3.4中断返回中断返回是指执行完775.4中断应用程序举例
中断程序一般包含中断控制程序(即中断初始化程序)和中断服务程序两部分。5.4.1中断初始化程序中断初始化程序实质上就是对TCON、SCON、IE和IP寄存器的管理和控制。只要这些寄存器的相应位按照要求进行了状态预置,CPU就会按照人们的意图对中断源进行管理和控制。中断初始化程序一般不独立编写,而是包含在主程序中,根据需要进行编写。中断初始化程序需完成以下操作:
1.开中断;
2.某一中断源中断请求的允许与禁止(屏蔽);
3.确定各中断源的优先级别;
4.若是外部中断请求,则要设定触发方式是电平触发还是边沿触发。5.4中断应用程序举例中断程序78例5-1假设规定外部中断0为电平触发方式,高优先级,试写出有关的初始化程序。
解:可用两种方法完成。
①方法1,用位操作指令完成:SETBEA ;开中断允许总控制位SETBEX0 ;外中断0开中断SETBPX0 ;外中断0高优先级CLRIT0 ;电平触发②方法2,用其它指令也可完成同样功能:MOVIE,#81H ;同时置位EA和EX0ORLIP,#01H ;置位PX0ANLTCON,#0FEH ;使IT0为0
这两种方法都可以完成题目规定的要求。一般情况下,用方法1简单些。因为,在编制中断初始化程序时,只需知道控制位的名称就行了,而不必记住它们在寄存器中的确切位置。例5-1假设规定外部中断0为电平触发方式,高优先级,试写出795.4.2中断服务程序
中断服务程序是一种为中断源的特定情况要求服务的独立程序段,以中断返回指令RETI结束,中断服务完后返回到原来被中断的地方(即断点),继续执行原来的程序。
中断服务程序的固定入口:
0003H单元——外部中断INT0的中断服务程序入口
000BH单元——内部定时器/计数器T0的中断服务程序入口
0013H单元——外部中断INT1的中断服务程序入口
001BH单元——内部定时器/计数器T1的中断服务程序入口
0023H单元——串行口的中断服务程序入口
中断服务程序和子程序一样,在调用和返回时,也有一个保护断点和现场的问题。
在中断响应过程中,断点的保护主要由硬件电路自动实现。它将断点压人堆栈,再将中断服务程序的入口地址送入程序计数器PC,使程序转向中断服务程序,即为中断源的请求服务。5.4.2中断服务程序中断服务80
中断时,现场保护由中断服务程序来完成。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育社会学知识点
- 家居设计办公室装修合同
- 管理学领导职能
- 二零二五年度北京市音乐厅内部设施维修保养合同
- 诊所装修安全责任协议
- 2024涿州市职业技术教育中心工作人员招聘考试及答案
- 2024泰安市工商中等专业学校工作人员招聘考试及答案
- 2024泊头市职业技术教育中心工作人员招聘考试及答案
- 2024河北省望都县职业技术教育中心工作人员招聘考试及答案
- 新版汽车租赁合同范本
- TCI 324-2024 冠心病患者防治精准护理技术规范
- 危重症患者留置管路管理
- 重庆市高2025届高三第二次质量检测 化学试卷(含答案)
- 20S515 钢筋混凝土及砖砌排水检查井
- 酒店筹备开业流程手册范本
- DB37T 1389-2024钢箱梁顶推施工技术规范
- DL∕T 5161.5-2018 电气装置安装工程质量检验及评定规程 第5部分:电缆线路施工质量检验
- AQ 1020-2006 煤矿井下粉尘综合防治技术规范(正式版)
- 《创伤失血性休克中国急诊专家共识(2023)》解读
- 心电监护仪的使用幻灯片
- 尿源性脓毒血症诊疗指南
评论
0/150
提交评论