《单片机原理与应用技术》课件第6章_第1页
《单片机原理与应用技术》课件第6章_第2页
《单片机原理与应用技术》课件第6章_第3页
《单片机原理与应用技术》课件第6章_第4页
《单片机原理与应用技术》课件第6章_第5页
已阅读5页,还剩52页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1中断的概念6.2中断系统的结构6.3中断控制系统6.4中断处理过程6.5外部中断触发方式的选择6.6中断程序设计第6章中断系统中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,自动转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。

中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

中断的过程如图6.1所示,它包括以下几个部分。6.1中 断 的 概 念图6.1中断过程中断源:产生中断的请求源,如一个电平的变化、一个脉冲的发生或计数器的溢出等。

中断响应:如何停止当前程序去响应中断,包括中断优先、保护断点等。

中断服务:对中断事件的处理。

中断返回:事件处理完后,返回原来被中止的程序。

计算机中的“中断”模仿了人脑处理突发事件的过程。在人们的日常生活中,“中断”现象十分普遍。例如,某人在看书,突然电话铃响,此人就会“中断”看书,并把书签夹在正看书的页码中,然后去接电话,接完电话,又从书签所做记号处继续看书。这种日常生活中处理中断的过程,几乎完全被计算机继承。“看书”可以理解成正执行当前程序;“电话铃响”可视为“突发事件”,称为“中断源”;如果同时还有“门铃响”、“水开了”等多个中断源,这就有一个处理“事件”的先后次序问题,计算机称为“中断优先级”问题;在书中用书签做记号可认为是“保护断点”;接电话是执行“中断服务程序”;接完电话继续看书为“中断返回”。中断与子程序有着本质的区别,虽然它们都是停止当前程序去执行另一程序,然后返回继续执行原程序。但是,中断是随机发生的,而子程序是预先安排好的。用前面所举的“看书接电话”的例子:“中断”方式接电话时,看书人预先并不知道看到哪一页电话铃会响;“子程序”方式接电话,则意味看书人看到某一页(如p32)时,电话铃一定响。显然,中断方式比子程序更容易处理这类突发事件。中断技术是计算机技术的一次飞跃。处理中断的能力也在一定程度上反映了计算机能力的强弱。中断技术具有以下主要优点:

(1)提高了CPU的工作效率。中断可以解决快速的CPU与慢速的外设之间的矛盾。CPU在启动外设工作后继续执行主程序,同时外设也在工作。每当外设做完一件事就向CPU发出中断申请,CPU停止它正在执行的程序,转去执行给外设布置任务的程序(一般情况是处理输入/输出数据),布置完之后CPU恢复主程序的执行,外设也继续工作。用这样的方式,CPU还可启动多个外设同时工作,大大地提高了CPU的效率。键盘、打印机、AD转换器等处理速率较慢的外部设备一般都是采用中断方式工作的。

(2)并行工作。中断可使计算机多任务同时并行工作。计算机可以分时在多任务中轮换处理各自的任务,从而在宏观上显示出并行工作。

(3)实时处理。在实时控制中,现场的各种参数、信息均随时间而变化。这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及时处理。如中断条件满足,CPU马上就会响应,进行相应的处理,从而实现实时处理。

(4)故障处理。针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。基本型MCS-51系列单片机中的中断系统属于8位单片机中功能较强的一种中断系统,它可以提供5个中断源,每个中断源有两个中断优先级别可供选择,可实现两级中断服务程序嵌套。此外,所有中断均可由软件设定为允许中断或禁止中断,也就是说,用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断请求。MCS-51单片机的中断系统结构示意图如图6.2所示。6.2中断系统的结构基本型MCS-51系列单片机的5个中断源为:

(1)外部中断0请求:由INT0(P3.2)脚输入,当此口是低电平或是负跳变时,就向CPU申请中断。

(2)外部中断1请求:由INT1(P3.3)脚输入,当此口是低电平或是负跳变时,就向CPU申请中断。

(3)定时器T0中断请求:当定时器T0产生溢出时,请求中断处理。

(4)定时器T1中断请求:当定时器T1产生溢出时,请求中断处理。

(5)串行中断请求:当接收或发送完一串行帧时,请求中断。

MCS-51系列增强型单片机如89C52有6个中断源,即增加了定时/计数器2的中断源。图6.2MCS-51中断系统结构示意图中断控制系统包括中断请求、中断允许、中断优先级等,都是通过对单片机中的4个特殊功能寄存器TCON、SCON、IE、IP中的可寻址位的操作来完成的(实际上,MCS-51系列单片机的内部功能都是通过对特殊功能寄存器的操作完成的)。下面分别介绍关于中断的4个特殊功能寄存器。6.3中断控制系统6.3.1中断请求标志寄存器(TCON、SCON)

