您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机 第5章中断系统
第五章MCS-51的中断系统5.1中断的基本概念1.中断的定义所谓“中断”,是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕(中断服务完成)后,CPU自动返回原程序的过程。2、中断的作用:采用中断技术可以提高CPU效率、解决速度矛盾、实现并行工作、分时操作、实时处理、故障处理、应付突发事件,可使多项任务共享一个资源(CPU)。3、中断与子程序的最主要区别:子程序是预先安排好的,中断是随机发生的,对CPU而言,中断事件是由外部产生,具有随机性、不可知性。4、CPU如何识别中断申请:CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。事件中断程序5、中断过程:主程序中断自动保护断点自动寻找中断源入口地址0003H000BH0013H001BH0023H转入中断服务程序自动返回主程序中断源/INT0中断T0溢出中断/INT1中断T1溢出中断串口中断响应中断请求的条件相应的中断是开放的;没有同级的中断或更高级别的中断正在处理;正在执行的指令必须执行完最后1个机器周期;若正在执行RETI,或正在访问IE或IP寄存器,则必须执行完当前指令的下一条指令。后方能响应中断。中断响应自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT11INT10T0INT010源允许总允许优先级硬件查询EA5.2MCS-51的中断系统MCS-51提供了5个中断源,2个中断优先级控制,可实现2级中断服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。P3.0P3.1P3.5P3.4P3.2P3.3IT0IT1一、内部结构图TF1TR1TF0TR0IE1IT1IE0IT088HTCON:定时器/计数器控制寄存器SCON:串行口控制寄存器EA--ESET1EX1ET0EX098HIE:中断允许寄存器SM0SM1SM2RENTB8RB8TIRIA8HIP:中断优先级寄存器---PSPT1PX1PT0PX0B8HMCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。1、定时器控制寄存器TCON(88H)TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位,在查询方式下可由软件清0)。=0:定时器未溢出;=1:定时器溢出TF1TR1TF0TR0IE1IT1IE0IT0IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置)。=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效。IE0/IE1:外部中断申请标志位(由硬件自动置位,中断响应后转向中断服务程序时,由硬件自动清0,在查询方式下可由软件清0)。=0:没有外部中断申请;=1:有外部中断申请。TR0/TR1:定时器运行启停控制位(可由用户通过软件设置)。=0:定时器停止运行;=1:定时器启动运行。二、4个特殊功能寄存器2、串行口控制寄存器SCON(98H)TI:串行口发送中断申请标志位RI:串行口接收中断申请标志位=0:没有串行口发送/接收中断申请;=1:有串行口发送/接收中断申请。注:由硬件自动置位,必须由用户在中断服务程序中用软件清0。SM0SM1SM2RENTB8RB8TIRI3、中断允许控制寄存器IE(0A8H)EAESET1EX1ET0EX0EX0:/INT0中断允许控制位EX1:/INT1中断允许控制位ET1:T0中断允许控制位ET0:T1中断允许控制位ES:串行口中断允许控制位=0:禁止中断;=1:允许中断。EA:总的中断允许控制位(总开关):=0:禁止全部中断;=1:允许中断。0INT1INT【例】若允许片内2个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。(1)用位操作指令CLRES;禁止串行口中断CLREX0;禁止外部中断0中断CLREX1;禁止外部中断1中断SETBET0;允许定时器/计数器T0中断SETBET1;允许定时器/计数器T1中断SETBEA;总中断开关位开放(2)用字节操作指令MOVIE,#8AH或MOV0A8H,#8AHEAESET1EX1ET0EX0IE0A8H4、中断优先级控制寄存器IP(0B8H)PSPT1PX1PT0PX0PX0:/INT0优先级控制位PX1:/INT1优先级控制位PT0:T0中断优先级控制位PT1:T1中断优先级控制位PS:串行口中断优先级控制位:=0:属低优先级;=1:属高优先级。【例】IP寄存器初始化,AT89S51的两个外中断请求为高优先级,其他中断请求为低优先级。(1)用位操作指令SETBPX0;外中断0设置为高优先级SETBPX1;外中断1设置为高优先级CLRPS;串行口设置为低优先级CLRPT0;定时器/计数器T0为低优先级CLRPT1;定时器/计数器T1为低优先级(2)用字节操作指令MOVIP,#05HPSPT1PX1PT0PX00B8HIP思考:1、有多个同级中断同时申请中断,CPU该优先响应哪个中断?2、低级中断正在执行中,有高级中断申请,CPU该如何响应?高低决定于出厂前由厂家固化优先级顺序/INT0中断T0溢出中断/INT1中断T1溢出中断串口中断思考:1、有多个同级中断同时申请中断,CPU该优先响应哪个中断?事件1事件2高级中断程序2低级中断程序12级中断嵌套的概念:主程序低级中断对同时发生多个中断申请时中断优先原则:(概括为四句话)不同优先级的中断同时申请:先高后低相同优先级的中断同时申请:按序执行正处理低优先级中断又接到高级别中断:高打断低正处理高优先级中断又接到低级别中断:高不理低高级中断思考:2、低级中断正在执行中,有高级中断申请,CPU如何响应?自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1ET1ESTCONIE0TF0IE1TF1TIRIRXTXT11INT10T0INT010源允许总允许优先级硬件查询EAP3.0P3.1P3.5P3.4P3.2P3.3IT0IT1例:使用外部中断0,低电平触发,外部中断1,下跳沿触发,T1中断,其中T1为高级中断,其他为低级中断,请设置。TF1TR1TF0TR0IE1IT1IE0IT088HTCON:定时器/计数器控制寄存器SCON:串行口控制寄存器EA--ESET1EX1ET0EX098HIE:中断允许寄存器SM0SM1SM2RENTB8RB8TIRIA8HIP:中断优先级寄存器---PSPT1PX1PT0PX0B8HMOVTCON,#04HMOVIE,#8DHMOVIP,#08H三、中断响应1、中断响应的条件MCS-51单片机工作时,在每个机器周期中S5P2都会去查询各个中断标志,如果有中断请求。必须满足下列条件单片机才能响应中断。①相应的中断是开放的;②没有同级的中断或更高级别的中断正在处理;③正在执行的指令必须执行完最后1个机器周期;④若正在执行RETI,或正在访问IE或IP寄存器,则必须执行完当前指令的下一条指令。后方能响应中断。2、中断响应的过程中断过程包括中断请求、中断响应、中断服务、中断返回四个阶段。中断请求:中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询,CPU查询到某一中断源后,使相应的“优先级激活触发器”置位用以阻断同级或低级中断。中断响应:在中断允许条件下响应中断。断点入栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC。这些工作都是由硬件自动完成的。中断服务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。中断返回:执行中断返回RETI指令,它将清除“优先级激活触发器”,→断点出栈→开放中断允许→返回原程序。中断响应的主要内容就是由硬件自动生成LCALLaddr16,CPU执行这条长调用指令便响应中断,转入相应的中断服务程序。addr16就是程序存储器中相应的中断服务程序的入口地址。中断服务程序入口地址:MCS-51的5个中断源的中断服务程序入口地址是固定的。中断服务程序地址入处理ORG0000HLJMPSTART;转入主程序,START为主程序地址标号ORG0003HLJMPIINT0;转外中断中断服务程序ORG000BHLJMPTT0;转定时器T0中断服务程序ORG0013HLJMPIINT1;转外中断中断服务程序ORG001BHLJMPTT1;转定时器T0中断服务程序ORG0030HSTART:……;主程序开始最短的响应时间为3个机器周期1)中断请求标志位查询占1个机器周期。2)硬件子程序调用指令LCALL的执行,需要2个机器周期。最长的响应时间为8个机器周期1)发生在CPU进行中断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,当前指令执行完最长需2个机器周期。2)接着再执行一条指令,按最长指令来算,需4个机器周期。3)硬件子程序调用指令LCALL的执行,需要2个机器周期。如果已在处理同级或更高级中断,响应时间无法计算。3、中断响应时间正常中断响应时间至少为3~8个机器周期,如果有同级或高级中断服务,将延长中断响应时间。4、中断请求的撤除为了避免中断请求标志没有及时撤除而造成的重复响应同一中断请求的错误,CPU在响应中断时必须及时将其中断请求标志位撤除。8051的5个中断源的中断请求撤除的方法是不同的。定时器溢出中断请求的撤除定时器溢出中断得到响应后,其中断请求的标志位TF0和TF1由硬件自动复位。串行口中断请求的撤除串行口中断得到响应后,其中断请求的标志位TI和RI不能由硬件自动复位,必须由用户在中断服务程序的适当位置通过软件将它们撤除。CLRTI;CLRRI;ANLSCON,#0FCH外部中断请求的撤除外部中断请求的两种触发方式(电平触发和负边沿触发)的中断请求撤除的方法是不同的。边沿触发方式:CPU在前一机器周期采到int0/int1引脚为高,后一机器周期采到为低才认为是一次中断请求,即依靠CPU两次检测int0/int1上的负边沿触发电平状态而置位外部中断标志位IE0或IE1。CPU可记忆申请、可由硬件自动撤除中断申请。电平触发方式:int0/int1引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,虽然CPU在响应中断时能由硬件自动复位IE0或IE1,但引脚上的低电平仍会使已经复位的IE0或IE1再次置位,产生重复中断的错误。两种方案解决。0INT0INT1INT1INT0INT1INT方案2:解决外部中断信号过长的软件方案方案1:撤除外部电平请求信号的硬件方案外来的低电平→反相→CP端产生上跳沿→D端的“0”输出到Q端→申请中断,中断服务返回前对P1.0送“0”→令Q端变为“1”指令如下:ORLP1,#01H(SETBP1.0)ANLP1,#0FEH(或CLRP1.0)方案1:撤除外部电平请求信号的硬件方案方案2:解决外部中断信号过长的软件方案在中断处理程序的最后、返回主程序之前,对外中断信号进判断、等待,只有当外信号消失后再返回主程序;中断服务程序中断处理程序外信号撤出?NYRETIMCS-51的中断请求的撤除方法中断源中断标志说明撤除方法INT0、INT1IE0、IE1外部边沿触发自动清除标志INT0、INT1IE0、IE1外部电平触发硬件、软件撤除T0、T1TF0、TF1定时计数器中断自动清除标志ESRI、TI串行口中断软件清除标志注:此表指使用中断服务程序来处理中断事件时的情况。如果采用查询的方法来处理事件时,都需要软件来清除标志。5.3中断服务程序设计一、中断使用设计步骤1、确定选用哪些中断源?2、硬件原理图设计
本文标题:单片机 第5章中断系统
链接地址:https://www.777doc.com/doc-3370817 .html