您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第5章 单片机的中断系统
第5章单片机的中断系统本章的主要内容MCS-51单片机中断源的种类及工作方式中断控制寄存器IE、中断优先级寄存器IP及定时器/计数器及外部中断控制寄存器TCON的使用方法MCS-51型单片机中断响应过程外部中断的结构及原理熟练编制中断服务程序5.1.1中断的概念执行主程序继续执行断点中断请求中断响应执行中断处理中断返回5.1中断系统的概述5.1.2中断的功能1.实现中断及返回2.能实现优先权排队3.能实现中断嵌套5.2.1中断源1.中断源分类五个中断源,分别是外部中断0:INT0,由P3.2提供,外部中断1:INT1,由P3.3提供,外部中断有两种信号方式,即电平方式和脉冲方式。T0溢出中断;由片内定时/计数器0提供T1溢出中断;由片内定时/计数器1提供串行口中断RI/TI;由片内串行口提供5.2中断请求0INT010110101010100TF1INT1TF1T1R0IT1IT0IEIE0EX0ET1EX1ETES中断源开放中断开放EA级寄存器中断优先0PX0PT1PX1PTPS查询硬件请求高级中断中断源中断源向量中断向量中断请求低级中断2中断请求3.中断源入口地址中断源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H5.2.2中断寄存器在中断请求被响应前,中断请求是由CPU锁存在特殊功能寄存器TCON和SCON相应中断标志位中。与中断控制有关的控制寄存器有四个:TCON----定时控制寄存器,IE----中断允许控制寄存器,IP----中断优先级控制寄存器,SCON----及串行口控制寄存器。1.中断允许控制寄存器IED7D6D5D4D3D2D1D0EAESET1EX1ET0EX00禁止,1允许2.中断优先级的设定基本原则是:(1)高优先级不能被低优先级中断;(2)低优先级可被高优先级中断。(3)任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断。(4)两个同一级的中断源同时向CPU发出中断申请,CPU通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求PS:串行口中断优先级控制位。PT1:定时计数器T1中断优先级控制位。PX1:外部中断1中断优先级控制位。PT0:定时计数器T0中断优先级控制位。PX0:外部中断0中断优先级控制位。注意:单片机复位后,IP寄存器被清0,所有中断源为低级中断。中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX03.定时控制寄存器TCOND7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT01)TCON.7TF1:T1溢出中断标志。T1被启动计数后,从初值开始加1计数,直至计满溢出由硬件使TF1=l,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可用软件查询该标志,并由软件清“0”。2)TCON.5TF0:T0溢出中断标志。其操作功能类似于TF1。3)TCON.3IE1:外部中断1标志。IE1=1表明外部中断1向CPU申请中断。4)TCON.1IE0:外部中断0标志。其操作功能与IE1类似。4.串行口控制寄存器SCOND7D6D5D4D3D2D1D0TIRI说明:SCON.1TI:串行发送中断标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。但CPU响应中断后,并不能自动清除TI标志,必须由软件清除。5.3中断处理过程中断处理过程分为三个阶段:中断响应、中断处理和中断返回。中断响应中断处理(又称中断服务)中断返回中断请求的撤除中断响应中断返回5.3.1中断处理过程1.CPU的中断响应条件①无同级或高级中断正在服务;②当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;③若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令响应。2.响应过程①置位中断优先级有效触发器,即关闭同级和低级中断:②调用入口地址,断点入栈,相当于LCALL指令;③进入中断服务程序。响应时间--从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三机器周期:1个周期(查询)+2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期。5.3.2中断处理中断处理(又称中断服务),程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。包括两部分内容:(1)保护现场,(2)处理中断源的请求。中断处理过程示意图中断源发中断请求中断响应条件是否满足?中断是否受阻?把PC断点地址压入堆栈相应中断源的中断入口地址送入PC,转向中断服务程序NYYN由硬件自动完成关中断保护现场中断服务开中断关中断恢复现场开中断中断返回断点地址由堆栈弹入PC保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。中断服务程序硬件自动完成中断处理INTT0:PUSHACCPUSHDPHPUSHDPLPUSHPSW中断源服务POPPSWPOPDPLPOPDPHPOPACCRETI保护现场恢复现场5.3.2中断返回中断返回是指中断服务完后,计算机返回到原来暂停的位置(即断点),继续执行原来的程序。中断返回由专门的中断返回指令RETI来实现。中断响应中断返回5.4外部中断的触发方式外部中断的方式选择是通过定时/计数器及外部中断控制寄存器TCON中的标志位选择的。1)TCON.2IT1:外部中断1触发方式控制位。当IT1=0,外部中断1为电平触发方式。若IT1=1,外部中断1控制为边沿触发方式。2)TCON.0IT0:外部中断0触发方式控制。5.5中断源的扩展举例:利用单片机扩展5个外部中断源,中断的优先次序为X0~X4,其中X0接到外部中断上,X1~X4接到外部中断上;单片机的P1.4~P1.7接4个发光二极管用来作输出指示;(1)当有X1~X4其中一个外部中断发生时,相应的发光二极管D1~D4点亮;(2)当X0外部中断发生时,4个发光二极管全亮。ORG0000HAJMPMAINORG0003H;中断0服务程序入口地址AJMPZHD0ORG0013H;中断1服务程序入口地址AJMPZHD1ORG0030HMAIN:MOVSP,#70H;设置堆栈指针SETBIT0;外部中断0为边沿触发方式SETBIT1;外部中断1为边沿触发方式MOVIP,#00000001B;外部中断0为MOVIE,#10000101B;开放外部中断0,1MOVA,#0FFH;关闭发光二极管MOVP1,ALOOP:AJMPLOOPZHD0:PUSHPSW;保护现场PUSHAMOVA,#0FH;4个发光二极管全亮MOVP1,APOPA;恢复现场POPPSWRETI;中断返回ZHD1:PUSHPSW;保护现场PUSHAORLP1,#0FH;读取P1口的低4位JNBP1.0,IN1;中断源查询,并转向相应的中断服务程序JNBP1.1,IN2JNBP1.2,IN3JNBP1.3,IN4FH1:POPA;恢复现场POPPSWRETIIN1:MOVA,#11101111B;中断服务程序1MOVP1,A;D1发光二极管亮AJMPFH1IN2:MOVA,#11011111B;中断服务程序2MOVP1,A;D2发光二极管亮AJMPFH1IN3:MOVA,#10111111B;中断服务程序3MOVP1,A;D3发光二极管亮AJMPFH1IN4:MOVA,#01111111B;中断服务程序4MOVP1,A;D4发光二极管亮AJMPFH1END5.6中断请求的撤除CPU响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。定时器0或1溢出:CPU在响应中断后,硬件清除了有关的中断请求标志TFO或TF1,即中断请求是自动撤除的。串行口中断:CPU响应中断后,没有用硬件清除T1、R1,要靠软件来清除相应的标志。边沿激活的外部中断:CPU在响应中断后,也是用硬件自动清除有关的中断请求标志IE0或IE1。电平触发外部中断撤除方法较复杂。因为在电平触发方式中,CPU响应中断时不会自动清除IE1或IE0标志,所以在响应中断后应立即撤除INT0或INT1引脚上的低电平。在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要硬件软件来配合解决。电平激活的外部中断源中断标志撤除撤除外部电平请求信号的方案(参见P124图5-7)MCS-51INTXP1.0DQCPSD外部设备D型触发器CLRP1.0SETBP1.0中断服务程序RETI服务程序主体硬件电路部分ANLP1,#0FEHORLP1,#01H由图可知,外部中断请求信号不直接加或引脚上,而是加在D触发器的CLK端。由于D端接地,当外部中断请求的正脉冲信号出现在CLK端时,Q端输出为0,或为低,外部中断向单片机发出中断请求。利用P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务程序中采用两条指令:ANLP1,#0FEHORLP1,#01H0INT1INT0INT1INT来撤除外部中断请求。第一条指令使P1.0为0,因P1.0与D触发器的异步置1端SD相连,Q端输出为1,从而撤除中断请求。第二条指令使P1.0变为1,SD=1,无效,Q继续受CLK控制,即新的外部中断请求信号又能向单片机申请中断。第二条指令是必不可少的,否则,将无法再次形成新的外部中断。采用定时器(T0,T1)中断,其中断请求的撤除由硬件自动完成,无须采取其它措施。5.7中断初始化中断系统初始化步骤如下:⑴开相应中断源的中断;⑵设定所用中断源的中断优先级;⑶若为外部中断,则应规定低电平还是负边沿的中断触发方式。【例1】请写出为低电平触发的中断系统初始化程序。1INT①采用位操作指令SETBEASETBEX1;开外部中断1SETBPX1;令外部中断1为高优先级CLRIT1;令外部中断1为电平触发②采用字节型指令MOVIE,#84H;开外部中断1中断ORLIP,#04H;令为外部中断1高优先级ANLTCON,#0FBH;令外部中断1为电平触发IE(A8H)EAESET1EX1ET0EX0PSPT1PX1PT0PX0IP(B8H)TIRISCON98HTF1TR1TF0TR0IE1IT1IE0IT0TCON88H5.8外部中断的系统设计应用举例:外设数据经P1口输入单片机,每准备好一个数据,外设发出选通信号,经触发器和非门至INT0。P1口P3.0QDCLKCLR选通信号+5V1INT0数据8031数据传送过程:1.选通信号有效,发中断请求;2.执行中断读取数据,同时将中断请求撤除(P3.0=0,使INT0=1)ORG0000HSTART:LJMPMAINORG0003HLJMPIINT0ORG0030H;主程序MAIN:CLRIT0;低电平触发SETBEASETBEX0;开中断MOVDPTR,#1000H...IINT0:PUSHPSW;中断处理程序PUSHACCCLRP3.0NOPNOPSETBP3.0;撤除INT0MOVA,P1;输入数据MOVX@DPTR,A;保存数据INCDPTR...POPACC;恢复现场POPPSWRETI;返回主程序
本文标题:第5章 单片机的中断系统
链接地址:https://www.777doc.com/doc-3195473 .html