TCON(Time/CounterControl)字节地址为88H,可位寻址,其格式如下:各位的功能如下:

● IE0:外部中断0(INT0)中断申请标志位。

● IT0:外部中断0(INT0)触发方式选择位。

IT0=0,电平触发方式,即INT0为低电平时,引起中断。要求低电平一直要保持请求到CPU中断同意为止。CPU不会自动清除中断请求标志,要采用硬件方法才能清除。

IT0=1,跳变触发方式,当CPU前一个机器周期采集到引脚为高电平,后一个机器周期采集到INT0引脚为低电平时(即从“1”“0”,负跳变),置IE0=1,由IE0申请中断。这种方式即使CPU暂时不响应申请信号,中断申请也不会丢失。IE0进入中断时被硬件清除。●TF0:定时器0溢出标志位。当定时器0计数产生溢出时,由硬件自动置TF0=1。在中断允许时,向CPU发出定时器0的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF0可作查询测试用,此时只能由软件清0。

● IE1:外部中断1(INT1)请求标志位,功能同IE0。

● IT1:外部中断1触发方式选择位,功能同IT0。

● TF1:定时器1溢出标志位,功能同TF0。

● TR1、TR0定时器1、0运行控制位将在第7章中讲解。

TCON的功能可以很方便地用位操作指令来设置,如:

SETBIT1;外部中断1选择跳变触发方式

CLRIT0;外部中断0选择电平触发方式

这2条位操作指令也可合并为1条指令:

MOV TCON,#05H;TCON=00000101B

SCON(SerialControl)为串行口控制器,字节地址为98H。其低2位TI和RI锁存串行口的发送中断标志和接收中断标志。其格式如下:各位功能如下:

● TI:串行发送中断标志。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。但CPU响应中断时并不清除TI,必须由软件

清除。 

●RI:串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。同样,CPU在响应中断时不会清除RI,必须由软件清除。

单片机系统复位后,TCON和SCON均清0,应用时要注意各位的初始状态。6.3.2中断允许寄存器(IE)

计算机中断系统有两种不同类型的中断:非屏蔽中断和可屏蔽中断。对非屏蔽中断,用户不能用软件的方法加以禁止,一旦有中断申请,CPU必须予以响应。对可屏蔽中断,用户可以通过软件方法来控制是否允许某中断源的中断,允许中断称中断开放,不允许中断称中断屏蔽。MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE,其字节地址为A8H,用于控制CPU对各中断源的开放或屏蔽。IE(InterruptEnable)寄存器的格式及各位定义如下:

EA:总中断允许控制位。EA=1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA=0,禁止所有中断。

ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。

ET1:定时器1中断允许位。ET1=1,允许定时器1中断;ET1=0,禁止定时器1中断。

EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。

ET0:定时器0中断允许位。ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断。

EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。

8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断。可以很方便地用位操作指令开放或屏蔽某些中断,如:

SETBEA ;开总中断

SETBET1 ;开T1中断

这2条位操作指令也可合并为1条指令:

MOVIE,#88H6.3.3中断优先寄存器(IP)及中断嵌套

1.中断优先级

MCS-51系列单片机基本型有5个中断源,当多个中断源同时发出中断请求时,要求单片机能确定哪个中断更紧迫,以便首先响应。为此,51系列单片机给每个中断源规定了优先级别,称为优先权。51系列单片机有两个中断优先级:高优先级和低优先级。每个中断源都可以通过编程确定为高优先级中断或低优先级中断。寄存器IP(InterruptPriority)为中断优先级寄存器,字节地址为B8H,它锁存各中断源优先级控制位,IP中的每一位均可由软件来置1或清0,1表示高优先级,0表示低优先级。其格式如下:各位定义及功能如下:

● PS:串行口中断优先控制位。PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。

● PT1:定时器T1中断优先控制位。PT1=1,设定定时器T1中断为高优先级中断;PT1=0,设定定时器T1中断为低优先级中断。

● PX1:外部中断1中断优先控制位。PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。● PT0:定时器T0中断优先控制位。PT0=1,设定定时器T0中断为高优先级中断;PT0=0,设定定时器T0中断为低优先级中断。

● PX0:外部中断0中断优先控制位。PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断。

当系统复位后,IP低5位全部清0,所有中断源均设定为低优先级中断。

如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部硬件查询逻辑,按同级优先级顺序确定先响应哪个中断请求。51系列单片机中,同级优先级由硬件形成,优先级排队的自然顺序如表6.1所示。表 6.1中断优先级同级顺序

MCS-51系列单片机中断优先级处理有三条原则:

● CPU同时接受到几个中断时,首先响应优先级别高的中断请求。

