第5章MCS-51单片机的中断第5章MCS-51单片机的中断5.1中断的概述5.2MCS-51中断系统5.3中断系统的应用第5章MCS-51单片机的中断5.1中断的概述1.中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。采用了中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时,它也提高了计算机处理故障与应变的能力。第5章MCS-51单片机的中断2.中断源是指在计算机系统中向CPU发出中断请求的来源,中断可以人为设定,也可以是为响应突发性随机事件而设置。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。第5章MCS-51单片机的中断3.中断优先级中断优先级越高,则响应优先权就越高。当CPU正在执行中断服务程序时,又有中断优先级更高的中断申请产生,这时CPU就会暂停当前的中断服务转而处理高级中断申请,待高级中断处理程序完毕再返回原中断程序断点处继续执行,这一过程称为中断嵌套。中断响应的过程(1)在每条指令结束后,系统都自动检测中断请求信号,如果有中断请求,且CPU处于开中断状态下,则响应中断。(2)保护现场,在保护现场前,一般要关中断,以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。(3)中断服务,即为相应的中断源服务。(4)恢复现场,用堆栈指令将保护在堆栈中的数据弹出来,在恢复现场前要关中断,以防止现场被破坏。在恢复现场后应及时开中断。(5)返回,此时CPU将推入到堆栈的断点地址弹回到程序计数器,从而使CPU继续执行刚才被中断的程序。第5章MCS-51单片机的中断5.2MCS-51中断系统图5.1MCS-51中断系统结构框图第5章MCS-51单片机的中断5.2.1中断源表5.18051中断源第5章MCS-51单片机的中断1.特殊功能寄存器TCON中的标志TF1TR1TF0TR0IE1IT1IE0IT0(MSB)(LSB)图5.2TCON格式第5章MCS-51单片机的中断2.特殊功能寄存器SCON图5.3SCON格式SM0SM1SM2RENTB0RB0TIRI(MSB)LSB第5章MCS-51单片机的中断5.2.2中断控制1.MCS-51单片机有5个(8052有6个)中断源,为了使每个中断源都能独立地被允许或禁止,以便用户能灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器。只有该触发器无效,它所对应的中断请求信号才能进入CPU,即此类型中断开放。否则,即使其对应的中断标志位置1,CPU也不会响应中断,即此类型中断被屏蔽了。同时CPU内还设置了一个中断允许触发器,它控制CPU能否响应中断。第5章MCS-51单片机的中断图5.4IE格式EAXET2ESET1EX1ET0EX0(MSB)(LSB)第5章MCS-51单片机的中断2.中断优先级XXPT2PSPT1PX1PT0PX0(MSB)(LSB)图5.5IP的格式第5章MCS-51单片机的中断表5.2同级内第二优先级次序第5章MCS-51单片机的中断例如,某软件中对寄存器IE、IP设置如下:MOVIE,#8FHMOVIP,#06H则此时该系统中:·CPU中断允许;·允许外部中断0、外部中断1、定时器/计数器0、定时器/计数器1提出的中断申请;·允许中断源的中断优先次序为:定时器/计数器0外部中断1外部中断0定时器/计数器1。第5章MCS-51单片机的中断5.2.3中断响应1.中断响应的条件(1)同级或高优先级的中断已在进行中;(2)当前的机器周期还不是正在执行指令的最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);(3)正在执行的是一条RETI或者访问特殊功能寄存器IE或IP的指令(换言之,在RETI或读写IE或IP之后,不会马上响应中断请求,而至少执行一条其它指令之后才会响应)。第5章MCS-51单片机的中断2.单片机一旦响应中断请求,就由硬件完成以下功能:(1)根据响应的中断源的中断优先级,使相应的优先级状态触发器置1;(2)执行硬件中断服务子程序调用,并把当前程序计数器PC的内容压入堆栈;(3)清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);(4)把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC,从而转入相应的中断服务程序。第5章MCS-51单片机的中断表5.3第5章MCS-51单片机的中断例如,现有外部中断1提出申请,且主程序中有R0、R1、DPTR、累加器A需保护,则编制程序应为:ORG0000HAJMPMAINORG0013HLJMPINT1…ORG0100HMAIN:…;…ORG1000H第5章MCS-51单片机的中断INT1:PUSHACC;PUSHDPHPUSHDPLPUSH0PUSH1POP1POP0POPDPLPOPDPHPOPACCRETI…第5章MCS-51单片机的中断编程中应注意:(1)在0000H放一条跳转到主程序的跳转指令,这是因为MCS-51单片机复位后,PC的内容变为0000H,程序从0000H开始执行,紧接着0003H是中断程序入口地址,故在此中间只能插入一条转移指令;(2)响应中断时,先自动执行一条隐指令“LCALL0013H”,而0013H至001BH(定时器1溢出中断入口地址)之间可利用的存储单元不够,故放一条无条件转移指令。(3)在中断服务程序的末尾,必须安排一条中断返回指令RETI,使程序自动返回主程序。单步操作的中断实现。把一个外部中断(设为INT0])设置为电平激活方式。其中断服务程序的末尾写上如下几条指令:JNBP3.2,$;在INT0变高前原地等待(死循环)JBP3.2,$;在INT0变低前原地等待(死循环)RETI;第5章MCS-51单片机的中断现在,若INT0保持低电平,且允许INT0中断,则CPU就进入外部中断0服务程序,由于有上述几条指令,它就会停在JNB处,原地等待。当INT0端出现一个正脉冲(由低到高,再到低)时,程序就会往下执行,执行RETI后,将返回主程序,往下执行一条指令,然后又立即响应中断,以等待INT0端出现的下一个正脉冲。这样在INT0端每出现一个正脉冲,主程序就执行一条指令,实现了单步执行的目的,要注意的是,这个正脉冲的高电平持续时间不小于3个周期,以确保CPU能采集到高电平值。第5章MCS-51单片机的中断例2多中断源。MCS-51单片机有两个外部中断输入端,当有2个以上中断源时,它的中断输入端就不够了。此时,可以采用中断与查询相结合的方法来实现。可以使每个中断源都接在同一个外部中断输入端上,同时利用输入口线作为多中断源情况下各中断源的识别线。第5章MCS-51单片机的中断图5.6多中断源第5章MCS-51单片机的中断ORG0003HLJMPINT0…INT0:PUSHPSWPUSHACCJBP0.7,DV1JBP0.6,DV2JBP0.5,DV3JBP0.4,DV4GOBACK:POPACCPOPPSWRETIDV1:…装置1…第5章MCS-51单片机的中断AJMPGOBACKDV2:…;装置2…AJMPGOBACKDV3:…;装置3…AJMPGOBACKDV4:…;装置4…AJMPGOBACK