您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第6章单片机经典课件
第六章中断系统第六章中断系统6.1中断系统的结构及工作原理6.2中断处理过程6.3外部中断扩充方法6.4中断系统的应用举例思考练习题第六章中断系统6.1中断系统的结构及工作原理6.1.180C51中断系统的结构80C51系列单片机有5个中断源,52子系列单片机有6个中断源,可分为2个中断优先级,即高优先级和低优先级。每个中断源的优先级都可以由程序来设定。80C51的中断系统如图6-1所示,它由与中断有关的特殊功能寄存器和中断顺序查询逻辑等组成。第六章中断系统图6-180C51中断系统第六章中断系统中断顺序查询逻辑亦称硬件查询逻辑,5个中断源的中断请求是否会得到响应,要受中断允许寄存器IE各位的控制,它们的优先级分别由IP各位来确定。同一优先级内的各中断源同时请求中断时,由内部的硬件查询逻辑来确定响应次序。不同的中断源有不同的中断矢量,中断源矢量地址如表6-1所示。52子系列的中断系统与80C51系列类同,只不过增加了一个T2中断源。第六章中断系统中断源矢量地址自然优先级0INT外部中断0中断T0定时器0中断1INT外部中断1中断T1定时器1中断RI或TI串行口中断0003H000BH0013H001BH0023H最高最低表6-180C51中断源的矢量地址第六章中断系统由图6-1可知,80C51的5个中断源为:2个外部输入中断源0INT(P3.2)和1INT(P3.3);3个内部中断源T0和T1的溢出中断源及串行口发送、接收中断源。其中断请求信号的产生如下:(1)0INT和1INT:外部中断0和外部中断1,其中断请求信号分别由P3.2、P3.3引脚输入。请求信号的有效电平由TCON中的IT0和IT1设置,一旦输入信号有效,则将TCON中的IE0或IE1标志位置1,可向CPU申请中断。第六章中断系统(2) TF0和TF1:定时器0和定时器1的溢出中断。当T0或T1计数器加1计数产生溢出时,则将TCON中的TF0或TF1置位,向CPU申请中断。(3) RI和TI:串行口的接收和发送中断。当串行口接收或发送完一帧数据时,将TCON中的RI或TI置位,向CPU申请中断。当某中断源的中断请求被CPU响应之后,CPU将自动把此中断源的入口地址装入PC,中断服务程序从此地址开始执行。由于相邻中断源的入口地址之间只有8个字节,因此一般在中断源的入口地址处存放一条绝对跳转指令,可以跳转到用户安排的中断服务程序的入口处。第六章中断系统6.1.2中断控制部分的功能80C51系列单片机中断控制部分由4个专用寄存器组成,它们的功能分述如下。1.中断请求标志5个中断源的外部中断和定时器中断请求标志位设置在定时器控制寄存器TCON中,其各位的定义在前面已提到过,在此仅说明一下TCON中的IT0和IT1位,它们是外部中断的触发方式设置位,决定外部中断的复位方法。外部中断的复位方式为:当IT0=0时,外部中断为电平触发方式,该方式下CPU在每个机器周期的S5P2期间对INTi引脚采样,若测得为低电平,则认为有中断请求,第六章中断系统随即使IE标志位置位;若测得为高电平,认为无中断申请或中断申请已撤消,随即清除IE标志位。在电平触发方式中,CPU响应中断后不能自动清除IE标志位,也不能由软件清除IE标志,所以在中断返回前必须撤消INTi引脚上的低电平,否则将再次中断造成出错。当IT=1时,外部中断设置为边沿触发方式,CPU在每个机器周期的S5P2期间采样INTi引脚。若在连续两个机器周期采样到先高后低的电平变化,则将IE标志位置“1”,此标志一直保持到CPU响应中断时,才由硬件自动清除。在边沿触发中,为保证CPU在两个机器周期内检测到由高到低的负跳变,输入高电平和低电平的时间起码要分别保持12个振荡周期,即要分别保持1个机器周期的时间。第六章中断系统串行口的中断请求标志由串行口控制寄存器SCON的D0和D1位来设置。RI为接收中断标志位,TI为发送中断标志位。中断申请的过程如下:(1)发送过程,CPU对发送缓冲器SBUF的一次写入操作启动发送,每发送完一帧数据,由硬件自动将TI置位,但CPU响应中断时并不能清除TI位,所以必须由软件清除。(2)接收过程,在串行口允许接收时即可串行接收数据,一帧数据接收完毕,由硬件自动将RI位置位。同样CPU响应中断时不能清除RI位,必须由软件清除。第六章中断系统2.中断开放和屏蔽80C51系列单片机中设有一个专用寄存器IE,称为中断允许寄存器,其作用是用来对各中断源进行开放或屏蔽控制。其各位的定义如下:EA:CPU中断允许。EA=1,CPU开放中断,而每个中断源是开放还是屏蔽分别由各自的允许位确定;EA=0,CPU关中断,禁止一切中断。IEAFHAEHADHACHABHAAHA9HA8HA8HEA—ET2ESET1EX1ET0EX0第六章中断系统ES:串行口的中断允许位,ES=1,允许串行口接收和发送中断;ES=0,禁止串行口中断。ET1:定时器1中断允许位。ET1=1,允许T1中断,否则禁止中断。EX1:外部中断1的中断允许位。EX1=1,允许外部中断1中断,否则禁止中断。ET0:定时器0中断允许位。ET0=1,允许T0中断,否则禁止中断。EX0:外部中断0的中断允许位。EX0=1,允许外部中断0中断,否则禁止中断。ET2:定时器2中断允许位,仅用于52子系列单片机中断。第六章中断系统ET2=1,允许定时器2中断,否则禁止中断。系统复位后,IE各位都为0,即禁止所有中断。IE寄存器可以位寻址也可以字节寻址。3.中断优先级设定80C51单片机的中断分为两个优先级,每个中断源的优先级都可以通过中断优先级寄存器IP中的相应位来设定。IP各位的定义如下:IPBFHBEHBDHBCHBBHBAHB9HB8HB8H——PT2PSPT1PX1PT0PX0第六章中断系统IP.7和IP.6为保留位。PT2(IP.5):定时器2优先级设定位,仅适用于52子系列单片机。PT2=1时,设定为高优先级,否则为低优先级。PS(IP.4):串行口优先级设定位。PS=1时,串行口设定为高优先级,否则为低优先级。PT1(IP.3):定时器1优先级设定位。PT1=1时,定时器1设定为高优先级,否则为低优先级。PX1(IP.2):外部中断1优先级设定位。PX1=1时,外部中断1设定为高优先级,否则为低优先级。PT0(IP.1):定时器0优先级设定位。PT0=1时,定时器0设定为高优先级,否则为低优先级。第六章中断系统PX0(IP.0):外部中断0优先级设定位。PX0=1时,外部中断0设定为高优先级,否则为低优先级。当系统复位后,IP各位均为0,所有中断源设置为低优先级中断。IP也是可以进行字节寻址和位寻址的特殊功能寄存器。4.优先级结构通过设置IP寄存器中的各位,把中断源的优先级分为高、低两级,它们遵循以下基本原则:(1)低优先级中断可以被高优先级中断所中断,反之则不能。第六章中断系统(2)一种中断(无论是高优先级还是低优先级)一旦得到响应,则与它同级的中断不能再中断它。为了实现这两条规则,中断系统内部有两个不可寻址的优先级激活触发器,其中一个指示某高优先级的中断正在得到服务,所有后来的中断都被阻断。另一个触发器指示某低优先级的中断正在得到服务,所有同级的中断都被阻断,但不阻断高优先级的中断。当CPU同时收到几个同一优先级的中断请求时,哪一个的请求将得到服务,取决于内部的硬件查询顺序,CPU将按自然优先级顺序确定应该响应哪个中断请求。其自然优先级由硬件形成,排列如下:第六章中断系统中断源同级自然优先级外部中断0定时器0中断外部中断1定时器1中断串行口中断(定时器2中断)最高级最低级(最低级(52子系列单片机))第六章中断系统在每个机器周期中,CPU对所有的中断源都顺序地检查一遍,这样到任一机器周期的S6状态,可找到所有已激活的中断请求,并排好了优先级。在下一个机器周期的S1状态,只要不受阻断就开始响应其中最高优先级的中断请求。若发生下列情况,则中断响应会受到阻断:(1)同级或高优先级的中断正在进行中。(2)现在的机器周期还不是执行指令的最后一个机器周期,即正在执行的指令还没有执行完前,不响应任何中断。第六章中断系统(3)正在执行的是中断返回指令RETI或是访问特殊功能寄存器IE或IP的指令。换言之,在RETI或者在读/写IE(IP)之后,不会马上响应中断请求,至少要在执行其它一条指令之后才会响应。若存在上述任一种情况,则中断查询结果就被取消。否则,在紧接着的下一个机器周期,中断查询结果变为有效。第六章中断系统6.2中断处理过程中断处理过程可分为三个阶段,即中断响应、中断处理和中断返回。各种单片机中断系统的硬件结构不同,中断响应的方式也就不同。以下说明80C51单片机的中断处理过程。6.2.1中断响应1.中断响应的条件CPU响应中断的条件有:(1)有中断源发出中断请求。(2)中断总允许位EA=1,即CPU开中断。(3)申请中断的中断源的中断允许位为1,即没有被屏蔽。第六章中断系统以上条件满足,一般CPU会响应中断,但在上一节中所述的中断受阻的情况下,本次的中断请求CPU不会响应。2.中断响应的过程如果中断响应条件满足,而且不存在中断受阻的情况,则CPU响应中断。在此情况下,CPU首先使被响应中断的相应优先级激活触发器置位,以阻断同级和低级中断。然后根据中断源的类别,在硬件的控制下内部自动形成长调用指令(LCALL),此指令将自动把断点压入堆栈,但不自动保护PSW的内容。最后将对应的中断源的地址装入程序计数器PC,使程序转向该中断的入口。80C51的中断源入口地址见表6-1。第六章中断系统3.中断响应时间CPU不是在任何情况下都对中断请求予以响应的,而不同的情况下对中断响应的时间也是不同的。现以外部中断为例,说明中断响应的最短时间。在每个机器周期的S5P2期间,0INT和1INT引脚的电平被锁存到TCON的IE0和IE1标志位,CPU在下一个机器周期才会查询这些值。这时如果满足中断响应条件,下一条要执行的指令将是一条硬件长调用指令“LCALL”,使程序转至中断源对应的矢量地址入口。硬件长调用指令本身要花费2个机器周期,这样,从外部中断请求有效到开始执行中断服务程序的第一条指令,中间要隔3个机器周期,这是最短的响应时间。第六章中断系统如果遇到中断受阻的情况,则中断响应时间会更长一些。例如,一个同级或高优先级的中断正在进行,则附加的等待时间将取决于正在进行的中断服务程序。如果正在执行的一条指令还没有到最后一个机器周期,附加的等待时间为1~3个机器周期,因为一条指令的最长执行时间为4个机器周期(MUL和DIV指令),如果正在执行的是RETI指令或者是读/写IE或IP的指令,则附加的时间在5个机器周期之内(为完成正在执行的指令,还需要1个机器周期,加上为完成下一条指令所需的最长时间为4个周期,故最长为5个机器周期)。若系统中只有一个中断源,则响应时间在3~8个机器周期之间。第六章中断系统6.2.2中断处理CPU响应中断后即转至中断服务程序入口。从中断服务程序的第一条指令开始到返回指令结束为止,这个过程称为中断处理或称中断服务。不同的中断服务的内容及要求各不相同,其处理过程也就有所区别。一般情况下,中断处理包括两部分内容:一是保护现场;二是中断服务。现场通常有PSW、工作寄存器、专用寄存器等。如果在中断服务程序中要用这些寄存器,则在进入中断服务之前应将它们的内容保护起来,称为保护现场;同时在中断结束指令RETI之前应恢复现场。中断服务是针对中断源的具体要求进行处理的。第六章中断系统用户在编写中断服务程序时应注意以下几点:(1)各中断源的入口矢量地址之间只相隔8个单元,是容纳不下一般的中断服务程序的,因而最常用的方法是在中断入口矢量地址单元处存放一条无条件转移指令,将中断服务程序转到存储器其它的空间去。(2)若要在执行当前中断程序时禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放中断。第六章中断系统(3)在保护现场和恢复现场
本文标题:第6章单片机经典课件
链接地址:https://www.777doc.com/doc-3788711 .html