●正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

●正进行的低优先级中断服务,能被高优先级中断请求所中断。

MCS-51系列单片机内部有两个用户不可寻址的“优先级状态触发器”,由它来实现这些原则。当其中一个置1时,表示正在进行高优先级的中断,它将阻止后来所有的中断请求。当另一个触发器置1时,表示低优先级的中断正在执行,而后所有同级的中断都被阻止,但不阻止高优先级别的中断。

按MCS-51系列单片机的中断优先排队规则,大多数中断排队顺序是可以实现的,但也有少数排队顺序无法实现,如:INT0→T1→INT1→T0→PS这样的排队顺序就因优先级管理的限制而无法实现。

2.中断嵌套

当CPU正处理一个中断请求时,又出现一个优先级比它高的中断请求,CPU暂时中断当前的中断,并保留断点,响应高优先级中断,待高级中断处理结束以后,再继续进行被打断的低级中断,这个过程称为中断嵌套,其示意图如图6.3所示。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才去处理新的中断请求。图6.3中断嵌套流程图6.4.1中断响应条件

当单片机中断源有请求,并在中断允许寄存器IE相应位置1时(包括总中断EA=1和相应的中断允许位置1),在每个机器周期的S5P2期间,对所有中断源按用户设置的优先级进行顺序检测,并在S6期间找到所有有效的中断请求。如有中断请求,且满足下列三个条件,则在下一个机器周期的S1期间响应中断,否则将丢弃中断采样的结果。这个过程称为中断采集。6.4中断处理过程

(1)无同级或高级中断正在处理。

(2)现行指令执行到最后一个机器周期且已结束。

(3)若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。6.4.2中断响应过程

MCS-51系列单片机响应中断的过程较为复杂,精简叙述如下。

CPU响应中断后,由硬件自动执行如下的功能操作:

(1)中断优先级查询,对相应的优先级状态触发器置1,阻止后来的同级或低级中断请求。

(2)保护断点,即把程序计数器PC的内容压入堆栈保存。

(3)硬件清除可清除的中断请求标志位(IE0、IE1、TF0、TF1)。

(4)把被响应的中断服务程序入口地址送入PC,由硬件生成长调用指令LCALL转向相应的中断服务程序入口地址(又称中断矢量)去执行中断服务程序。各中断服务程序的入口地址见表6.2。

(5)执行完RETI指令后,返回原程序继续运行。表6.2中断入口地址中断响应过程都是由单片机硬件自动完成的,但中断服务程序则必须由用户自己编写。对上述过程还需要做一些解释:

(1) 51系列单片机CPU只是保护了“断点”,而没有保护“现场”,即没有自动保护PSW、A等寄存器或其它存储器的内容,如果需要,必须编写软件自己保护,并在中断服务后、中断返回前恢复现场。

(2)响应的中断服务程序入口地址之间只相隔8个字节空间,如果中断服务程序较长,无法容纳,可写一条跳转指令,安排另一个较大的空间容纳中断服务程序。

(3) RETI是中断服务程序结束的标记,CPU执行完这条指令后,把响应中断时所置位的优先级状态触发器清0,然后从堆栈中弹出顶上的两个字节送到程序计数器PC,CPU从原来中断处重新执行被中断的程序。

注意,不能用RET指令代替RETI指令,虽然用RET指令也能控制PC返回原来中断的地址,但RET没有清0优先级状态触发器,中断系统会认为中断仍在进行,其结果是与此同级的中断请求将不被响应。所以用户的中断复位程序的最后一条指令必须是RETI。

如要详细了解中断响应过程,需要分析中断的响应时序,如图6.4所示。图6.4中断响应时序图中M1~M5表示机器周期。若中断源在M1周期内发生中断请求,将置TCON中的对应标志位,且于S5P2期间其状态被采集。在接着的M2机器周期,执行中断查询和优先级处理。如果执行的当前指令不是RET、RETI、IE、IP,而是其它指令的最后一个机器周期且中断请求有效,CPU即响应中断。在M3、M4两个机器周期中,内部硬件自动生成长调用指令LCALL,并置位中断优先级状态触发器,将断点地址(PC的当前值)压入堆栈保护,把对应的中断服务程序入口地址送PC,同时清除该中断请求标志位。但不会自动清0串行通信的中断请求标志位RI、TI,必须通过软件才能清除它们。在M5机器周期开始执行中断服务程序。

从中断源提出中断申请,到CPU响应中断,自动转向中断矢量地址,执行中断服务程序,直到返回断点继续原程序的执行的过程,就是中断响应的全过程。6.4.3中断的撤销

MCS-51各中断源中断请求撤销的方法各不相同,分别为:

