【精品】单片机的中断原理及应用技术精品ppt课件.ppt
单片机的中断原理及应用技术2023/3/15【可编辑】中断系统的几个概念:中断系统的几个概念:中断:中断:程程序序执执行行过过程程中中,允允许许外外部部或或内内部部事事件件通通过过硬硬件件打打断断程程序序的的执执行行,使使其其转转向向为为处处理理外外部部或或内内部部事事件件的的中中断断服服务务程程序序中中去去;完完成成中中断断服服务务程程序序后后,CPU继继续续原原来来被被打打断断的的程程序序,这样的过程称为中断响应过程,如这样的过程称为中断响应过程,如图图51所示。所示。中断源:中断源:能产生中断的外部和内部事件。能产生中断的外部和内部事件。中断优先级:中断优先级:5.1中断系统概述中断系统概述5.1.1单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题当当有有几几个个中中断断源源同同时时申申请请中中断断时时,或或者者CPU正正在在处处理理某某中中断断源源服服务务程程序序时时,又又有有另另一一中中断断源源申申请请中中断断,那那么么CPU必必须须要要确确定定优先去处理谁的能力,称为中断优先级。优先去处理谁的能力,称为中断优先级。中断嵌套:中断嵌套:优优先先级级高高的的事事件件可可以以中中断断CPU正正在在处处理理的的低低级级的的中中断断服服务务程程序序,待待完完成成了了高高级级中中断断服服务务程程序序之之后后,再再继继续续被被打打断断的的低低级中断服务程序。这是中断嵌套问题。级中断服务程序。这是中断嵌套问题。单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题单片微机的中断系统需要解决的问题主要有三点,即:单片微机的中断系统需要解决的问题主要有三点,即:当当单单片片微微机机内内部部或或外外部部有有中中断断申申请请时时,CPU能能及及时时响响应应中中断断,停停下下正正在在执执行行的的任任务务,转转去去处处理理中中断断服服务务子子程程序序,中中断服务处理后能回到原断点处继续处理原先的任务;断服务处理后能回到原断点处继续处理原先的任务;当当有有多多个个中中断断源源同同时时申申请请中中断断时时,应应能能先先响响应应优优先先级级高高的中断源,实现中断优先级的控制;的中断源,实现中断优先级的控制;当低优先级中断源正在享用中断服务时,若这时优先级当低优先级中断源正在享用中断服务时,若这时优先级比它高的中断源也申请中断,要求能停下低优先级中断源的服务比它高的中断源也申请中断,要求能停下低优先级中断源的服务程序转去执行更高优先级中断源的服务程序,实现中断嵌套,并程序转去执行更高优先级中断源的服务程序,实现中断嵌套,并能逐级正确返回原断点处。能逐级正确返回原断点处。实现实现CPU与外部设备的速度配合与外部设备的速度配合由于应用系统的许多外部设备速度较慢,可以通过中断的方由于应用系统的许多外部设备速度较慢,可以通过中断的方法来协调快速法来协调快速CPU与慢速外部设备之间的工作。与慢速外部设备之间的工作。实现实时控制实现实时控制在单片微机中,依靠中断技术能实现实时控制。实时控制要在单片微机中,依靠中断技术能实现实时控制。实时控制要求计算机能及时完成被控对象随机提出的分析和计算任务。在自动求计算机能及时完成被控对象随机提出的分析和计算任务。在自动控制系统中,要求各控制参量随机地在任何时刻可向计算机发出请控制系统中,要求各控制参量随机地在任何时刻可向计算机发出请求,求,CPUCPU必须作出快速响应、及时处理。必须作出快速响应、及时处理。5.1.2中断的主要功能中断的主要功能80C51 1中中有有五五个个中中断断源源;80C5280C52中中增增加加了了一一个个中中断断源源定定时时器器计计数数器器T2T2,即即有有六六个个中中断断源源。每每一一个个中中断断源源都都能能被被程程控控为为高高优优先先级级或或低低优优先先级级。80C5180C51五五个个中中断断源源中中包包括括二二个个外外部部中中断断源源和和三三个个内部中断源。内部中断源。二二个个外外部部中中断断源源INT0INT0和和INT1INT1,外外部部设设备备的的中中断断请请求求信信号号、掉掉电等故障信号都可以从电等故障信号都可以从INT0INT0或或INT1INT1引脚输入。引脚输入。三三个个内内部部中中断断源源为为定定时时器器/计计数数器器T0T0和和T1T1的的定定时时/计计数数谥谥出出中中断源和串行口发送或接收中断源。断源和串行口发送或接收中断源。5.2.1 5.2.1 中断源中断源80C5180C51的五个中断源可以分为三类,即:的五个中断源可以分为三类,即:1.1.外部中断外部中断外外部部中中断断是是由由外外部部信信号号引引起起的的,共共有有二二个个外外部部中中断断,它它们们的中断请求信号分别从引脚的中断请求信号分别从引脚INT0(P3.2)INT0(P3.2)和和INT1(P3.3)INT1(P3.3)上引入。上引入。外外部部中中断断请请求求有有二二种种信信号号触触发发方方式式,即即电电平平有有效效方方式式和和跳跳变有效方式,可通过设置有关控制位进行定义。变有效方式,可通过设置有关控制位进行定义。当当设设定定为为电电平平有有效效方方式式时时,若若INT0INT0或或INT1INT1引引脚脚上上采采样样到到有有效效的的低低电电平平,则则向向CPUCPU提提出出中中断断请请求求;当当设设定定为为跳跳变变有有效效方方式式时时,若若INT0INT0或或INT1INT1引脚上采样到有效负跳变,则向引脚上采样到有效负跳变,则向CPUCPU提出中断请求。提出中断请求。定时中断定时中断定定时时中中断断是是为为满满足足定定时时或或计计数数的的需需要要而而设设置置的的。当当计计数数器器发发生生计计数数溢溢出出时时,表表明明设设定定的的定定时时时时间间到到或或计计数数值值已已满满,这这时时可可以以向向CPUCPU申申请请中中断断。由由于于定定时时器器/计计数数器器在在单单片片微微机机芯芯片片内内部,所以定时中断属于内部中断。部,所以定时中断属于内部中断。80C5180C51有二个二个源,即:有二个二个源,即:TF0 TF0(P3P34 4)T0T0溢出中断。溢出中断。TF1 TF1(P3P35 5)T1T1溢出中断。溢出中断。串行中断串行中断串串行行中中断断是是为为串串行行数数据据传传送送的的需需要要而而设设置置的的。每每当当串串行行口发送或接收一组串行数据时,就产生一个中断请求。口发送或接收一组串行数据时,就产生一个中断请求。RXRX,TXTX串行中断。串行中断。当当CPUCPU响响应应中中断断时时,由由硬硬件件直直接接产产生生一一个个固固定定的的地地址址,即即矢矢量量地地址址,由由矢矢量量地地址址指指出出每每个个中中断断源源设设备备的的中中断断服服务务程程序序的的入入口口,这这种种方方法法通通常常称称为为矢矢量量中中断断。很很显显然然,每每个个中中断断源源分分别别有有自自已已的的中中断断服服务务程程序序,而而每每个个中中断断服服务务程程序序又又有有自自已已的的矢矢量量地地址址。当当CPUCPU识识别别出出某某个个中中断断源源时时,由由硬硬件件直直接接给给出出一一个个与与该该中中断断源源相相对对应应的的矢矢量量地地址址,从从而而转转入入各各自自中中断断服服务务程程序序。中中断断矢矢量地址见量地址见表表5 51 1。5.2.2 5.2.2 中断矢量中断矢量 INT0,INT1,T0 INT0,INT1,T0 及及 T1 T1的中断标志存放在的中断标志存放在 TCON TCON(定时器计(定时器计数器控制)寄存器中;串行口的中断标志存放在数器控制)寄存器中;串行口的中断标志存放在 SCON SCON(串行口控(串行口控制)寄存器中。制)寄存器中。定时器计数器控制寄存器定时器计数器控制寄存器TCONTCON字节地址为字节地址为88H88H,其格式如下,其格式如下:IT1IT1(TCONTCON2 2)、)、IT0IT0(TCONTCON0 0)分别为)分别为T0T0、T1T1的中断申请的中断申请触发方式控制位。触发方式控制位。5.3 5.3 中断的控制中断的控制5.3.15.3.1中断标志中断标志TF1TF1(TCONTCON7 7)T1T1计数溢出,由硬件置位,响应中断时由硬计数溢出,由硬件置位,响应中断时由硬件复位。不用中断时用软件清件复位。不用中断时用软件清0 0。TF0TF0(TCONTCON5 5)T0T0计计数数溢溢出出,由由硬硬件件置置位位,响响应应中中断断时时由由硬硬件复位。不用中断时用软件清件复位。不用中断时用软件清0 0。IE1IE1(TCONTCON3 3)IE1IE11 1时,外部中断时,外部中断1 1向向CPUCPU申请中断。申请中断。IE0IE0(TCONTCONl l)IE0IE01 1时,外部中断时,外部中断0 0向向CPUCPU申请中断。申请中断。串行口控制寄存器串行口控制寄存器SCONSCON字节地址为字节地址为98H98H,其格式如下:,其格式如下:低二位锁存接收中断源低二位锁存接收中断源RIRI和发送中断源和发送中断源TITI。TITI(SCONSCON1 1):串行口发送中断源。):串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清发送完一帧,由硬件置位。响应中断后,必须用软件清 0 0。RIRI(SCONSCON0 0):串行口接收中断源。):串行口接收中断源。接收完一帧,由硬件置位。响应中断后,必须用软件清接收完一帧,由硬件置位。响应中断后,必须用软件清0 0。中断允许和禁止由中断允许寄存器中断允许和禁止由中断允许寄存器IEIE控制。控制。中断允许寄存器中断允许寄存器IEIE的字节地址为的字节地址为A8HA8H,其格式如下:,其格式如下:5.3.2 5.3.2 中断允许控制中断允许控制IEIE寄存器中各位设置:为寄存器中各位设置:为0 0时,禁止中断;为时,禁止中断;为 1 1时,允许中断。时,允许中断。系统复位后系统复位后IEIE寄存器中各位均为寄存器中各位均为0 0,即此时禁止所有中断。,即此时禁止所有中断。与中断有关的控制位共与中断有关的控制位共6 6位,即:位,即:EX0(IE0 0)外部中断外部中断0 0中断允许位。中断允许位。ET0(IE1 1)定时器计数器定时器计数器T0T0中断允许位。中断允许位。EX1(IE2 2)外部中断外部中断1 1中断允许位。中断允许位。ET1(IE3 3)一)一定时器计数器定时器计数器T1T1中断允许位。中断允许位。ES(IE4 4)串行口中断允许位。串行口中断允许位。EA(IE7 7)CPU中断允许位。当中断允许位。当EA1 1,允许,允许所有中断开放,总允许后,各中断的允许或禁止由各中断源的所有中断开放,总允许后,各中断的允许或禁止由各中断源的中断允许控制位进行设置;当中断允许控制位进行设置;当EA0 0时,屏蔽所有中断。时,屏蔽所有中断。80C5180C51通过中断允许控制寄存器对中断的允许通过中断允许控制寄存器对中断的允许(开放开放)。实行二级控制,即以实行二级控制,即以EAEA位作为总控制位,以各中断源的位作为总控制位,以各中断源的中断允许位作为分控制位。只有当总控制位中断允许位作为分控制位。只有当总控制位EAEA有效时,即开放有效时,即开放中断系统,这时各分控制位才能对相应中断源分别进行开放或中断系统,这时各分控制位才能对相应中断源分别进行开放或禁止。禁止。在在80C5180C51中中有有高高、低低两两个个中中断断优优先先级级,通通过过中中断断优优先先级级寄存器寄存器IP来设定。来设定。中断优先级寄存器中断优先级寄存器IP的字节地址为的字节地址为B8HB8H,其格式如下:,其格式如下:IPIP寄寄存存器器中中各各位位设设置置:为为0 0时时,为为低低中中断断优优先先级级;为为1 1时时,设为高中断优先级。设为高中断优先级。5.3.3 5.3.3 中断优先中断优先级级系系统统复复位位后后IPIP寄寄存存器器中中各各位位均均为为0 0,即即此此时时全全部部设设定定为为低低中断优先级。中断优先级。中中断断优优先先级级控控制制,除除了了中中断断优优先先级级控控制制寄寄存存器器之之外外,还还有有二二个个不不可可寻寻址址的的优优先先级级状状态态触触发发器器,其其中中一一个个用用于于指指示示某某一一高高优优先先级级中中断断正正在在进进行行服服务务,而而屏屏蔽蔽其其它它高高优优先先级级中中断断;另另一一个个用用于于指指示示某某一一低低优优先先级级中中断断正正在在进进行行服服务务,从从而而屏屏蔽蔽其其它它低低优先级中断,但不能屏蔽高优先级中断。优先级中断,但不能屏蔽高优先级中断。在在中中断断执执行行过过程程中中,高高中中断断优优先先级级可可以以中中断断低低中中断断优优先先级级的的中中断断过过程程。但但是是若若在在中中断断服服务务程程序序中中,关关掉掉所所有有中中断断(CLREA)或关掉部分中断时除外。)或关掉部分中断时除外。当当CPU同时接收到二个不同优先级的中断请求时,先响同时接收到二个不同优先级的中断请求时,先响应高优先级的中断,如果应高优先级的中断,如果CPUCPU同时接收到的是几个同一优先级的同时接收到的是几个同一优先级的中断请求时,则由内部的硬件查询序列确定它们的优先服务次中断请求时,则由内部的硬件查询序列确定它们的优先服务次序,即在同一优先级内有一个由内部查询序列确定的笫二个优序,即在同一优先级内有一个由内部查询序列确定的笫二个优先级结构。其排列如下:先级结构。其排列如下:中断源中断源中断优先级中断优先级 外部中断外部中断0 0最高最高 定时器定时器T0T0中断中断 外部中断外部中断1 1 定时器定时器T1T1中断中断 串行口中断串行口中断 定时器定时器T2T2中断中断最低最低80C5180C51是一个二级中断系统。但是通过软件可以模仿第三是一个二级中断系统。但是通过软件可以模仿第三优先级。优先级。利用利用80C5180C51芯片内硬件可以为一些需要多于二个优先级的芯片内硬件可以为一些需要多于二个优先级的应用提供服务。只要编写一段比较简单的程序产生模拟的笫三应用提供服务。只要编写一段比较简单的程序产生模拟的笫三优先级。优先级。首先,把高于优先级首先,把高于优先级1 1的中断在的中断在IPIP寄存器中指定为优先级寄存器中指定为优先级1 1,假,假定优先级定优先级1 1的中断是可被优先级的中断是可被优先级2 2的中断所中断,则优先级的中断所中断,则优先级1 1的中的中断服务子程序如下:断服务子程序如下:PUSH IEMOVIE,MASKACALLLABEL(执行服务子程序执行服务子程序)POPIERETLABEL:RETI 只要任何一个优先级中断只要任何一个优先级中断1 1被响应,中断允许寄存器被响应,中断允许寄存器IEIE就就被重新定义以至禁止所有除优先级被重新定义以至禁止所有除优先级2 2之外的中断。那么,对之外的中断。那么,对LABEL的调用执行了中断返回指令的调用执行了中断返回指令RETI,它对正在进行中的优,它对正在进行中的优先级先级1 1的中断触发器清零。这时,任何已被允许的优先级的中断触发器清零。这时,任何已被允许的优先级1 1的中断的中断可以被服务,但没有被允许的中断优先级可以被服务,但没有被允许的中断优先级1 1的中断就不能再被允的中断就不能再被允许,而只能允许中断优先级许,而只能允许中断优先级2 2的中断。的中断。把把IE退栈,恢复原来的允许字节,然后用子程序返回指令退栈,恢复原来的允许字节,然后用子程序返回指令RET完成服务子程序完成服务子程序(不能采用不能采用RETI指令指令)。INT0,INT1INT0,INT1的的中中断断触触发发方方式式有有两两种种:电电平平触触发发方方式式,低低电电平平有有效;跳变触发方式,电平发生由高到低的跳变时触发。效;跳变触发方式,电平发生由高到低的跳变时触发。这这两两种种触触发发方方式式可可由由设设置置TCONTCON寄寄存存器器中中的的IT1IT1(TCONTCON2 2)、IT0IT0(TCONTCON0 0)中断申请触发方式控制位来选择:)中断申请触发方式控制位来选择:设置设置IT1IT1、IT0IT00 0,选择电平触发方式;,选择电平触发方式;设设置置IT1IT1、IT0IT0l l,选选择择跳跳变变触触发发方方式式,即即当当INT0,INT1INT0,INT1引引脚脚检检测测到到前前一一个个机机器器周周期期为为高高电电平平、后后一一个个机机器器周周期期为为低低电电平平时时,则则置位置位IE0IE0、IE1IE1且向且向CPUCPU申请中断。申请中断。5.3.4 5.3.4 外部中断触发方式外部中断触发方式由由于于CPUCPU每每个个机机器器周周期期采采样样INT0,INT1INT0,INT1引引脚脚信信号号一一次次,为为确确保保中中断断请请求求被被采采样样到到,外外部部中中断断源源送送INT0,INT1INT0,INT1引引脚脚的的中中断断请请求求信信号号应应至少保持一个机器周期。至少保持一个机器周期。如如果果是是跳跳变变触触发发方方式式,外外部部中中断断源源送送INT0,INT1INT0,INT1引引脚脚的的中中断断请请求求信信号号高高、低低电电平平应应至至少少各各保保持持一一个个机机器器周周期期,才才能能确确保保CPUCPU采采集到电平的跳变。集到电平的跳变。如如果果是是电电平平触触发发方方式式,则则外外部部中中断断源源送送INT0,INT1INT0,INT1引引脚脚请请求求中断的低电平有效信号,应一直保持到中断的低电平有效信号,应一直保持到CPUCPU响应中断为止。响应中断为止。CPUCPU响应中断请求,转向中断服务程序执行,在其执行中响应中断请求,转向中断服务程序执行,在其执行中断返回指令(断返回指令(RETIRETI)之前,中断请求信号必须撤除,否则将会)之前,中断请求信号必须撤除,否则将会再一次引起中断而出错。再一次引起中断而出错。中断请求撤除的方式有三种,即:中断请求撤除的方式有三种,即:11由单片微机内部硬件自动复位。由单片微机内部硬件自动复位。对对于于定定时时器器计计数数器器T0T0、T1 T1 的的溢溢出出中中断断和和采采用用跳跳变变触触发发方式的外部中断请求,在方式的外部中断请求,在CPUCPU响应中断后,由内部硬件自动清除。响应中断后,由内部硬件自动清除。5.3.5 5.3.5 中断请求的撤除中断请求的撤除中中断断标标志志TF0TF0和和TF1TF1、IE0IE0和和IE1IE1,而而自自动动撤撤除除中中断断请请求求。(硬硬件件置置位,硬件清除位,硬件清除)2 2应用软件清除相应标志。应用软件清除相应标志。对对于于串串行行接接收收发发送送中中断断请请求求和和80C5280C52中中的的定定时时器器计计数数器器T2T2的的溢溢出出和和捕捕获获中中断断请请求求,在在CPUCPU响响应应中中断断后后,必必须须在在中中断断服服务务程程序序中中应应用用软软件件清清除除RIRI、TITI、TF2TF2和和 EXF2EXF2这这些些中中断断标标志志,才才能撤除中断。能撤除中断。(硬件置位,软件清除硬件置位,软件清除)。3 3采用外加采用外加硬件结合软件清除中断请求。硬件结合软件清除中断请求。对对于于采采用用电电平平触触发发方方式式的的外外部部中中断断请请求求,中中断断标标志志的的撤撤消消是是自自动动的的,但但中中断断请请求求信信号号的的低低电电平平可可能能继继续续存存在在,在在以以后后机机器器周周期期采采样样时时又又会会把把已已清清“0”“0”的的IE0IE0、IE1IE1标标志志重重新新置置“1”“1”,再再次次申申请请中中断断。为为保保证证在在CPUCPU响响应应中中断断后后、执执行行返返回回指指令令前前,撤撤除除中中断断请请求求,必必须须考考虑虑另另外外的的措措施施,保保证证在在中中断断响响应应后后把把中中断断请请求求信信号号从从低低电电平平强强制制改改变变为为高高电电平平。可可在在系系统统中中加加入入如如图图5-3 5-3 所示电路。所示电路。从从图图5-3 5-3 中中可可看看到到,用用D D触触发发器器锁锁存存外外部部中中断断请请求求低低电电平平,并并通通过过触触发发器器输输出出端端Q Q送送或或,所所以以D D触触发发器器对对外外部部中中断断请请求求没没有有影影响响。但但在在中中断断响响应应后后,为为了了撤撤消消低低电电平平引引起起的的中中断断请请求求,可可利利用用D D触触发发器器的的直直接接置置位位端端SDSD来来实实现现。采采用用80C5180C51的的一一根根I/OI/O口口线线来来控控制制SDSD端端。只只要要在在SDSD端端输输入入一一个个负负脉脉冲冲即即可可使使D D触触发发器器置置“1”“1”,从从而而撤撤消消了了低电平的中断请求信号。低电平的中断请求信号。(硬件置位,硬、软件结合清除硬件置位,硬、软件结合清除)。所所需需负负脉脉冲冲可可以以通通过过在在中中断断服服务务程程序序中中增增加加以以下下二二条条指指令令得到:得到:ANLP1,#0FEH;Q置置1(SD为直接置位端,低电平有效为直接置位端,低电平有效)ORLP1,#01H;SD无效无效使使P1.0输输出出一一个个负负脉脉冲冲,其其持持续续时时间间为为二二个个机机器器周周期期,足足以以使使D D触触发发器器置置位位,撤撤除除低低电电平平中中断断请请求求。第第二二条条指指令令是是必必要要的的,否否则则D D触发器的触发器的Q Q端始终输出端始终输出“1”“1”,无法再接受外部中断请求。,无法再接受外部中断请求。从从中中断断请请求求发发生生直直到到被被响响应应去去执执行行中中断断服服务务程程序序,这这是是一一个个很很复复杂杂的的过过程程。而而整整个个过过程程均均在在CPUCPU的的控控制制下下有有规规律律的的进进行行。中断响应过程的时序如中断响应过程的时序如图图5 54 4所示。所示。中断采样中断采样中断采样是针对外部中断请求信号进行的,而内部中断中断采样是针对外部中断请求信号进行的,而内部中断请求都发生在芯片内部,可以直接置位请求都发生在芯片内部,可以直接置位TCONTCON或或SCONSCON中的中断请中的中断请求标志。在每个机器周期的求标志。在每个机器周期的S5P2(S5P2(笫五状态的第二节拍笫五状态的第二节拍)期间,期间,各中断标志采样相应的中断源,并置入相应标志。各中断标志采样相应的中断源,并置入相应标志。5.4 5.4 中断响应过程和响应时间中断响应过程和响应时间5.4.15.4.1中断的响应过程中断的响应过程中断查询中断查询若若查查询询到到某某中中断断标标志志为为1,则则按按优优先先级级的的高高低低进进行行处处理理,即响应中断。即响应中断。80C51的的中中断断请请求求都都汇汇集集在在TCON和和SCON二二个个特特殊殊功功能能寄寄存存器器中中。而而CPU则则在在下下一一机机器器周周期期的的S6期期间间按按优优先先级级的的顺顺序序查查询询各各中中断断标标志志。先先查查询询高高级级中中断断,再再查查询询低低级级中中断断。同同级级中中断断按按内内部部中中断断优优先先级级序序列列查查询询。如如果果查查询询到到有有中中断断标标志志位位为为“1”,则则表表明明有有中中断断请请求求发发生生,接接着着从从相相邻邻的的下下一一个个机机器器周周期期的的S1状态开始进行中断响应。状态开始进行中断响应。由由于于中中断断请请求求是是随随机机发发生生的的,CPU无无法法预预先先得得知知,因因此此中断查询要在指令执行的每个机器周期中不停地重复执行。中断查询要在指令执行的每个机器周期中不停地重复执行。中断响应中断响应响响应应中中断断后后,由由硬硬件件自自动动生生成成长长调调用用指指令令“LCALL”,其其格格式式为为LCALLaddr16,而而addr16就就是是各各中中断断源源的的中中断断矢矢量量地址地址(参见参见表表5-1)。先先将将程程序序计计数数器器PC的的内内容容压压入入堆堆栈栈进进行行保保护护,先先低低位位地地址,后高位地址,同时堆栈指针址,后高位地址,同时堆栈指针SP加加2。将将对对应应中中断断源源的的中中断断矢矢量量地地址址装装入入程程序序计计数数器器PC,去去执执行行中中断断服服务务程程序序。由由于于各各中中断断矢矢量量区区仅仅8个个字字节节,通通常常是是在在中中断断矢矢量量区区中中安安排排一一条条无无条条件件转转移移指指令令,使使程程序序执执行行转转向向在在其其它它地址中存放的中断服务程序。地址中存放的中断服务程序。中中断断服服务务程程序序由由中中断断矢矢量量地地址址开开始始执执行行,直直至至遇遇到到RETI指指令令为为止止。执执行行中中断断返返回回指指令令RETI,一一是是撤撤销销中中断断申申请请,弹弹出出断断点点地地址址进进入入PC,先先弹弹出出高高位位地地址址,后后弹弹出出低低位位地地址址,同同时时堆堆栈栈指指针针SP减减2,恢恢复复原原程程序序的的断断点点地地址址执执行行;二二是是恢恢复复中中断触发器原先状态。断触发器原先状态。中中断断响响应应是是有有条条件件的的,在在接接受受中中断断申申请请时时,如如遇遇下下列列情情况之一时,硬件生成的长调用指令况之一时,硬件生成的长调用指令“LCALL”将被封锁:将被封锁:CPU正正在在执执行行同同级级或或高高一一级级的的中中断断服服务务程程序序中中。因因为为当当一一个个中中断断被被响响应应时时,其其对对应应的的中中断断优优先先级级触触发发器器被被置置“1”,封封锁锁了了同同级级和低级中断;和低级中断;查查询询中中断断请请求求的的机机器器周周期期不不是是执执行行当当前前指指令令的的最最后后一一个个周周期期。目目的的在在于于使使当当前前指指令令执执行行完完毕毕后后,才才能能进进行行中中断断响响应应,以以确确保保当当前指令的完整执行;前指令的完整执行;当当前前正正在在执执行行RETI指指令令或或执执行行对对IE、IP的的读读写写操操作作指指令令。80C51中中断断系系统统的的特特性性规规定定,在在执执行行完完这这些些指指令令之之后后,必必须须再再继继续执行一条指令,然后才能响应中断。续执行一条指令,然后才能响应中断。可以看出,中断的执行过程与调用子程序有许多相似点,比如:可以看出,中断的执行过程与调用子程序有许多相似点,比如:都都是是中中断断当当前前正正在在执执行行的的程程序序,转转去去执执行行子子程程序序或或中中断断服务程序。服务程序。都都是是由由硬硬件件自自动动地地把把断断点点地地址址压压入入堆堆栈栈,然然后后通通过过软软件件完成现场保护。完成现场保护。执执行行完完子子程程序序或或中中断断服服务务程程序序后后,都都要要通通过过软软件件完完成成现现场场恢恢复复,并并通通过过执执行行返返回回指指令令,重重新新返返回回到到断断点点处处,继继续续往往下执行程序。下执行程序。二者都可以实现嵌套,如中断嵌套和子程序嵌套。二者都可以实现嵌套,如中断嵌套和子程序嵌套。但是中断的执行与调用子程序也有一些大的差别,比如:但是中断的执行与调用子程序也有一些大的差别,比如:中中断断请请求求信信号号可可以以由由外外部部设设备备发发出出,是是随随机机的的,比比如如故故障障产产生生的的中中断断请请求求,比比如如按按键键中中断断等等;子子程程序序调调用用却却是是由由软软件编排好的。件编排好的。中中断断响响应应后后由由固固定定的的矢矢量量地地址址转转入入中中断断服服务务程程序序,而而子程序地址由软件设定。子程序地址由软件设定。中断响应是受控的,其响应时间会受一些因素影响;中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。子程序响应时间是固定的。当单片微机应用于实时控制系统时,往往非常在意中断的当单片微机应用于实时控制系统时,往往非常在意中断的响应时间,比如出现故障后,响应时间,比如出现故障后,CPU在多长时间里能够响应和处理。在多长时间里能够响应和处理。一一般般来来说说,在在单单级级中中断断系系统统中中,中中断断的的响响应应时时间间最最短短为为3个个机器周期,最长为机器周期,最长为8个机器周期。个机器周期。5.4.2中断响应时间中断响应时间当当中中断断请请求求标标志志位位查查询询占占1个个机机器器周周期期,而而这这个个机机器器周周期期又又恰恰好好是是指指令令的的最最后后一一个个机机器器周周期期,在在这这个个机机器器周周期期结结束束后后,CPU即即响响应应中中断断,产产生生硬硬件件长长调调用用LCALL指指令令,执执行行这这条条长长调调用指令需要用指令需要2个机器周期,这样,中断响应时间为个机器周期,这样,中断响应时间为3个机器周期。个机器周期。中中断断响响应应时时间间最最长长为为8个个机机器器周周期期。如如果果CPU正正在在执执行行的的是是RETI指指令令或或访访问问IP、IE指指令令,则则等等待待时时间间不不会会多多于于2个个机机器器周周期期,而而中中断断系系统统规规定定把把这这几几条条指指令令执执行行完完必必须须再再继继续续执执行行一一条条指指令令后后才才能能响响应应中中断断,如如这这条条指指令令恰恰好好是是4个个机机器器周周期期长长的的指指令令(比比如如乘乘法法指指令令MUL或或除除法法指指令令DIV),再再加加上上执执行行长长调调用用指指令令LCALL所需所需2个机器周期,总共需要个机器周期,总共需要8个机器周期。个机器周期。如如果果中中断断请请求求被被前前面面所所列列三三个个条条件件之之一一所所阻阻止止,不不能能产产生生硬硬件件长长调调用用LCALL指指令令,那那么么所所需需的的响响应应时时间间就就更更长长些些。如如果果正正在在处处理理同同级级或或优优先先级级更更高高的的中中断断,那那么么中中断断响响应应的的时时间间还还需取决于处理中的中断服务程序的执行时间。需取决于处理中的中断服务程序的执行时间。在在80C51系系列列单单片片微微机机中中,一一般般只只有有两两个个外外部部中中断断请请求求输输入入端端INT0,INT1。当当某某个个系系统统需需要要多多个个外外部部中中断断源源时时,可可以以通通过过增增加加“OC门门”结结合合软软件件来来扩扩展展;当当定定时时器器/计计数数器器在在系系统统中中有有空空余余时时,也也可可以以通通过过对对计计数数器器计计数数长长度度的的巧巧妙妙设设置置,使使定定时时器器/计数器的外部输入脚计数器的外部输入脚(TO或或T1)成为外部中断请求输入端。成为外部中断请求输入端。5.5外部中断源的扩展外部中断源的扩展引引入入芯芯片片本本身身的的外外部部中中断断请请求求输输入入端端(INT0、INT1)就就可可很很方方便便地地扩扩展展多多个个外外部部中中断断源源。图图55就就是是占占用用一一个个80C51的的INT0(或(或INT1)扩展)扩展4个外部中断源的电路。个外部中断源的电路。4个个扩扩展展外外部部中中断断源源中中有有一一个个或或几几个个出出现现高高电电平平,反反相相器器输输出出为为0,引引起起INT0低低电电平平触触发发中中断断,所所以以这这些些中中断断源源都都是是电电平平触触发发方方式式。当当满满足足外外部部中中断断请请求求条条件件时时,则则CPU响响应应中中断断,转入转入0003H单元开始执行中断服务程序。单元开始执行中断服务程序。5.5.1采用采用“OC门门”经经“线或线或”后实现后实现在在中中断断服服务务程程序序中中,由由软软件件设设定定的的顺顺序序查查询询外外中中断断哪哪一一位位是是高高电电平平,然然后后进进入入该该中中断断处处理理程程序序。查查询询的的顺顺序序就就是是外外部部扩扩展展中中断断源源的的中中断断优优先先级级顺顺序序。外外部部中中断断源源查查询询的的流流程程图图示示于于图图56。INT0的中断服务程序如下:的中断服务程序如下:PINTO:PUSHPSW;保护现场;保护现场PUSHACCJBP1.0,LOOP1;转向中断服务程序;转向中断服务程序1JBP1.l,LOOP2;转向中断服务程序;转向中断服务程序2JBP1.2,LOOP3;转向中断服务程序;转向中断服务程序3JBP1.3,LOOP4;转向中断服务程序;转向中断服务程序4INTEND:POPACC;恢复现场;恢复现场POPPSWRETILOOP1:;中断服务程序;中断服务程序1AJMPINTENDLOOP2:;中断服务程序;中断服务程序2AJMPINTENDLOOP3:;中断服务程序;中断服务程序3AJMPINTENDLOOP4:;中断服务程序;中断服务程序4AJMPINTEND从程序中可以看出,这里定义的扩展外中断源从程序中可以看出,这里定义的扩展外中断源1的优先级最高,的优先级最高,扩展外中断源扩展外中断源4的优先级最低,所以查询的顺序从的优先级最低,所以查询的顺序从P1.0开始。开始。利用利用T0或或T1的外部事件输入引脚的外部事件输入引脚T0、T1作为边沿触发作为边沿触发的外部中断源。这时应设置定时器的外部中断源。这时应设置定时器/计数器为计数器方式,而计计数器为计数器方式,而计数常数为满刻度值。外部输入的脉冲在负跳变时有效,计数器数常数为满刻度值。外部输入的脉冲在负跳变时有效,计数器加加1后即溢出,向后即溢出,向CPU申请中断。申请中断。如果以如果以T0、T1的计数脉冲输入作为外部中断请求输入,的计数脉冲输入作为外部中断请求输入,T0、T1的中断矢量用做第三、笫四个扩展的外部中断矢量,的中断矢量用做第三、笫四个扩展的外部中断矢量,T0、T1的中断服务程序入口地址作为扩展的外部中断服务入口地址,的中断服务程序入口地址作为扩展的外部中断服务入口地址,即实现了外部中断的扩展。即实现了外部中断的扩展。当当T2用用做做波波特特率率发发生生器器时时,若若EXEN2置置1,则则T2EX端端的的信信号号产产生生负负跳跳变变时时,EXF2将将置置1,但但不不会会发发生生重重装装载载或或捕捕获获操操作。这时,作。这时,T2EX可以作为一个附加的外部中断源。可以作为一个附加的外部中断源。例例把外部中断请求信号把外部中断请求信号2连到连到T1引脚上,引脚上,T1设为方式设为方式2,即,即8位自动重装载方式,时间常数设为满刻度值位自动重装载方式,时间常数设为满刻度值FFH5.5.2通过片内定时器通过片内定时器/计数器来实现计数器来实现外部中断的服务程序入口地址存放在外部中断的服务程序入口地址存放在T1的中断矢量区中。其初始的中断矢量区中。其初始化程序段如下:化程序段如下:ORG0000HAJMP MAINORG001BH;T1中断矢量用作外部中断中断矢量用作外部中断2;的中断矢量;的中断矢量LJMP INT2ORG0030HMAIN:MOVTMOD,#60H;设;设T1计数器方式计数器方式2MOVTL1,#0FFH;置;置T1计数常数计数常数MOVTH1,#0FFHSETB EA;开中断;开中断SETB ET1;允许计数器;允许计数器1中断中断SETB TR1;启动计数;启动计数-INT2:-;外部中断;外部中断2服务程序服务程序80C51的中断系统中,允许用户单步运行程序,这样用的中断系统中,允许用户单步运行程序,这样用户可以很方便的进行程序调试。一般是设置一个单步键户可以很方便的进行程序调试。一般是设置一个单步键(STEP),用以产生脉冲,按一次,用以产生脉冲,按一次STEP键就执行一条指令,通过检查结键就执行一条指令,通过检查结果来检查每条指令执行的正确与否。果来检查每条指令执行的正确与否。80C51中断结构有一个重要特性,即执行中断返回指令中断结构有一个重要特性,即执行中断返回指令RETI后,必须至少执行一条其它指令后,才能响应新的中断。后,必须至少执行一条其它指令后,才能响应新的中断。典型方法是使用外部中断,并将其设为电平触发方式。典型方法是使用外部中断,并将其设为电平触发方式。硬件上,把按键产生的脉冲连到硬件上,把按键产生的脉冲连到INT0(P3.2)引脚,作为引脚,作为外部中断外部中断0的中断请求信号,并把电路设计为不按键时为低电平,的中断请求信号,并把电路设计为不