您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第4章 MCS-51单片机的中断系统
第5章MCS-51单片机的中断第4章MCS-51单片机的中断系统4.1中断的概念4.28051中断系统结构及中断控制4.3中断响应过程4.4中断响应时间4.5中断响应后中断请求的撤除4.6中断系统应用实例4.7中断程序举例第5章MCS-51单片机的中断4.1中断的概述1.•由于计算机系统内、外的某种原因引起;•在程序执行的任何时刻都可能出现;•中断响应:暂停主程序,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。•采用中断技术:解决CPU与外设之间速度匹配的问题;使计算机可以及时处理系统中许多随机的参数和信息;提高了计算机处理故障与应变的能力。第5章MCS-51单片机的中断2.中断源•引起中断的事件;•可以人为设定,也可以是为响应突发性随机事件而设置;•各种计算机允许的中断源数目不同;•通常有I/O设备、实时控制系统中的随机参数和信息故障源等。•MCS-51单片机内部有5个中断源。(INT0、T0、INT1、T1、串行口)第5章MCS-51单片机的中断3.中断优先级•自然优先级:预先规定的作为挂起的中断的优先服务的顺序;•中断优先级越高,则响应优先权就越高。•一般响应规则:先高后低;停低转高;高不理低;•中断嵌套:CPU暂停当前的中断服务转而处理高级中断申请,待高级中断处理程序完毕再返回原中断程序断点处继续执行的过程。第5章MCS-51单片机的中断4.中断响应的过程(1)中断响应条件:•请求信号;•CPU处于开中断状态;•无高级、同级中断正在服务;•现行指令执行到最后一个机器周期且已结束;•若现行指令为RET或需访问IE/IP指令时;需其后的一条指令也执行完毕。第5章MCS-51单片机的中断(2)中断响应过程保护现场保护对象:标志状态寄存器PSW、主程序和服务程序都用的寄存器、存储器中断服务,:为相应的中断源服务。恢复现场,:将被保护的数据恢复到原位置,保证主程序继续执行。返回:CPU将压入堆栈的断点地址弹回到程序计数器,使CPU继续执行刚才被中断的程序。第5章MCS-51单片机的中断4.2MCS-51中断系统结构及中断控制图5.1MCS-51中断系统结构框图P72第5章MCS-51单片机的中断4.2.1中断和中断请求标志1、中断源MCS-51单片机内部有5个中断源8051中断源表第5章MCS-51单片机的中断2.定时器/计数器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0(MSB)(LSB)图4.4TCON格式中与中断有关的位p88定时器中断88H第5章MCS-51单片机的中断TCON各位作用TFi内部定时器溢出标志溢出时,TFi=1,申请中断;进入中断后,自动清除。TRi内部定时器运行控制标志定时器运行(软件置位);复位,定时器停止工作。IEi外部中断请求标志进入中断后,自动清除。ITi外部中断触发类型控制位ITi=1,下降沿触发;ITi=0,低电平触发;靠软件置位或清除。注:i为1或第5章MCS-51单片机的中断图5.3SCON格式SM0SM1SM2RENTB8RB8TIRI(MSB)(LSB)•串行口控制与状态寄存器•字节地址98H,位地址98H~9FH3、串行口控制寄存器SCON第5章MCS-51单片机的中断SCON各位作用P89SM0SM2RENTB8RB8TI串行口发送中断标志。串行口每发送完1帧数,自动置位TI;CPU响应中断后,需由软件复位TI。RI串行口接收中断标志。串行口每接收完1帧数,自动置位TI;CPU响应中断后,需由软件复位TI。RI或TI经逻辑“或”之后作为内部中断源。第5章MCS-51单片机的中断4.2.2中断允许控制1.MCS-51单片机有5个(8052有6个)中断源•每个中断信号的通道中设置了一个中断屏蔽触发器;•CPU内设置了一个中断允许触发器,控制CPU能否响应中断。•通过对中断允许寄存器IE的设置实现控制。两级控制第5章MCS-51单片机的中断图5.4IE格式p78EAXET2ESET1EX1ET0EX0中断允许寄存器字节地址A8H;位地址:A8H~AFHEA中断总允许ETi定时器允许中断EXi外部中断允许ES串行口中断允许=1,允许中断,否则,关闭中断。第5章MCS-51单片机的中断4.2.3中断优先级控制XXPT2PSPT1PX1PT0PX0图5.5IP的格式P74字节地址0A8HPTi内部定时器优先级PXi外部中断优先级PS串行口中断优先级=1,高优先级=0,低优先级第5章MCS-51单片机的中断表4.1中断源自然优先级顺序P75IP中同级内第二优先级(自然优先级)次序第5章MCS-51单片机的中断例如,某软件中对寄存器IE、IP设置如下:MOVIE,#10001111HMOVIP,#00000110H则此时该系统中:·CPU中断允许;·允许外部中断0、定时器/计数器0、外部中断1、定时器/计数器1提出的中断申请;·允许中断源的中断优先次序为:定时器/计数器0外部中断1外部中断0定时器/计数器1第5章MCS-51单片机的中断CPU已进入中断工作环境申请中断的中断源在片内处于开放状态申请中断的外部设备处于中断开放状态中断源有请求当前指令已执行完毕4.3MCS-51中断响应过程1.中断响应的条件4.3.1中断响应第5章MCS-51单片机的中断2.中断响应受阻的原因以下各种情况之一存在,中断受阻:(1)同级或高优先级的中断已在进行中;(2)当前的机器周期还不是正在执行指令的最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);(3)正在执行的是一条RETI,或者访问特殊功能寄存器IE或IP的指令。第5章MCS-51单片机的中断4.3.2单片机一旦响应中断请求,就由硬件完成以下功能:(1)(2)当前程序计数器PC的内容压入堆栈;(3)清除相应的中断请求标志位(串行口中断请求标志RI和TI、及电平触发方式下的TEX除外);(4)转入对应的中断服务程序(中断矢量→PC)。(5)执行指令RETI后,程序返回至断点。与RET不同P71第5章MCS-51单片机的中断表4.2中断服务程序入口地址表P91第5章MCS-51单片机的中断[例]现有外部中断1提出申请,且主程序中有R0、R1、DPTR、累加器A需保护,则编制程序应为:ORG0000HAJMPMAINORG0013HLJMPINT1ORG0100HMAIN:;主程序::第5章MCS-51单片机的中断ORG1000HINT1:PUSHACC;PUSHDPHPUSHDPLPUSHR0PUSHR1︰POPR1POPR0POPDPLPOPDPHPOPACCRETI;保护现场恢复现场从子程序返回第5章MCS-51单片机的中断编程中应注意:(1)在0000H放一条跳转到主程序的跳转指令,因为:(2)响应中断时,先自动执行一条隐指令“LCALLADDR16”(转至相应的中断矢量)。(3)从中断矢量开始放一条无条件转移指令(转移目标即相应中断服务程序入口)。(4)在中断服务程序的末尾,安排一条RETI,保证程序自动返回主程序。(从堆栈中弹出断口地址→PC)第5章MCS-51单片机的中断4.4中断响应时间第5章MCS-51单片机的中断4.5中断请求的撤除(1)在中断返回之前,必须撤除请求,以免发生一次申请多次响应的现象。(2)中断请求撤除方式①对于定时器及沿触发方式外部中断,CPU响应中断后自动清除请求标志TF0、TF1、IE0与IE1;②对于串行口中断,需由用户在中断服务程序中用指令CLRTI或CLRRI清除。③对电平触发方式外部中断,需要外接电路撤除请求信号。第5章MCS-51单片机的中断说明:外部中断请求通过D触发器送至INTX;CLK发生正跳变时,申请中断;CPU利用P1.0接至S端;在中断服务程序中写指令ANLP1.0,#0FEHORLP1.0,#01H;使Q端为1,撤消中断请求第5章MCS-51单片机的中断4.6外部中断的触发方式(1)电平触发·中断源必须持续请求,直到CPU检测到为止;·在中断程序返回之前,必须撤除中断请求信号。(2)边沿触发·在INTX线上连续采样到一个机器周期的高电平,紧接着一个周期的低电平,则TCON中的IEX被置位(申请中断),等待响应;·进入中断时,IEX被自动清除。(3)中断请求的有效时间由于CPU每个机器周期对外部中断源采样一次,所以,输入的电平至少保持1个机器周期,以保证被采集到。第5章MCS-51单片机的中断4.3中断系统应用实例4.3.1单步操作的中断实现例1单步操作的中断实现。把一个外部中断(设为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单片机的中断4.3.2外部中断源扩展(1)MCS-51单片机有两个外部中断输入端。(2)需要时,可对外部中断源进行扩展:•利用片内定时器;•利用逻辑电路,扩展外部中断源。第5章MCS-51单片机的中断1、利用定时器扩展外部中断源(1)思路定时器工作于计数方式;计数初值设为FFH;用TX作为中断申请线:每当引脚TX上出现时,相应计数器加1(FFH+1),溢出,申请中断(TFX置位)。第5章MCS-51单片机的中断例:利用定时器0作为扩展外部沿触发中断源;设:T0为模式2(连续时间常数为0FFH允许T0中断初始化程序:MOVTMOD,#06H;T0为方式2,计数MOVTL0,#0FFH;时间常数为0FFHMOVTH0,#0FFHMOVIE,#10000010B;允许T0中断SETBTR0;启动T0计数:第5章MCS-51单片机的中断2、中断加查询方式利用INT0(或INT1);通过“与”的关系连接多个中断源;通过对各中断源电平的查询,确定申请中断的中断源;查询顺序决定各中断源的优先级顺序。第5章MCS-51单片机的中断图5.6多中断源多级中断P93第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第5章MCS-51单片机的中断4.4中断程序举例[例4-1]对INT0上出现的负跳变信号计数.要求:主程序为一显示程序,实时显示计数值设:R7为计数器第5章MCS-51单片机的中断源程序:AJMPMAINORG0003HAJMPIP0ORG0030HMAIN:MOVSP,#60HSETBIT0SETBEASETBEX0MOVR7,#00HLP:ALCALLDISP;调用显示子程序AJMPLPIP0:INCR7;计数器加1RETIINT0的中断矢量设置堆栈指针设置中断请求方式开总中断开INT0中断第5章MCS-51单片机的中断[例4-2]用中断控制I/O过程,实现灯光演示。要求:①每中断一次,完成一次I/O过程;②从P1.0读入开关K状态;从P1.7输出开关K的状态(控制发光二极管发光:要求P1.7为低电平,指示灯
本文标题:第4章 MCS-51单片机的中断系统
链接地址:https://www.777doc.com/doc-3678332 .html