(1)定时器中断请求的撤销。对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动撤销其中断标志位TF0或TF1,无需采取其它措施。

(2)串行口中断请求的撤销。对于串行口中断,CPU在响应中断后,硬件不能自动撤销中断请求标志位TI、RI,必须在中断服务程序中用软件将其撤销。

(3)外部中断请求的撤销。外部中断可分为跳变触发型和电平触发型。对于跳变触发的外部中断0或1,CPU在响应中断后由硬件自动清除其中断标志位IE0或IE1,无需采取其它措施。

对于电平触发的外部中断,其中断请求撤除方法较复杂。首先CPU在响应中断后不会自动清除其中断标志位IE0或IE1,在中断返回前,应撤销(清除)该中断请求标志。其次,因低电平引起外部中断,所以在CPU响应中断后,应立即撤除引脚上的低电平,否则,就会引起重复中断而导致错误。由于CPU不能控制引脚的信号,因此,只有通过硬件再配合相应软件才能解决这个问题。图6.5是可行方案之一。图6.5撤除外部中断请求的的电路由图6.5可知,外部中断请求信号不直接加在(或)引脚上。当外部中断请求的低电平有效信号经反相器后送出到D触发器的CLK端产生正跳变时,端输出为0,向单片机发出中断请求。可通过一根I/O口线(如P1.0)来控制端,输入一个负脉冲(持续时间为2个机器周期),即可使置1,从而撤销中断请求。在中断服务程序中采用以下三条指令:

CLRP1.0

NOP

SETBP1.0

它会在P1.0上输出一个宽度为2个机器周期的负脉冲,使D触发器复位,=1,撤消中断请求,从而不会产生中断请求。6.4.4外部中断响应的时间

中断响应时间是指从中断请求标志位置位到CPU开始执行中断服务程序的第一条指令所需要的时间。CPU并非每时每刻对中断请求都予以响应。另外,不同的中断请求其响应时间也是不同的。以外部中断为例,CPU在每个机器周期的S5P2期间采样其输入引脚或端的电平,如果中断请求有效,则置位中断请求标志位IE0或IE1,然后在下一个机器周期再对这些值进行查询,这就意味着中断请求信号的低电平至少应维持一个机器周期。这时,如果满足中断响应条件,则CPU响应中断请求,在下一个机器周期执行一条硬件长调用指令“LACLL”,使程序转入中断地址入口。该调用指令执行时间是两个机器周期,因此,外部中断响应时间至少需要3个机器周期,这是最短的中断响应时间。如果中断请求不能满足前面所述的三个条件而被阻断,则要增加等待时间。例如一个同级或更高级的中断正在进行,则附加的等待时间取决于正在进行的中断服务程序的长度,等待时间不确定。

若没有同级或高优先级的中断正在进行,所需要的附加等待时间在3~5个机器周期之间。这是因为:

第一,如果正在执行的一条指令还没有进行到最后一个机器周期,则附加的等待时间为1~3个机器周期(因为即使是最长执行时间的指令MUL、DIV,也只有4个机器周期)。第二,如果查询周期恰逢RET、RETI或访问IE、IP指令(这些指令后面至少要再执行一条指令才能接受中断请求),而这些指令后又碰巧是MUL、DIV指令,则此时引起的附加时间不会超过5个机器周期(一个机器周期完成RET、RETI或IE、IP指令再加4个机器周期完成MUL、DIV)。

所以,对于外部中断源,在没有嵌套的单级中断情况下,响应时间为3个机器周期(最短响应外部中断时间)至8个机器周期(加最长的5个机器周期附加时间)。

中断响应的时间会给一些高要求应用造成时间差,请在实际应用中予以注意。

CPU在采集外部中断时,会检测、引脚的电平,这个电平对中断的触发方式可定义为两种:电平触发方式和跳变触发方式。

若外部中断定义为电平触发方式,则外部中断申请标志位(IE0、IE1)的状态会随CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化。这样能提高CPU对外部中断请求的响应速度。这种方式要求外部中断请求的有效低电平一直保持到请求获得响应为止,不然就会丢失;并要求在中断服务程序结束之前,及时撤销其低电平,否则中断返回之后将再次产生中断。电平触发方式适合于外部中断输入为低电平,且中断服务程序能清除外部中断请求源的情况。6.5外部中断触发方式的选择若外部中断定义为跳变触发方式,则外部中断申请标志位(IE0、IE1)的状态能被锁住。原因是:定义为跳变触发方式后,CPU在前一个机器周期采样到外部中断输入为高电平,下一个机器周期采样到为低电平时(即从“1”“0”,负跳变),则置IE0或IE1为逻辑1。这样,即便是CPU暂时不能响应,中断申请标志也不会丢失。CPU响

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论