51单片机中断原理.ppt
单元七单元七 MCS-51单片机的中断单片机的中断 一、一、中断的概述中断的概述 二、二、MCS-51中断系统中断系统三、三、中断系统的应用中断系统的应用 5.1 中中 断断 的的 概概 述述 1.中断中断 中中断断是是指指计计算算机机在在执执行行某某一一程程序序的的过过程程中中,由由于于计计算算机机系系统统内内、外外的的某某种种原原因因,而而必必须须中中止止原原程程序序的的执执行行,转转去去执执行行相相应应的的处处理理程程序序,待待处处理理结结束束之之后后,再再回回来来继继续续执执行行被被中中止止的的原原程程序序的的过过程程。采用了中断技术后的计算机采用了中断技术后的计算机,可以解决可以解决CPU与外设之间速度匹配的问题与外设之间速度匹配的问题,使计算使计算机可以及时处理系统中许多随机的参数机可以及时处理系统中许多随机的参数和信息和信息,同时同时,它也提高了计算机处理故它也提高了计算机处理故障与应变的能力。障与应变的能力。“中断中断”与与“查询查询”相比:相比:执行效率执行效率 实时性实时性 2.中断源中断源 中中断断源源是是指指在在计计算算机机系系统统中中可可以以向向CPU发发出出中中断断请请求求的的来来源源。通通常常有有I/O设设备备、实实时时控控制制系系统统中中的的随随机机参参数数和和信信息故障源等。息故障源等。3.中断优先级中断优先级 中中断断优优先先级级越越高高,则则响响应应优优先先权权就就越越高高。当当CPU正正在在执执行行中中断断服服务务程程序序时时,又又有有中中断断优优先先级级更更高高的的中中断断申申请请产产生生,这这时时CPU就就会会暂暂停停当当前前的的中中断断服服务务转转而而处处理理高高级级中中断断申申请请,待待高高级级中中断断处处理理程程序序完完毕毕再再返返回回原原中中断断程程序序断断点点处处继继续续执执行行,这这一一过过程程称为称为“中断嵌套中断嵌套”。4.中断响应的一般过程中断响应的一般过程 (1)在在每每条条指指令令结结束束后后,系系统统都都自自动动检检测测中中断断请请求求信信号号,如如果果有有中中断断请请求求,且且CPU处处于于开开中断状态下中断状态下,则响应中断。则响应中断。(2)保保护护现现场场,在在保保护护现现场场前前,一一般般要要关关中中断断,以以防防止止现现场场被被破破坏坏。保保护护现现场场一一般般是是用用堆堆栈指令将原程序中用到的寄存器推入堆栈。栈指令将原程序中用到的寄存器推入堆栈。(3)中断服务中断服务,即为相应的中断源服务。即为相应的中断源服务。(4)恢恢复复现现场场,用用堆堆栈栈指指令令将将保保护护在在堆堆栈栈中中的的数数据据弹弹出出来来,在在恢恢复复现现场场前前要要关关中中断断,以以防防止止现现场场被被破破坏坏。在在恢恢复复现现场场后后应应及及时时开开中断。中断。(5)返返回回,此此时时 CPU将将推推入入到到堆堆栈栈的的断断点点地地址址弹弹回回到到程程序序计计数数器器,从从而而使使CPU继继续续执执行刚才被中断的程序。行刚才被中断的程序。5.2 MCS-51中断系统中断系统图图5.1 MCS-51中断系统结构框图中断系统结构框图 5.2.1 中断源中断源 表表 5.1 8051 中中 断断 源源中断标志(中断标志(Flag)IE0:外部中断:外部中断0中断标志中断标志TF0:定时器:定时器/计数器计数器0中断标志中断标志IE1:外部中断:外部中断1中断标志中断标志TF1:定时器:定时器/计数器计数器1中断标志中断标志TI:串行口发送中断标志:串行口发送中断标志RI:串行口接收中断标志:串行口接收中断标志1.定时器控制寄存器定时器控制寄存器TCON的格式(的格式(88H)TF1TF1TRTR1 1TF0TF0TRTR0 0IE1IE1ITIT1 1IE0IE0ITIT0 0(MSB)(LSB)IT0:外部中断:外部中断0触发方式选择位触发方式选择位 0:低电平触发低电平触发 1:负跳变触发负跳变触发IE0:外部中断:外部中断0中断请求标志中断请求标志IT1、IE1 类似类似 IT0、IE0TR0:定时:定时/计数器计数器0运行控制位运行控制位 0:停止停止 1:运行运行TF1:定时:定时/计数器计数器0中断请求标志位中断请求标志位TR1、TF1 类似类似 TR0、TF02.特殊功能寄存器特殊功能寄存器SCON的格式(的格式(98H)SM0和和SM1:串行口工作方式选择位:串行口工作方式选择位SM2:多机通信使能位:多机通信使能位REN:接收允许位接收允许位TB8:发送数据位:发送数据位8RB8:接收数据位:接收数据位8TI:串行口发送中断请求标志串行口发送中断请求标志RI:串行口接收中断请求标志串行口接收中断请求标志 SM0SM0 SM1SM1 SM2SM2RENREN TB0TB0 RB0RB0TITIRIRIMSBLSB5.2.2 中断控制中断控制 1.中断允许控制中断允许控制 MCS-51单单片片机机有有 5个个(8052有有 6个个)中中断断源源,为为了了使使每每个个中中断断源源都都能能独独立立地地被被允允许许或或禁禁止止,以以便便用用户户能能灵灵活活使使用用,CPU内内部部在在每每个个中中断断信信号号的的通通道道中中设设置置了了一一个个中中断断允允许许触触发发器器,它它控控制制CPU能能否否响响应应中中断断。只只有有对对应应的的中中断断允允许许触触发发器器被被使使能能(置置“1”),相相应的中断才能得到相应。应的中断才能得到相应。EX0:外部中断:外部中断0允许位允许位ET0:定时器:定时器/计数器计数器0中断允许位中断允许位EX1:外部中断:外部中断1允许位允许位ET1:定时器:定时器/计数器计数器1中断允许位中断允许位ES :串行口中断允许位串行口中断允许位EA :中断总允许位:中断总允许位EA ESET1EX1ET0EX0(MSB)(LSB)中断允许控制寄存器中断允许控制寄存器IE(0A8H)2.中断优先级控制寄存器中断优先级控制寄存器IP(0B8H)PSPT1PX1PT0PX0(MSB)(LSB)PX0:外部中断:外部中断0允许位允许位PT0:定时器:定时器/计数器计数器0中断允许位中断允许位PX1:外部中断:外部中断1允许位允许位PT1:定时器:定时器/计数器计数器1中断允许位中断允许位PS :串行口中断允许位串行口中断允许位 当两个以上的中断源同时提出申请时,当两个以上的中断源同时提出申请时,CPU到底相应哪个中断呢?到底相应哪个中断呢?中断响应遵循两条规则:中断响应遵循两条规则:(1)低优先级中断可以被高优先级中断所)低优先级中断可以被高优先级中断所中断,反之不能;中断,反之不能;(2)一种中断(不论哪个优先级)一旦得)一种中断(不论哪个优先级)一旦得到响应,与它同级的中断不能再中断它。到响应,与它同级的中断不能再中断它。表表 5.2 同级内第二优先级次序同级内第二优先级次序 当同时收到处于同一优先级的多个中断当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于请求时,哪一个中断能得到响应,取决于“内部查询次序内部查询次序”,相当于在每个优先级中,相当于在每个优先级中,还有一个还有一个“内部优先级内部优先级”,如下表所示:,如下表所示:例如例如,某软件中对寄存器某软件中对寄存器IE、IP设置如下设置如下:MOV IE,8FH MOV IP,06H 则此时该系统中则此时该系统中:CPU中断允许中断允许;允允许许外外部部中中断断 0、外外部部中中断断 1、定定时时器器 /计计数数器器 0、定时器定时器 /计数器计数器1提出的中断申请提出的中断申请;允许中断源的中断优先次序为允许中断源的中断优先次序为:定时器定时器 /计数器计数器 0外部中断外部中断 1外部中断外部中断 0定时器定时器/计计数器数器 1。5.2.3 中断响应中断响应The interrupt request flags are sampled in each machine cycle.The sampled flags are polled during the following machine cycle.If one of the flags was in a set condition in the preceding cycle,the polling cycle will find it and the interrupt controller will cause the CPU to branch to the vector address of the appropriate service routine by generating an internal LCALL.中断标志检测与响应过程中断标志检测与响应过程5.2.3.1 中断响应的阻断条件中断响应的阻断条件 在在EA1且相应的中断允许位也为且相应的中断允许位也为1的情况下,的情况下,检测到的最高级的中断请求将会得到相应。但此时检测到的最高级的中断请求将会得到相应。但此时如果发生下列三种情况中的任何一种,中断响应的如果发生下列三种情况中的任何一种,中断响应的过程将被阻断:过程将被阻断:(1)同级或高优先级的中断已在进行中同级或高优先级的中断已在进行中;(2)当前的机器周期还不是正在执行指令的最后当前的机器周期还不是正在执行指令的最后一个机器周期(换言之一个机器周期(换言之,正在执行的指令完成前正在执行的指令完成前,任何中断请求都得不到响应)任何中断请求都得不到响应);(3)正在执行的是一条正在执行的是一条 RETI 或者访问特殊功能或者访问特殊功能寄存器寄存器 IE或或 IP的指令(换言之的指令(换言之,在在 RETI或读写或读写 IE或或 IP之后之后,不会马上响应中断请求不会马上响应中断请求,而至少执行而至少执行一条其它指令之后才会响应)。一条其它指令之后才会响应)。当上述阻断条件存在时,中断不能当上述阻断条件存在时,中断不能被相应,且丢弃查询结果。若阻断条件结被相应,且丢弃查询结果。若阻断条件结束时,中断标志已经消失,则这个被拖延束时,中断标志已经消失,则这个被拖延了的中断请求可能不会再得到响应。了的中断请求可能不会再得到响应。在单一外部中断的系统里(即不考虑在单一外部中断的系统里(即不考虑上述阻断条件中断的第一个条件),外部上述阻断条件中断的第一个条件),外部中断响应时间总是在中断响应时间总是在38个机器周期之间。个机器周期之间。2.单单片片机机一一旦旦响响应应中中断断请请求求,由由硬硬件件完完成成以以下下功功能能:(1)根根据据响响应应的的中中断断源源的的中中断断优优先先级级,使使相相应应的的优优先先级级状态触发器置状态触发器置 1;(2)执执行行硬硬件件中中断断服服务务子子程程序序调调用用,并并把把当当前前程程序序计计数数器器PC的内容压入堆栈的内容压入堆栈;(3)清除相应的中断请求标志位(串行口中断请求标清除相应的中断请求标志位(串行口中断请求标志志 RI和和 TI除外)除外);(4)把被响应的中断源所对应的中断服务程序的入口把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入地址(中断矢量)送入PC,从而转入相应的中断服务程序。从而转入相应的中断服务程序。中断响应过程,相当于执行了一条隐中断响应过程,相当于执行了一条隐含的调用指令(或称隐指令)含的调用指令(或称隐指令)LCALL。例如当例如当TF0被置被置1且得到中断响应时,且得到中断响应时,CPU就自动的执行一条隐指令就自动的执行一条隐指令“LCALL 000BH”。应当注意,在中断服务子程序的调用应当注意,在中断服务子程序的调用过程中,仅仅保存了过程中,仅仅保存了PC的信息,其余的现的信息,其余的现场信息(如寄存器的值等)都要由编程人场信息(如寄存器的值等)都要由编程人员通过软件来进行保护。员通过软件来进行保护。表表 5.3 中断服务程序入口地址表中断服务程序入口地址表 例例如如,现现有有外外部部中中断断 1 提提出出申申请请,且且主主程程序序中中有有R0、R1、DPTR、累累加加器器A需需保保护护,则则编编制制程程序序应为应为:ORG 0000H AJMP MAIN ORG 0013H LJMP INT1 ORG 0100H MAIN:;主程序主程序 ORG 1000H INT1:PUSH ACC ;中断服务程序中断服务程序 PUSH DPH;若有更高级中断,;若有更高级中断,PUSH DPL;应先关闭;应先关闭EA PUSH R0 ;待现场保护完成后;待现场保护完成后 PUSH R1 ;再打开;再打开EA POP R1 ;恢复现场时相同;恢复现场时相同 POP R0 POP DPL POP DPH POP ACC RETI 编程中应注意编程中应注意:(1)在在 0000H放放一一条条跳跳转转到到主主程程序序的的跳跳转转指指令令,这这是是因因为为 MCS-51单单片片机机复复位位后后,PC的的内内容容变变为为 0000H,程程序序从从 0000H 开开始始执执行行,紧紧接接着着 0003H是是中中断断程程序序入入口口地地址址,故故在在此此中中间间只只能插入一条转移指令能插入一条转移指令;(2)响响应应中中断断时时,先先自自动动执执行行一一条条隐隐指指令令“LCALL 0013H”,而而 0013H至至 001BH(定定时时器器 1 溢溢出出中中断断入入口口地地址址)之之间间可可利利用的存储单元不够用的存储单元不够,故放一条无条件转移指令。故放一条无条件转移指令。(3)在在中中断断服服务务程程序序的的末末尾尾,必必须须安安排排一一条条中中断断返返回回指指令令RETI,使程序自动返回主程序。使程序自动返回主程序。5.3 中断系统的应用中断系统的应用 例例 1 单步操作的中断实现。单步操作的中断实现。把把一一个个外外部部中中断断(设设为为INT0)设设置置为为电电平平激激活活方方式式。其中断服务程序的末尾写上如下几条指令其中断服务程序的末尾写上如下几条指令:JNB P3.2,$;在在INT0变高前,原地等待变高前,原地等待(死循环死循环)JB P3.2,$;在在 INT0变低前,原地等待变低前,原地等待(死循环死循环)RETI ;返回并执行一条指令返回并执行一条指令 现现在在,若若INT0保保持持低低电电平平,且且允允许许INT0中中断断,则则CPU就就进进入入外外部部中中断断 0 服服务务程程序序,由由于于有有上上述述几几条条指指令令,它它就就会会停停在在 JNB处处,原原地地等等待待。当当INT0 端端出出现现一一个个正正脉脉冲冲(由由低低到到高高,再再到到低低)时时,程程序序就就会会往往下下执执行行,执执行行RETI后后,将将返返回回主主程程序序,往往下下执执行行一一条条指指令令,然然后后又又立立即即响响应应中中断断,以以等等待待INT0端端出出现现的的下下一一个个正正脉脉冲冲。这这样样在在INT0端端每每出出现现一一个个正正脉脉冲冲,主主程程序序就就执执行行一一条条指指令令,实实现现了了单单步步执执行行的的目目的的,要要注注意意的的是是,这这个个正正脉脉冲冲的的高高电电平平持持续续时时间间不不小小于于 2 个个周周期期,以以确确保保 CPU能采集到高电平值。能采集到高电平值。例例 2 多中断源。多中断源。MCS-51 单单片片机机有有两两个个外外部部中中断断输输入入端端,当当有有 2 个个以以上上中中断断源源时时,它它的的中中断断输输入入端端就就不不够够了了。此此时时,可可以以将将定定时时器器/计计数数器器作作为为外外部部中中断断源源使使用用,也也可可以以采采用用中中断断与与查查询询相相结结合合的的方方法法来来实实现现。可可以以使使每每个个中中断断源源都都接接在在同同一一个个外外部部中中断断输输入入端端上上,同同时时利利用用输输入入口口线线作作为为多多中中断断源源情情况况下下各各中中断断源源的的识识别别线。线。图图 5.6 多中断源多中断源 ORG 0003H LJMP INT0INT0:PUSH PSW PUSH ACC JB P0.7,DV1 JB P0.6,DV2 JB P0.5,DV3 JB P0.4,DV4GOBACK:POP ACC POP PSW RETI DV1:;装置装置1中断服务程序中断服务程序 AJMP GOBACKDV2:;装置装置2中断服务程序中断服务程序 AJMP GOBACKDV3:;装置装置3中断服务程序中断服务程序 AJMP GOBACKDV4:;装置装置4中断服务程序中断服务程序 AJMP GOBACK