




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章微型计算机中断系统当某件事件发生时,为了对该事件进行处理,CPU中止现行程序的执行,转去执行处理该事件的程序(俗称中断处理程序或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。以外设提出交换数据为例,当CPU执行主程序到第K条指令时,外设如果提出交换数据的请求,CPU响应外设交换数据的请求,转入中断状态,执行中断服务程序。在完成中断服务后恢复原来程序,即从第K+1条指令(断点处)继续执行。这样,便产生了保护现场和恢复现场的要求。7.1概述中断过程示意图中断处理流程所以当CPU转入中断处理程序时,首先应保留中断时的断点地址K+1和CPU寄存器状态(即保护现场)。一旦数据交换完毕,必须恢复现场,再返回到断点地址K+1,继续执行原程序。采用中断技术,能实现以下功能:①分时操作。计算机配上中断系统后,CPU就可以分时执行多个用户的程序和多道作业,使每个用户认为它正在独占系统。此外,CPU可控制多个外设同时工作,并可及时得到服务处理,使各个外设一直处于有效工作状态,从而大大提高主机的使用效率。②实时处理。当计算机用于实时控制时,计算机在现场测试和控制、网络通信、人机对话时都会具有强烈的实时性,中断技术能确保对实时信号的处理。实时控制系统要求计算机为它们的服务是随机发生的,且时间性很强,要求做到近乎即时处理,若没有中断系统是很难实现的。③故障处理。计算机运行过程中,往往会出现一些故障,如电源掉电、存储器读出出错、运算溢出,还有非法指令、存储器超量装载、信息校验出错等等。尽管故障出现的概率较小,但是一旦出现故障将使整个系统瘫痪。有了中断系统后,当出现上述情况时,CPU就转去执行故障处理程序而不必停机。中断系统能在故障出现时发出中断信号,调用相应的处理程序,将故障的危害降低到最低程度,并请求系统管理员排除故障。中断控制的输入和输出方式,也称中断传送方式,即当外设的输入数据准备好或接收数据的锁存器为空时,主动向CPU发出中断请求,使CPU中断原来执行的程序(主程序),转去执行为外设服务的输入或输出操作,服务完毕,CPU再继续执行原来的程序。中断传送方式中,CPU和外设(甚至多个外设)可同时工作,从而大大提高了CPU的效率和控制程序执行的实时性。中断传送时的接口电路有两个端口,即数据口和中断控制口,它们合用一个口地址。中断传送方式接口电路当输入设备数据准备好后,发出选通信号,该信号把数据存入锁存器,同时使D触发器置1,发出中断请求。若中断是开放的,则CPU接收中断请求信号,在现行指令执行完后,暂停正在执行的程序,发出中断响应信号。由外设将一个中断矢量放到数据总线上,CPU就转入中断服务程序,完成读取或输出数据,同时清除中断请求标志。中断处理完毕后,CPU返回被中断的程序继续执行。为了增强中断的灵活性,在中断传送方式的接口电路中,常常设置中断允许触发器,该触发器受CPU控制。当中断允许触发器置1,接口就可以发出中断请求了。当中断允许触发器清0,禁止向CPU提出中断请求。中断请求
此过程由欲提出中断的外部设备或内部系统提出。当外部设备需要完成某种特定的操作或者处理器系统内部出错时,需要CPU进行处理,外部设备可以向CPU提出中断申请,请求CPU进行处理。中断响应
CPU给设备发出一个中断应答信号;当外设提出的中断申请被CPU接收并认可后,首先解决的是必须关中断,其次是微处理器在处理中断、实现控制权的转移前必须把当前程序状态保存起来,最后是查找中断源,即查找提出中断请求的是外围设备还是内部系统。中断响应的条件:有中断请求信号中断请求没有被屏蔽中断是开放的CPU在现行指令执行结束时响应中断
现场保护为了确保在中断完成之后,程序能正确地返回到原来的断点处,继续执行原程序的下一条指令,必须对断点处的各种数据进行现场保护,主要是标志寄存器和CS、IP的值,我们可以将其压入堆栈中,利用堆栈来进行保护。同时还要清除中断标志IF和TF,关闭中断。执行中断服务程序
根据中断类型号N,可以在中断向量表中查出要执行中断服务程序的入口地址,从而执行相应的中断处理程序,该程序可以是用户自己编写的程序,也可以是系统提供的程序。
恢复现场在中断处理程序完成后,应当对现场进行恢复。此时可以将保存在堆栈中的内容弹出,即按照“后进先出”的原则将相应的值弹出到原来的寄存器中,从而恢复中断前的状态。中断返回任何一个中断都必须在中断服务程序的末尾并在中断服务程序指令返回之前重新开中断。微处理器的3种中断技术示意图一个完整的向量中断过程
Intel80X86系列微机有一个灵活的中断系统,可以处理256个不同的中断源,每个中断源都有相应的中断类型码(0~255)供CPU识别。中断源可以来自CPU外部,也可以来自CPU内部,可分成两大类:外部中断和软件中断。
1.外部中断硬件中断是由外部硬件产生的,又称为外部中断。8086/8088为外部设备提供了两条硬件中断信号线,即NMI和INTR,分别接收非屏蔽中断和可屏蔽中断请求信号。中断分类8086/8088中断源
(1)非屏蔽中断。由NMI引脚出现中断请求信号CPU产生的中断称为非屏蔽中断请求,它不受中断允许标志IF的限制,其中断类型码为2。当NMI引脚上出现上升沿触发时,表示非屏蔽中断请求信号有效,CPU内部会把该信号锁存起来,但要求该信号的有效电平持续2个时钟周期以上。CPU接收到非屏蔽中断请求信号后,不管当前正在做什么事,都会在执行完当前指令后立即响应中断请求而进入相应的中断处理。在实际系统中,非屏蔽中断通常用来处理系统中出现的重大事故和紧急情况,如系统掉电处理、紧急停机处理等。在IBMPC系列微机中,若系统板上存储器产生奇偶校验错或I/O通道上产生奇偶校验错或Intel8087/80287产生异常都会引起一个NMI中断。
(2)可屏蔽中断。一般外部设备提出的中断请求是从CPU的INTR引脚上引入的,所产生的中断为可屏蔽中断。INTR信号是高电平触发的,与内部中断和非屏蔽中断相比,可屏蔽中断受中断标志IF的影响。只有在IF=1的情况下,CPU才会在执行当前指令后响应可屏蔽中断请求信号,所以,即使INTR信号有效,也必须保持到当前指令执行结束。如果IF=0,即使中断源有中断请求,CPU也不会响应,也称为中断被屏蔽。IBMPC系列微机中,通常外部设备提出的中断请求信号首先通过中断控制器8259A预处理后,再决定是否向CPU的INTR引脚提出中断请求。系统中可屏蔽中断可以有一个或多个,CPU响应可屏蔽中断请求后,通过引脚送出两个负脉冲,并配合有关电路获得与中断源对应的中断类型码。
2.软件中断软件中断是CPU根据软件的某条指令或者软件对标志寄存器的某个标志位的设置而产生的,由于它与外部硬件电路完全无关,故也称为内部中断。在80X86系统中,内部中断主要有以下几种:
(1)除法出错中断——0型中断。当执行除法指令时,若发现除数为0或商超过了机器所能表达数的范围,则立即产生一个中断类型码为0的内部中断,该中断称为除法出错中断。一般该中断的服务处理都由操作系统安排。
(2)单步中断——1型中断。若TF=1,则CPU处于单步工作方式,即每执行完一条指令之后就自动产生一个中断类型码为1的内部中断,使得指令的执行成为单步执行方式。单步执行方式为系统提供了一种方便的调试手段,成为能够逐条指令地观察系统操作的一个窗口。如DEBUG中的跟踪命令,就是将标志TF置1,进而去执行一个单步中断服务程序,以跟踪程序的具体执行过程,找出程序中的问题或错误所在。需要说明的是,在所有类型的中断处理过程中,CPU会自动地把状态标志压入堆栈,然后清除TF和IF。因此当CPU进入单步处理程序时,就不再处于单步工作方式,而以正常方式工作。只有在单步处理结束后,从堆栈中弹出原来的标志,才使CPU返回到单步工作方式。(3)溢出中断——4型中断。若算法操作结果产生溢出(OF=1),则执行INTO指令后立即产生一个中断类型码为4的中断。4型中断为程序员提供了一种处理算术运算出现溢出的手段,它通常和算术指令功能配合使用。(4)指令中断——n型中断。在指令系统中,介绍了中断指令INTn,这种指令的执行也会引起内部中断,其中断类型码由指令中的n指定。该指令就称为软中断指令,通常指令的代码为两个字节代码,第一字节为操作码,第二字节为中断类型码。但是中断类型码为3的软中断指令却是单字节指令,因而它能很方便地插入到程序的任何地方,专供在程序中设置断点调试程序时使用,也称为断点中断。插入INT3指令之处便是断点,在断点中断服务程序中,可显示有关的寄存器、存储单元的内容,以便程序员分析到断点为止程序运行是否正确。
7.2中断处理过程中断处理过程包括以下几个步骤:
(1)识别中断源。当CPU响应外部设备的中断请求后,必须识别出是哪一台外设请求中断,然后再转入对应于该设备的中断服务程序。CPU识别请求中断设备的过程称为中断源的识别。利用程序来查询设备的请求中断状态,从而确认出应该服务的设备号,并转入相应设备号的中断服务程序,这种方法称为软件查询技术识别中断源。CPU利用识别中断指令,可识别出硬件设备中排队优先的设备,并取回占有优先权的设备的编码(或称设备地址),CPU根据设备地址转入相应的中断服务程序。
(2)中断优先权。一般而言,一个系统中有多个中断源。当某一时刻出现两个或多个中断源提出中断请求时,中断系统应能判别优先权最高的中断请求。在处理完优先权最高的中断请求后,再去响应其它较低优先级的中断请求。中断源的优先权是根据它们的重要性事先规定好的。
(3)中断嵌套。当CPU响应某一中断源的请求,正在执行中断处理时,若有优先权级别更高的中断源发出中断申请,则CPU要能中断正在执行的中断服务程序,响应高优先级中断。在高优先级中断处理完后再返回继续执行被中断的中断服务程序,即能实现中断处理程序的嵌套。
(4)中断与返回。当某一中断源发出中断请求时,CPU能决定是否响应该中断请求。若允许响应该中断请求,CPU必须在现行的指令执行完后,把断点处的PC(即下一条应执行的指令地址)、各个寄存器的内容和标志位的状态,压入堆栈保留下来(称为保护断点和现场)。然后转到需要处理的中断源的服务程序入口,同时清除中断请求触发器。中断处理完毕,再恢复被保留下来的各个寄存器和标志位的状态(称为恢复现场),最后恢复PC值(称为恢复断点),使CPU返回断点,继续执行主程序。
中断向量表在80X86中断系统中,无论是外部中断还是内部中断,系统都分配给每一个中断源一个确定的中断类型码,其长度为一个字节,故系统中最多允许有256个中断源(其对应类型码为0~255)。那么,80X86CPU在响应中断后,是如何转入各个中断服务程序的呢?
所谓中断向量,实际上就是中断处理子程序的入口地址。通常在内存的最低1KB(00000H~003FFH)建立一个中断向量表,分成256个组,每组占4个字节,用以存放256个中断向量。每个中断向量占4个字节,其中前2个字节存放中断处理子程序的入口地址的偏移量(IP,16位),后2个字节存放中断处理子程序入口地址的段地址(CS,16位)。按照中断类型码的序号,对应的中断向量在中断向量表中按规则顺序排列,如图所示。中断向量表图中前5个中断类型是80X86规定的专用中断,有着固定的意义和处理功能;类型码5~31为系统使用或保留;类型码32~255可以由用户自行使用。但是,在一种具体的微机系统中,可能对用户可使用的中断类型码另有规定,如PC/AT中断类型码70H~77H就已有安排,所以用户在进行系统开发和应用时应注意。中断类型码与中断向量在向量表中的位置之间的对应关系为:中断向量地址指针=4×中断类型码例如,中断类型码为20H的中断源对应的中断向量存放在0000:0080H(4×20H=80H)开始的4个单元中。中断类型号和中断服务子程序的入口地址之间的关系:如果在00080H~00083H这4个单元中存放的值分别为10H、20H、30H、40H,那么,在该系统中,20H号中断所对应的中断向量即中断处理程序的入口地址为4030H:2010H。又如,一个系统中对应于中断类型码为17H的中断处理子程序存放在1234:5670H开始的内存区域中,则对应于17H类型码的中断向量存放在0000:005CH(4×17H=5C)开始的4个字节中。所以0段的005CH~005FH这4个单元中的值分别为70H、56H、34H、12H。中断响应过程
80X86中的各种中断响应和处理过程是不相同的,其主要区别在于如何获取相应的中断类型码。
1.内部中断响应过程对于专用中断,中断类型码是自动形成的,而对于INTn指令,其类型码即为指令中给定的n。在取得了类型码后的处理过程如下:①把类型码乘4,作为中断向量表的指针。②把CPU的标志寄存器入栈,保护各个标志位。③清除IF和TF标志,屏蔽新的INTR中断和单步中断。④保存断点,即把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值。⑤从中断向量表中取中断服务程序的入口地址,分别送至CS和IP中。⑥按新的地址指针执行中断服务程序。在中断服务程序中,通常要保护现场、进行相应的中断处理、恢复现场,最后执行中断返回指令IRET。IRET的执行将使CPU按次序恢复断点处的IP和CS值以及标志寄存器,于是程序就恢复到断点处继续执行。内部中断有以下特点:①中断由CPU内部引起,中断类型码的获得与外部无关,CPU不需要执行中断响应周期去获得中断类型码。②除单步中断外,内部中断无法用软件禁止,不受中断允许标志位的影响。③内部中断没有随机性,这一点与调用子程序非常相似。
2.外部中断响应过程
(1)不可屏蔽中断响应。当CPU采样到非屏蔽中断请求时,自动提供中断类型码2,然后根据中断类型码查到中断向量表指针,其后的中断处理过程与内部中断一样。
(2)可屏蔽中断响应。当INTR信号有效时,如果中断允许标志IF=1,则CPU就会在当前指令执行完毕,响应外部的中断请求,转入中断响应周期。中断响应周期有2个,每个响应周期都由4个T状态组成。CPU在每个响应周期都从引脚上发一个负脉冲的中断响应信号。中断响应的第一个总线周期用来通知请求中断的外设,CPU准备响应中断,现在应该准备好中断类型码;在第二个总线响应周期中,要求请求中断的外设在接到第二个负脉冲以后(第二个中断响应周期的T3状态前),立即把中断类型码通过数据总线传送给CPU。CPU在T4状态的前沿采样数据总线,获取中断类型码。如图所示。其后的中断响应过程和内部中断一样。中断响应总线周期当一个可屏蔽中断被响应时CPU实际执行的总线周期有7个:①执行2个中断响应总线周期,CPU获得相应的中断类型码,将它左移2位形成中断向量表指针,存入暂存器。②执行1个写总线周期,把标志寄存器FR的内容压入堆栈。同时,置中断允许标志IF和单步标志TF为0,以禁止中断响应过程中其他可屏蔽中断的进入,同时也禁止了中断处理过程中出现单步中断。③执行2个写总线周期,把断点地址的内容压入堆栈。④执行1个读总线周期,从中断向量表中取出中断处理子程序入口地址的偏移量送到IP寄存器中。⑤执行1个读总线周期,从中断向量表中取出中断处理子程序入口地址的段基地址送到CS寄存器中。所有中断都是在当前指令结束后处理的,在80X86系统中各种中断源的优先权实际上是指被识别出来的先后。在当前指令执行完后CPU首先自动查询在指令执行过程中是否有除法出错中断、溢出中断和INTn中断发生,然后查询NMI和INTR,最后查询单步中断,先查询到的先被响应。8086/8088的中断响应过程中断服务子程序特点为”远”过程(类型为FAR)要用IRET指令返回中断服务子程序要做的工作保护现场(PUSH
reg’s)
开中断(STI)
进行中断处理
恢复现场(POP
reg’s)
中断返回(IRET)
执行中断返回指令IRETIRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后
7.3中断优先级和中断嵌套
如果系统中有多个中断源,就要考虑其优先权问题。通常,多个中断源的中断请求信号都是送到CPU同一引脚上申请中断服务的,这就要求CPU能识别出是哪些中断源在申请中断,同时比较它们的优先权,从而决定先响应哪一个中断源的中断请求。另外,当CPU正在处理中断时,也可能要响应更高级的中断请求,并屏蔽同级或较低级的中断请求,这些都需要分清各中断源的优先权。有些微机系统中,中断源的优先级可以由用户根据轻重缓急安排,一般可采用软件优先级排队和硬件优先级排队两种方法。
1.软件优先级排队软件优先级排队是指各个中断源的优先权由软件安排,与硬件电路关系不大。图所示电路是一种配合软件优先级排队使用的电路,图中各中断源的优先权不是由硬件电路安排,而是由软件安排的。图中若干个外设的中断请求信号相“或”后,送至CPU的中断接收引脚(如INTR)。这样,只要任一外设有中断请求,CPU便可响应中断。在中断服务子程序前可安排一段优先级的查询程序,即CPU读取外设中断请求状态端口,然后根据预先确定的优先级级别逐位检测各外设的状态,若有中断请求就转到相应的处理程序入口。软件优先级排队电路软件优先权查询流程图查询的顺序反映了各个中断源的优先权的高低。显然,最先查询的外设,其优先权级别最高。这种方法的优点是节省硬件,优先权安排灵活;缺点是查询需要耗费时间,在中断源较多的情况下,查询程序较长,可能影响中断响应的实时性。
2.硬件优先级排队硬件优先级排队是指利用专门的硬件电路或中断控制器对系统中各中断源的优先权进行安排。
(1)硬件优先级排队电路。链式优先权排队电路是一种简单的中断优先权硬件排队电路,如下图所示。采用该方法时,每个外设对应的接口上连接一个逻辑电路,这些逻辑电路构成一个链,称为菊花链,由该菊花链来控制中断响应信号的通路。链式优先权排队电路
(a)菊花链;(b)菊花链逻辑电路从图中可以看到,当一个外设有中断请求时,CPU如果允许中断,则会发出信号。如果链条前端的外设没有发出中断请求信号,那么这级中断逻辑电路就会允许中断响应信号原封不动地往后传递,一直传到发出中断请求的外设;如果某一外设发出了中断请求,那么本级的中断逻辑电路就对后面的中断逻辑电路实现阻塞,使信号不再传到后面的外设。因而菊花链电路各个外设的中断优先权就由其在链中的位置决定,处于菊花链前端的比处于后端的优先级高。当某一外设收到中断响应信号后,就控制有关电路送出中断类型码,从而执行相应的中断服务程序。当多个外设同时发出中断请求信号时,根据电路分析可知,处于链头的外设先得到中断响应,而排在菊花链中较后位置的外设就收不到中断响应信号,因而暂时不会被处理。若CPU正执行某个中断处理子程序,又有级别较高的外设提出中断请求,由于菊花链电路中级别低的外设不能封锁级别高的外设得到中断响应信号,故可响应该中断请求,从而发生中断嵌套现象。用硬件编码器和比较器组成的优先权排队电路
3位二进制优先编码器在优先编码器中优先级别高的信号排斥级别低的,即具有单方面排斥的特性。设I7的优先级别最高,I6次之,依此类推,I0最低。真值表4位数值比较器
(2)矢量中断优先级
采用可编程的矢量中断控制器是当前微型计算机系统中解决中断优先权管理的常用方法。通常,中断控制器包括下列部件:中断优先权管理电路、中断请求锁存器、中断类型寄存器、当前中断服务寄存器以及中断屏蔽寄存器等。其中,中断优先权管理电路用来对所处理的各个中断源进行优先权判断,并根据具体情况预先设置优先权。实际上,中断控制器也可以认为是一种接口,外设提出的中断请求经该环节处理后,再决定是否向CPU传送,CPU接受中断请求后的中断响应信号也送给该环节处理,以便得到相应的中断类型码。
3中断嵌套
当CPU响应某一中断源的请求,正在执行中断处理时,若有优先权级别更高的中断源发出中断申请,则CPU要能中断正在执行的中断服务程序,响应高优先级中断。在高优先级中断处理完后再返回继续执行被中断的中断服务程序,即能实现中断处理程序的嵌套。如果一个系统中有三个中断源,优先权的安排为:中断1为最高,中断3为最低,则中断处理如图所示。中断嵌套示意图7.4可编程中断控制器8259A7.4.1功能和引脚
若微处理器只有一根中断请求输入线,为了使多个外部中断源共享中断资源,需要有一个专门的控制电路在微处理器的控制下去管理那些中断源并处理它们发出的中断请求信号。这种专门管理中断源的控制电路就是中断控制器。可编程中断控制器8259A具有如下功能:①它可以接收多个外部中断源的中断请求,并进行优先级别判断,选中当前优先级别最高的中断请求,再将此请求送到微处理器的中断输入端。②具有提供中断向量、屏蔽中断输入等功能。③可用于管理8级优先权中断,也可将多片8259A通过级连方式构成最多可达64级优先权中断管理系统。8259A管理的8级中断对应的服务程序入口地址构成的中断向量表存放在内存固定区域。④具有多种工作方式,自动提供中断服务程序入口地址,使用灵活方便。
8259A的外部引脚8259A的引脚说明
8259A为28脚双列直插式封装器件,管脚分配如图所示。
D0~D7:双向数据线,用来与CPU交换数据。INT:中断请求,输出信号,由8259A传给CPU,或由从8259A传给主8259A。
:中断响应,输入信号,来自CPU。
IR0~IR7:中断请求输入,由外设传给8259A。8259A规定的中断优先级顺序为IR0>IR1>…>IR7。
IR0~IR7:中断请求输入,由外设传给8259A。8259A规定的中断优先级顺序为IR0>IR1>…>IR7。
CAS0~CAS2:级连信号。对于主片,这三个信号是输出信号,根据它们的不同组合000~111,分别确定连在哪个IRi上的从片工作。对于从片,这三个信号是输入信号,以此判别本从片是否被选中。/:主从设备编程/允许缓冲器,双向。作输入信号使用时,即为,作为主设备与从设备的选择控制信号,当=1时,该8259A作为主片;当=0时,该8259A作为从片。作输出信号使用时,即为,作为允许缓冲器接收发送的控制信号。
A0:内部寄存器选择控制信号,输入信号。8259A规定,当A0=0时,对应的寄存器为ICW1、OCW2和OCW3;当A0=1时,对应的寄存器为ICW2~ICW4和OCW1。:片选信号,输入信号。一般来自地址译码器的输出。:读允许信号,输入。来自CPU的。:写允许信号,输入。来自CPU的。
7.4.2
内部结构
8259A由八个部分构成,它们是中断服务寄存器、中断优先权判断器、中断屏蔽寄存器、中断请求寄存器、中断控制逻辑、数据总线缓冲器、级连缓冲器/比较器和读/写控制逻辑。8259A的内部结构
(1)中断请求寄存器IRR(InterruptRequestRegister)。IRR是一个8位寄存器,用来接收来自IR0~IR7上的中断请求信号,并将IRR相应位置位。外设产生中断请求信号的方式有边沿触发方式和电平触发方式,用户可根据需要通过编程进行设置。
(2)中断服务寄存器ISR(InterruptServiceRegister)。ISR是一个8位寄存器,用来存放当前正在处理的中断请求。在中断嵌套方式下,可以将其内容与新进入的中断请求进行优先级比较,从而决定是否进行嵌套。
(3)中断屏蔽寄存器IMR(InterruptMaskRegister)。
IMR是8位寄存器,用来存放中断屏蔽字,可由用户通过编程进行设置。当IMR的第i位置位时,来自IRi的中断请求被屏蔽了,从而禁止来自IRi的中断。因此用户设置IMR的各位后,可以改变系统原来的中断优先级。
(4)中断优先权判断器。在中断响应期间,可以根据控制逻辑规定的优先权级别和IMR的内容,把IRR中提出中断的优先权最高的中断请求位送ISR。
(5)数据总线缓冲器。数据总线缓冲器是一个8位三态双向缓冲器,是8259A与局部总线的接口。微处理器通过它向8259A传送命令字,控制8259A的工作模式,同时也接收8259A传送的工作信息及中断向量。
(6)控制逻辑。在8259A的控制逻辑电路中,有一组初始化命令寄存器(ICW1~ICW4)和一组操作命令字寄存器(OCW1~OCW3),这7个寄存器可由用户根据需要通过编程进行设置,控制逻辑电路可以根据程序来管理8259A的全部工作。
(7)读/写控制逻辑。读/写控制逻辑电路在四个输入信号、
、
A0的控制下,控制着8259A的数据总线缓冲器之间的信息传送,控制逻辑如表所示。它把微处理器送来的命令字传送到8259A中相应的命令寄存器中(包括初始化命令字ICW1、ICW2、ICW3、ICW4和操作控制字OCW1、OCW2、OCW3、OCW4),再把8259A中相应的控制器/寄存器中的内容(IRR、ISR、IMR)输出到数据总线上。
(8)级连缓冲器/比较器。级连缓冲器/比较器用来存放和比较系统中全部8259A的标记IDS。这个标记是微处理器通过数据总线送入8259A的。所有的8259A通过级连线CAS0
~CAS2
三条I/O外线实现互连。其中必须有一个8259A为主片,其余的8259A为从片。主片通过CAS0~CAS2输出标记信息,而从片通过这三条线输入标记信息,并与自己原有的标记进行比较,如果相同则该从片被主片选中,它就在中断响应周期把自己的中断向量送到数据总线上。8259A中断响应过程
(1)外部设备在中断请求输入线(IR7~
IR0)上发了中断请求,使中断请求寄存器IRR的相应位置位。(2)IRR的内容与IMR的内容相“与”,结果送给优先级分析器。中断优先级分析器把优先级最高的中断请求送到控制电路。(3)控制电路将接收到的中断请求向CPU输出INT信号。(4)若CPU是处在开中断状态,则在当前指令执行完以后,接收到INT信号,输出一个中断响应脉冲,进入第一个中断响应周期。(5)8259A的脚上收到脉冲信号,就将最高优先级所对应的IRR位清除,并将对应的ISR位置位。(6)CPU启动第二个中断响应周期,输出另一个脉冲,在这个周期8259A向数据总线输出一个中断向量码。(7)CPU读取该中断向量码,把它乘以4,得到中断服务程序入口地址,转入该中断服务程序。这样一个中断响应周期就完成了。
7.4.38259A的中断管理方式
8259A具有非常灵活的中断管理方式,可满足用户各种不同要求,并且这些工作方式都可以通过编程来设置。
1.8259A的编程结构
2.优先级设置方式按照优先权设置方法来分,8259A有以下两种工作方式:(1)全嵌套方式。普通全嵌套方式是8259A最常用的工作方式,简称为全嵌套方式。该方式下中断优先权是固定的,即IR0优先权最高,IR7优先权最低。当CPU响应中断时,8259A就把申请中断的优先权最高的中断源在ISR中的相应位置“1”,而且把它的中断类型码送到数据总线上。在此中断源的中断服务程序完成之前,与它同级或优先权更低的中断源的申请就被屏蔽,只有优先权比它高的中断源的申请才是允许的(当然,CPU是否响应取决于CPU是否处在开中断状态)。
(2)特殊全嵌套方式。特殊全嵌套方式和普通全嵌套方式只有一点不同:在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么也会给予响应,从而实现一种对同级中断请求的特殊嵌套。特殊全嵌套方式一般用在8259A级连系统中。在这种情况下,主片8259A编程为特殊全嵌套方式。这样,当来自某一从片的中断请求正在处理时,一方面,和普通全嵌套方式一样,对来自优先级较高的主片其他引脚上的中断请求进行开放;另一方面,对来自同一从片的较高优先级请求也会开放。在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A有两种中断嵌套方式:普通全嵌套方式(默认方式)
一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。特殊全嵌套方式
一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。注:特殊全嵌套仅用于多个8259A级连时的主8259A,而不能用于从属8259A或单8259A系统。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式:从片的INT被主片封锁,故更高级别的IR0-IR2中断也无法得到响应特殊嵌套方式:因主片不封锁从片的INT,故级别高的IR0-IR2中断可以得到响应。(但IR3-IR7仍被本从片封锁)C.假定IR3发生中断,并获得服务普通全嵌套方式:IR4的中断被服务时,这些中断将被封锁。B.特殊嵌套方式:IR4的中断被服务时,只封锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7普通全嵌套方式与特殊全嵌套方式的区别
去CPU
(3)优先权自动循环方式。在优先权自动循环方式中,优先级队列是在变化的。一个设备受到中断服务以后,它的优先级自动降为最低,原来比它低一级的中断则为最高级,依次排列。如初始优先级队列规定为IR0、IR1、IR2、…、IR7。此时,若IR4请求中断,则处理IR4,在IR4被服务以后,IR4自动左循环到最低优先级,IR5成为最高优先级,这时中断源的优先级依次为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。这种方式一般用在系统中多个中断源优先级相同的场合。
(4)优先权特殊循环方式。优先权特殊循环方式与优先权自动循环方式只有一点不同:在优先权特殊循环方式中,可以编程写OCW2来设置当前的中断优先级顺序。例如,确定IR5为最低优先级,那么当前的优先级顺序为IR6、IR7、IR0、…、IR5。两类优先级控制方式:固定优先级和循环优先级固定优先级方式所有中断请求IRi的中断优先级固定不变优先级排列顺序可编程改变加电后8259A的默认方式,默认优先级顺序从高到低为IR0~IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低级最高级最高级最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级优先级可编程改变优先级循环方式
中断源轮流处于最高优先级,即自动中断优先级循环初始优先级顺序可用编程改变某中断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级
IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低级最高级最高级最低级ISR内容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服务结束以前0101000001000000IR4的服务结束以后ISRi
3.中断结束方式当一个中断请求得到响应时,8259A都会将中断服务寄存器ISR中相应位置“1”,为以后中断优先权电路的工作提供依据。当中断服务程序结束时,必须使该ISR位清零;否则,8259A的中断控制功能就会不正常。这个使ISR位复位的动作就是中断结束处理。注意,这里的中断结束是指8259A结束中断的处理,而不是CPU结束执行中断服务程序。
8259A分自动中断结束方式和非自动中断结束方式,而非自动中断结束方式又分为普通(或称一般、正常)中断结束方式和特殊中断结束方式。
(1)普通EOI结束方式。这种方式配合全嵌套优先权工作方式使用。当CPU用输出指令向8259A发出普通中断结束EOI时,8259A就会把ISR中已置位的最高位复位,因为在全嵌套方式中,置1的最高ISR位对应了最后一次被响应和被处理的中断,也就是当前正在处理的中断,所以,最高ISR位复位相当于结束了当前正在处理的中断。
(2)特殊中断结束方式(SEOI)。
在非全嵌套方式下,由于中断优先级不断改变,无法确知当前正在处理的是哪级中断,这时就要采用特殊中断结束方式。采用这种方式反映在程序中就是要发一条特殊中断结束命令,在这个命令中指出了要清除哪个ISR位。不管是普通中断结束方式,还是特殊中断结束方式,对于级连系统的从片在一个中断服务程序结束时,都必须发两次中断结束命令,一次是对主片发送的,一次则是对从片发送的。
(3)自动中断结束方式(AEOI)。
若采用该方式,则在第二个中断响应周期信号的后沿,8259A将自动把中断服务寄存器ISR中的对应位清除。这样,尽管系统正在为某个设备进行中断服务,但对8259A来说,中断服务寄存器中却没有对应位作指示,所以,就好像已经结束了中断服务一样。这种最简单的中断结束方式,只能用于不要求中断嵌套的情况。
用于全嵌套方式普通EOI:由CPU发出正常EOI命令,该EOI命令使ISRi=1的位中优先级最高的那一位复位。
用于特殊屏蔽方式特殊EOI:由CPU发出一条SEOI命令,该EOI命令中指出了所要复位的ISR的位号。
自动EOI自动EOI:在第2个INTA结束时,由8259A使ISRi自动复位;因不保留当前正在服务的中断的状态,故AEOI不能用于中断嵌套方式4.循环优先级的循环方法(已讲)
5.中断源屏蔽方式
8259A的8个中断请求都可根据需要单独屏蔽,屏蔽是通过编程使得屏蔽寄存器IMR相应位清“0”或置“1”,从而允许或禁止相应中断。8259A有两种屏蔽方式。
(1)普通屏蔽方式。普通屏蔽方式中,将IMR某位置“1”,则它对应的中断就被屏蔽,从而使这个中断请求不能从8259A送到CPU。如果该位清“0”,则允许该级中断。
(2)特殊屏蔽方式。有些情况下,希望一个中断服务程序能动态地改变系统的优先权结构。例如,在执行中断服务程序某一部分时,希望禁止较低级的中断请求;但在执行中断服务程序的另一部分时,又希望能够开放比本身的优先级低的中断。为此,在设置了特殊屏蔽方式后,再编程使IMR某位置位,就会同时使ISR的对应位复位。这样,就不只是屏蔽当前正在处理的这级中断,而且还真正开放了其他级别较低的中断。当然未被屏蔽的更高级中断也可以得到响应。
6.中断请求引入方式外设的中断请求信号从8259A的引脚IRn引入,但根据实际工作需要,8259A的中断触发方式可分成如下3种:
(1)边沿触发方式。在边沿触发方式下,8259A的引脚IRn上出现上升沿,表示有中断请求,高电平不表示有中断请求。
(2)电平触发方式。在电平触发方式下,8259A的引脚IRn上出现高电平,表示有中断请求。这种方式下,应注意及时撤除高电平,否则可能引起不应该有的第二次中断。无论是边沿触发还是电平触发,中断请求信号IR都应维持足够的宽度。即在第一个中断响应信号结束之前,IR都必须保持高电平。
(3)中断查询方式(见书)优先级方式选择普通全嵌套方式:固定优先级,IR0最高,IR7最低。特殊全嵌套:与a)基本相同,响应同级中断请求优先级自动循环:某级被响应后,降为最低。如IR4被响应后,优先级顺序变为:IR5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。优先级特殊循环方式:编程指定最低优先级,其它同C)。屏蔽中断方式选择普通屏蔽方式:对应IMR为1位的中断请求将被屏蔽。特殊屏蔽方式:执行中断程序时,动态改变优先级结构,屏蔽本级,允许较低级请求被服务。中断结束方式:ISRn被清0,中断结束。自动结束方式:8259A收到INTA后自动把ISRn位清0。普通结束方式:8086发命令清除ISR中级最高的位,结束中断。特殊结束方式:将ISR中指定位清0。中断请求引入方式边沿触发方式。电平触发方式。中断查询方式
7.4.48259A的编程方法
8259A根据接收到的微处理器的命令进行工作。微处理器的命令分为两类:一类是初始化命令,称为初始化命令字(ICW)。8259A在进入操作之前,必须由初始化命令字来使它处于初始状态。另一类是操作命令,称为操作控制字(OCW)。在对8259A进行初始化之后,用这些控制字来控制8259A执行不同的操作方式。操作控制字可在初始化后的任何时刻写入8259A。
1.初始化命令字
8259A有4个初始化命令字ICW1~ICW4,它们按照一定的顺序送入,设置8259A的初始状态。无论何时,当微处理器向8259A发送一条A0=0和D4=1的命令时,这条命令就译码为ICW1。它启动8259A的初始化过程产生下列动作:清除IMR,把最低优先级分配给IR7,把最高优先级分配给IR0,将从设备标志ID置成7,清除特殊屏蔽方式,设置读IRR方式。各初始化命令字的功能如下:
(1)ICW1(初始化字)。ICW1称为芯片控制初始化命令字。ICW1的各位定义如下:
ICW1——初始化字LTIM:触发方式=1高电平触发=0上升沿触发SNGL:级连控制=1单片=0级连IC4:ICW4控制=1要写ICW4=0不写ICW4(默认ICW4为全0)A0 D7 D6 D5 D4 D3 D2 D1 D0
0 x
x
x 1 LTIM xSNGL IC4
D7、D6、D5、D2在8086/8088系统中不用,可为1,也可为0。它们在8080/8085系统中使用。
D4=1和A0=0是ICW1的标志。在初始化命令字设置过程结束后,当A0=0时,D4=0表示操作控制字OCW2或OCW3。
LTIM用来设定中断请求信号的形式。如果LTIM=0,则表示中断请求为边沿触发方式;如果LTIM=1,则表示中断请求为电平触发方式。
SNGL用来指出本片8259A是否与其他8259A处于级连状态。当系统中只有一片8259A时,SNGL为1;当系统中有多个8259A时,SNGL为0。
IC4用来指出初始化过程中是否设置ICW4。若IC4为0,表示不用ICW4;若IC4为1,表示用ICW4。在8086/8088系统中,ICW4是必须使用的,此时IC4必定为1。
(2)ICW2(中断类型码字)。
ICW2是设置中断类型码的初始化命令字。ICW2的各位定义如下:
A0D7D6D5D4D3D2D1D01T7
T6
T5T4
T3
0
00编程时用ICW2设置中断类型码高5位T7~T3,低3位插入IR的编码。例如:若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,等等。
(3)ICW3(级连控制字)。
ICW3是标志主片/从片的初始化命令字。只有在一个系统中包含多片8259A时,ICW3才有意义。ICW3——级连控制字
主片的级联控制字
Si=1对应IRi线上连接了从片
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 S7S6 S5 S4 S3
S2
S1
S0从片的级联控制字
ID2~ID0
标识码,说明本从片连接到主片的哪个IR引脚上。000~111分别对应IR0~IR7。表列出了从设备标志的编码。
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 00 0 0 0
ID2 ID1 ID0表6-3从设备标志编码
ICW3必须与主从片的连接关系一致:
例如,主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H。中断响应时,主片通过级连线CAS2-CAS0送出被允许中断的从片标识码,各从片用自己的ICW3与CAS2-CAS0比较,二者一致的从片才可发送中断向量码。(4)ICW4(方式控制初始化命令字)
SFNM:特殊全嵌套1特殊全嵌套方式0普通全嵌套方式AEOI:自动EOI1自动EOI方式0非自动EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0
1 00 0SFNM BUF M/S AEOI 1BUF:缓冲方式
M/S:主/从缓冲选择BUFM/S11缓冲方式/主8259A10缓冲方式/从8259A0x非缓冲方式/正常
ICW4为方式控制初始化命令字。只有在ICW1的D0位为1时,才有必要设置ICW4,否则不必设置。
D7~D5位总是为0,用来作为ICW4的标识码。若D4(SFNM)为1,则为特殊的全嵌套方式。在采用特殊全嵌套方式的系统中,一般都使用了多片8259A。
若D3(BUF)为1,则为缓冲方式。在缓冲方式下,8259A通过总线驱动器和数据总线相连。此时,引脚作为输出端来使用。在8259A和CPU之间传输数据时,启动数据总线驱动器。如果8259A不通过总线驱动器和数据总线相连,则BUF应该设置为0。在单片的8259A系统中,接高电平。D2(M/S)在缓冲方式下用来表示本片为从片还是主片。即BUF=1时,如果M/S=1,则表示本片为主片;如果M/S=0,则表示本片为从片。当BUF=0时,则M/S不起作用,可为0可为1。
D1(AEOI)指定是否为中断自动结束方式。AEOI=1,则设置中断自动结束方式;AEOI=0时,不用中断自动结束方式,这时必须在中断服务程序中使用EOI,使ISR中最高的优先权的位复位。
D0(μPM)指定微处理器的类型。μPM=0时,表示8259A工作于8080/8085系统中;μPM=1时,表示8259A工作于8086/8088系统中。
初始化命令字(InitializationCommandWord,ICW)ICW1:硬件设置
LTIM=1中断请求电平触发,LTIM=0中断请求边沿触发。
SNGL=1单片8259A系统,SNGL=0多片8259A系统。ICW2:中断类型码设定,最低3位由IRn的n值定。ICW3:在多片8259A系统中依主片、从片而定。主片:有1位其IR连有从片用8位。从片:INT连到主片IR哪端,用最后3位。ICW4:工作方式设定
SFNM=1特殊全嵌套、SFNM=0普通全嵌套。
AEOI=1中断自动结束、AEOI=0普通中断结束。
BUF=0,DB无缓冲,SP/EN。
BUF=1,DB有缓冲,主从片软件定。
M/S=1为主片、M/B=0为从片。初始化命令字的编程顺序在8259A进入正常工作之前,必须将系统中的每片8259A进行初始化。初始化命令字用来设定8259A的初始状态。在初始化的过程中,ICW1和ICW2总是要出现的。ICW3和ICW4是否使用,由ICW1的相应位决定。当SNGL=0时,需要ICW3分别用作主片或从片的8259A,它们的格式是不同的。ICW1的IC4=1时,需要ICW4,对于8086/8088系统,ICW4总是需要的。CPU向8259A写入命令时,A0=0和D4=1标志着写入ICW1,初始化过程开始。随后写入的初始化命令字由A0=1作为标志。初始化过程结束后,才能写入操作控制字。初始化流程图A000LTIMSNGLA7A6A5IC41D7D6D5D2D1D0D4D3ICW1(chipcontrol)用于80851T7/T6/T5T4T3000ICW2(type)SNGL=1?1S5S4S6S7S3S2/ID2S1/ID1S0/ID0ICW3(slavecontrol)YNIC4=1?N1SFNM00BUFM/SAEOIuPM0ICW4(modecontrol)可中断8259A初始化流程
2.8259A的操作命令字在对8259A用初始化命令字进行初始化后,就进入工作状态,准备好接收IR输入的中断请求信号。在8259A工作期间,可通过操作命令字来使它按不同的方式进行操作。
操作命令字是在应用程序内部设置的。操作命令字共有三个,可以独立使用。
(1)OCW1(屏蔽控制字)。OCW1称为中断屏蔽操作命令字。其格式如下:A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0
Mi=1中断请求线IRi被屏蔽(不允许中断)=0允许该IRi中断OCW1将写入IMR寄存器。A0=1时读OCW1可读出设置的IMR内容。(2)OCW2(中断结束和优先权循环控制字)。L2~L0:优先级编码R:优先级自动循环SL:指定优先级EOI:结束中断命令
RSLEOI001普通EOI命令(NSEOI),全嵌套(包括特殊全嵌套)方式011特殊EOI命令(SEOI),按L2-L0编码复位ISR101普通EOI命令,优先级自动循环100自动EOI,设置优先级自动循环000自动EOI,取消优先级自动循环(固定优先级)111特殊EOI命令,按L2-L0编码循环优先级(L2-L0设为最低优先级)110按L2-L0编码循环优先级(L2-L0设为最低优先级)
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 RSL EOI 0 0
L2
L1
L0与这些操作有关的命令和方式控制大多以组合格式使用OCW2。命令或方式的选择应当以组合格式来设置,而不是按位设置。
R是优先级循环控制位。R=1为循环优先权,R=0为固定优先权。
SL用来选择指定的IR级别位。决定OCW2中的L2、L1
、L0是否有效。若SL=1,则L2、L1、L0有效;若SL=0,则L2、L1
、L0无效。
EOI是中断结束命令位。在非自动中断结束命令的情况下,EOI=1表示中断结束命令,它使ISR中最高优先权的位复位;EOI=0则不起作用。
中断结束-清除循环AEOL方式-特殊循环L2、L1
、L0用来指定操作起作用的IR级别码。凡SL=1的指令,在L2、L1
、L0所指定的IR级别编码上都起作用。SL=0时,不使用L2、L1
、L0位。L2、L1
、L0的编码与作用的IR级别如上表所示。
(3)OCW3(屏蔽和读状态控制字)。ESMM:
允许使能特殊屏蔽方式SMM:
特殊屏蔽方式ESMMSMM1特殊屏蔽方式设定10特殊屏蔽方式清除(普通屏蔽方式)0x无效P(Polling):=1查询方式
=0非查询方式A0 D7 D6 D5 D4 D3 D2 D1 D0
0 0ESMM SMM 0 1 PRRRISRR:读寄存器RIS:ISR/IRR选择RRRIS11读ISR10读IRR0x无效
OCW3的功能有三个方面:一是设置和撤消特殊屏蔽方式;二是设置中断查询方式;三是用来设置对8259A内部寄存器的读出命令。
ESMM是特殊屏蔽模式允许位,是允许或禁止SMM位起作用的控制位。当ESMM=1时,允许SMM位起作用;当ESMM=0时,禁止SMM位起作用。
SMM是设置特殊屏蔽方式控制位。当ESMM=1和SMM=0时,选择特殊屏蔽方式;当ESMM=1和SMM=1时,清除特殊屏蔽方式,恢复普通屏蔽方式;当ESMM=0时,SMM位不起作用。
P是查询命令位。当P=1时,8259A发送查询命令;当P=0时,不处于查询方式。当ESMM=0时,这一位不起作用。RR是读寄存器命令位。当RR=1时,允许读IRR或ISR;当RR=0时,禁止读这两个寄存器。
RIS:读IRR或ISR选择位。如果RR=1和RIS=1,则允许读中断服务寄存器;如果RR=1和RIS=0,则允许读中断请求寄存器IRR;当RR=0,则RIS位无效。查询方式允许8259A不工作于中断方式,而是以查询方式工作。CPU先写一个D2=1的OCW3,再对同一地址读入,即可得到如下状态字节:
IxxxxR2R1R0
I=1表示有中断请求,中断请求号为R2-R0
此查询步骤可反复执行,以响应多个同时发生的中断。
读IRR/ISR:写入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 张掖中考试题及答案
- 物业完整试题及答案
- 淘宝客服沟通培训
- 路基施工(路基排水施工)
- 经验交流活动策划与实施
- 温控设备管理员工培训
- 2025年中国母婴用品行业市场全景分析及前景机遇研判报告
- 2025生物课标培训
- 针灸出科门诊病例分析专题报告
- 篮球教学工作总结
- 核电站sdm手册第7章
- JGJ-130-2011建筑施工扣件式钢管脚手架安全技术规范(新版)
- 鲁东教师心理健康期末考试复习题及参考答案
- 人教版八年级上册:《芦花荡》课文原文
- 蛋白质纯化技术PPT幻灯片课件
- SMW工法桩拔除技术交底
- 企业部门人员需求申请表
- 手太阴肺经ppt课件
- 城市居住区规划设计规范(含条文说明)
- (完整版)《普通心理学-彭聃龄》知识要点
- 借款担保人担保承诺书
评论
0/150
提交评论