您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机技术及应用_第五章_单片机中断系统
单片机技术与应用实践第5章单片机中断系统5.1中断概述5.2中断系统的结构与控制5.3中断处理过程5.4外部中断源的扩展5.5中断应用举例5.6实践训练单片机技术与应用实践5.1中断概述5.1.1中断的概念什么是中断?我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你在书中做好记号后放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”现象。“某人看书”就好比执行主程序;“电话铃响”就好比中断请求,产生中断信号;“暂停看书”好比中断响应,要求暂停执行主程序;“书中作记号”好比保护断点,要求当前PC入栈;“电话谈话”好比中断处理,要求执行中断服务程序;“回来继续看书”好比中断返回,要求返回主程序。这个例子实际上包含了单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回,如图5-1所示。图5-1中断响应的过程中断的概念:1.中断源生活中很多事件可以引起中断:有人按了门铃,电话铃响了,你的闹钟响了,你烧的水开了等诸如此类的事件。我们把可以引起中断的事件称为中断源。单片机中也有一些可以引起中断的事件,8051中一共有5个中断源:两个外部中断,两个计数器/定时器中断,一个串行口中断。2.中断的嵌套与优先级处理假如你正在看书,电话铃响了,同时又有人按门铃,你该先做哪样事呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的;反之,如果你正在等一个重要的客人,则可能就不会去理会电话。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之,这里存在一个优先级的问题。单片机中也是如此,也有优先级的问题。优先级的问题不仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况。比如,你正接电话,有人按门铃的情况,或者你正开门与人交谈,又有电话响了的情况。这种情况下应该怎么办呢?3.中断的响应过程当有事件产生时,进入中断之前,必须先记住现在看书的页数,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完还要回来继续看书):电话铃响就要到放电话的地方去,门铃响就要到门那边去,也就是说,不同的中断要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用这种方法,5个中断源,每个中断产生后都到一个固定的地方去寻找处理这个中断的程序,当然在去之前首先要保存下面将要执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤。(1)保护断点:即保存下一将要执行的指令的地址,就是把该地址送入堆栈。(2)寻找中断入口:根据5个不同的中断源所产生的中断查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序。(3)执行中断处理程序。(4)中断返回:执行完中断指令后,就从中断处返回到主程序继续执行。5.1.2中断的特点1.分时操作中断可以解决快速的CPU与慢速的外设之间的矛盾,使CPU和外设同时工作。CPU在启动外设工作后继续执行主程序,同时外设也在工作,每当外设做完一件事就发出中断申请,请求CPU中断它正在执行的程序,转去执行中断服务程序(一般情况是处理输入/输出数据),中断处理完之后,CPU恢复执行主程序,外设也继续工作。这样,CPU可启动多个外设同时工作,大大提高了CPU的效率。2.实时处理在实时控制中,现场的各种参数、信息均随时间和现场的变化而变化。这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及时处理,如中断条件满足,CPU马上就会响应进行相应的处理,从而实现实时处理。3.故障处理针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。5.2中断系统的结构与控制5.2.1中断系统的结构图5-2所示是MCS-51单片机的中断系统结构,它由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成。图5-2MCS-51单片机的中断系统结构5.2.2中断系统控制1.中断源MCS-51单片机提供5个中断源,其中两个为外部中断源INT0(P3.2)、INT1(P3.3),两个为片内定时器/计数器T0和T1的溢出中断源TF0(TCON.5)、F1(TCON.7),一个串行口发送与接收中断源TI(SCON.1)或RI(SCON.0)。这些中断源分别由TCON与SCON的相应位锁存。定时器/计数器控制寄存器TCON是定时器/计数器0和定时器/计数器1(T0、T1)的控制寄存器,它同时也用来锁存T0、T1的溢出中断源和外部中断源。如图5-3所示。图5-3TCON寄存器•IT0:外部中断0触发方式控制位。IT0=0,INT0(P3.2)为低电平触发方式;IT0=1,INT0(P3.2)为负跳变触发方式。•IE0:外部中断0标志位。IE0=1,外部中断0向CPU请求中断。•IT1:外部中断1触发方式控制位。•IE1:外部中断1标志位。•TF0:T0中断溢出标志位。T0溢出硬件置1,响应中断后硬件清0(在查询方式下软件清0)。•TF1:T1中断溢出标志位,功能同TF0。•TR0:T0的启停控制位。•TR1:T1的启停控制位。2.中断源的自然优先级与中断服务程序入口地址MCS-51单片机有5个独立的中断源,它们可以利用专用寄存器IP设置不同的优先级。若都被设置成同一优先级,5个中断源的自然优先级由硬件形成,排列如表5-1所示。表5-1中断自然优先级排序对于MCS-51单片机的5个独立中断源,应有相应的中断服务程序,这些程序应有固定的存放位置。好比5扇门的锁需要5把钥匙才能打开一样,搞错了就不可能打开对应的门。5个独立中断源所对应的向量地址如表5-2所示。表5-2中断源的入口地址3.中断控制1)中断允许寄存器在8051单片机中断系统中,中断的允许或禁止是由8位中断允许寄存器IE来控制的。中断允许寄存器IE(SFR地址:0A8H)各位的定义如表5-3所示。表5-3中断允许寄存器IEEA:总允许位(一级控制)。EA=0时,禁止一切中断;EA=1时,中断开放。ES:串行口中断允许位(二级控制)。ES=1时允许RI、TI引发中断,否则禁止串口中断。ET1、ET0:定时器T1、T0允许位,ET1=1或ET0=1时,允许TF1或TF0引发中断,否则禁止相应的定时器中断。EX1、EX0:外部中断1/外部中断0,允许位EX1=1或EX0=1时允许相应的外部中断,否则禁止相应的外部中断。2)中断的优先级控制寄存器中断优先级寄存器IP(SFR地址:0B8H)各位的定义如表5-4所示。表5-4中断优先级寄存器IPPS:串行口中断优先级设定位。PT1、PT0:定时器T1、T0中断优先级设定位。PX1、PX0:外部中断1、外部中断0的中断优先级设定位。以上各位若被置1,则相应的中断将被设置为高优先级中断;若被置0,则相应的中断将被设置为低优先级中断。假设将T0、外中断1设为高优先级,其他设为低优先级,求IP的值。IP的前3位没用,可任意取值,设为000,后面根据要求写即可,指令为:MOVIP,#00000110B5.3中断处理过程5.3.1中断系统的功能1.实现中断响应和中断返回(中断响应流程图如图5-4所示)图5-4中断响应流程图2.实现优先权排队通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,也可通过软件查询来实现。3.实现中断嵌套当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,高级中断处理结束以后,再继续执行被中断的中断服务程序,这个过程称为中断嵌套,其示意图如图5-5所示。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才可以处理新的中断请求。图5-5中断嵌套流程5.3.2中断处理1.中断响应中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。CPU响应中断的条件如下。有中断源发出中断请求。中断总允许位EA=1。申请中断的中断源允许。满足以上基本条件后,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。CPU正在响应同级或高优先级的中断。当前指令未执行完。正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询;否则,CPU在下一机器周期响应中断。CPU在每个机器周期的S5P2期间查询每个中断源,并设置相应的标志位,在下一机器周期S6期间按优先级顺序查询每个中断标志,如果查询到某个中断标志为1,则将在下一个机器周期S1期间按优先级进行中断处理。2.中断响应过程中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。首先,中断系统通过硬件自动生成长调用指令(LCALL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、程序状态寄存器PSW和其他寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。MCS-51单片机各中断源的入口地址由硬件事先设定,这在前面已经提过。使用时,通常在这些中断入口地址处存放一条无条件转移指令,使程序跳转到用户安排的中断服务程序的起始地址。比如,要采用定时器T1中断,其中断入口地址为001BH,中断服务程序名为CONT,因此指令形式为:ORG001BH;T1中断入口AJMPCONT;转向中断服务程序3.中断处理中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令RETI为止。一般包括两部分内容:一是保护现场;二是完成中断源请求的服务。通常,主程序和中断服务程序都会用到累加器A、程序状态寄存器PSW及其他一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序混乱,因此,在进入中断服务程序后,一般要先保护现场,然后执行中断处理程序,在中断返回之前再恢复现场。编写中断服务程序时还需注意以下几点。(1)各中断源的中断入口地址之间只相隔8B,容纳不下普通的中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,可将中断服务程序转至存储器的其他任何空间。(2)若要在执行当前中断程序时禁止其他更高优先级中断,需先用软件关闭CPU中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。(3)在保护和恢复现场时,为了不使现场数据遭到破坏或造成混乱,一般规定此时CPU不再响应新的中断请求。因此,在编写中断服务程序时,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断。同样,在恢复现场前也应先关中断,恢复之后再开中断。4.中断返回中断返回是指中断服务完成后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。特别要注意的是,不能用RET指令代替RETI指令。中断处理流程图如图5-6所示。图5-6中断处理流程图5.中断请求的撤除CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则会重复引起中断而导致错误。MCS-51单片机各中断源中断请求撤销
本文标题:单片机技术及应用_第五章_单片机中断系统
链接地址:https://www.777doc.com/doc-3599801 .html