第07章中断控制技术ppt课件.pptx
汇编语言与微机接口1第7章 中断控制技术第第7章章 中断控制技术中断控制技术中断系统概述8086中断系统中断控制器8259A8259A的应用234总目录总目录137.1.1 中断基本概念7.1.2 中断过程7.1.3 中断优先权中断系统概述4中断主程序中断服务子程序断点中断识别中断接口中断类型码中断源 7.1.1 中断的基本概念现场中断向量表5 当某事件发生时,为了对该事件进行处理,CPU中止现行程序的执行,转去执行处理该事件的程序(称中断处理程序或中断服务程序)。待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。中断处理主程序KK 1返回N m 7.1.1 中断的基本概念6中断方式下,CPU无需完全服务于某个外设,效率高。71.中断中断指CPU正在执行某程序的过程中,由于出现了某些异常或外设提出了某种请求。CPU暂暂停停当前程序,转去转去处理异常或外设请求的程序。执行完后再返回返回原来被终止的程序处继续执行。该过程称为中断。2.主程序主程序未发生中断时,CPU正在执行的程序称为主程序。83.中断服务程序中断服务程序 ISR处理中断事件的程序,又称中断子程序。不同的中断对应不同的ISR。4.断点断点中断时,主程序中被终止指令的下一条指令的地址下一条指令的地址CPU转去执行ISR时,断点被压入栈压入栈中进行保护;ISR执行完毕后,CPU通过出栈出栈操作从栈顶获得中断断点,确保能返回到主程序处继续执行。9是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址以及标志寄存器等。10引起中断的原因或发出中断请求的来源,称为中断源。一般的输入、输出设备:KB 打印机数据通道中断源:硬盘 光驱 U盘实时时钟:控制中使用故障源:为调试而设置的中断源11内部中断内部中断:在CPU的内部产生。例:CPU执行程序时遇到的特殊情况,如:除法错。外部中断外部中断:在CPU的外部产生。例:外设提出的中断,如电源故障。7. 中断类型号中断类型号微机系统中有多个中断源。为便于区分,为每个中断源分配一个编号编号,即中断类型号。128. 中断接口中断接口当中断源向CPU发中断请求时,需由一个电路来进行管理管理,如:接收中断请求、屏蔽/打开中断请求、中断优先级排队、中断嵌套和中断结束等。实现中断管理的逻辑电路逻辑电路称为中断接口。本章使用8259A可编程中断控制器对系统的中断进行管理。139. 中断识别中断识别指CPU确定确定哪一个中断源发出中断请求的过程。目的目的:最终形成该中断源所对应的中断服务程序的入口地址入口地址,实现程序的转移。中断识别的2种方法:查询法查询法:采用软件或硬件查询技术来确定发出中断请求的中断源。硬件法硬件法:由可编程中断控制器来提供中断类型号。1410. 中断向量和中断向量表中断向量和中断向量表中断向量:指中断服务程序的入口地址入口地址。每个ISR都有一个确定确定的入口地址。入口地址 = 段基址段基址CS : 偏移地址偏移地址IP,共4个字节。中断向量表:将系统中所有的中断向量集中起来将系统中所有的中断向量集中起来,按中断类型号从小到大的顺序按中断类型号从小到大的顺序存放在内存某区域。该存储区域称为中断向量表。PC机中共有256个中断(0255),每个中断向量占4个字节,共占1KB的存储区域。用 000003FFH 的内存单元存储中断向量表。1516若有若有更高级别的新中断源更高级别的新中断源发出发出请求,且新中断源请求,且新中断源满足响应条件满足响应条件,则,则CPU中止当前的中断服务程序,转而响应高级中止当前的中断服务程序,转而响应高级中断。这种多级(重)中断的处理方式称中断。这种多级(重)中断的处理方式称为为“嵌套嵌套”。11.中断嵌套:17中断嵌套中断嵌套 主程序主程序外设1中断服务程序外设1中断服务程序外设2中断服务程序外设2中断服务程序IRETIRET外设1外设1中断请求中断请求外设2外设2中断请求中断请求响应中断1响应中断1响应中断2响应中断2中断返回中断返回中断返回中断返回18CPU执行流程中断服务程序1非预料事件1中断服务程序2非预料事件2新到来的中断应比原中断的优先级高;19中断嵌套必须具备的几个条件中断嵌套必须具备的几个条件l正处于响应状态的中断服务程序中,应开放总正处于响应状态的中断服务程序中,应开放总中断(中断(IF位置位置1)l新中断应具有比原中断有新中断应具有比原中断有高的优先级;高的优先级;同级或同级或低级均不能嵌套低级均不能嵌套l为保护各级中断服务程序的数据不被破坏,所为保护各级中断服务程序的数据不被破坏,所有服务程序中均应有有服务程序中均应有保护现场、恢复现场保护现场、恢复现场的指的指令令l每个中断服务程序末尾必须有每个中断服务程序末尾必须有IRET指令指令以示以示结束,从而返回被中断的程序地址处。结束,从而返回被中断的程序地址处。20。中断屏蔽标志系统在处理优先级别比较高的中断请求时,不会理睬后来的级别较低的中断请求。12.中断屏蔽217.1.2 中断过程中断过程22 从中断源请求请求中断到完成ISR后返回返回主程序的过程,称为中断过程。包含4个阶段。1.中断源请求中断中断源请求中断u外设发出中断请求时。中断接口电路需设置中断请求触发器中断请求触发器。保持保持外设的中断请求信号,直到CPU响应该中断后才清除它。中断接口电路应设置中断屏蔽寄存器中断屏蔽寄存器。CPU可通过对其进行设置,使得某些中断源的中断请求不能提交到CPU2324由于同一时刻可能会有多个中断源同时请求中断服务,因此接口电路需对这些中断源进行优先级优先级判别判别和优先级排队优先级排队。这个过程称为中断判优。2.中断判优中断判优中断优先级中断优先级,是为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。CPU按照优先级的高低顺序来响应中断。253.中断响应中断响应收到中断请求后,若CPU满足响应条件,则进入中断响应周期。CPU响应中断的条件条件:CPU当前指令执行结束。没有更高级的中断请求在执行。CPU处于开中断状态 (IF=1)。可用指令改变IF的状态:STI开中断;CLI关中断。26中断响应及处理过程示意图中断响应周期需完成的操作(CPU硬件自动完成)清IF和TF单步陷阱标志,以免在响应过程中被新的中断源中断,破坏了当前中断处理的现场。将标志寄存器FLGAS和中断断点 (CS:IP) 压栈保存。查找中断向量表,获得ISR的入口地址,转去执行ISR。27将将FLAGS和断点地址压栈和断点地址压栈IPLIPHCSLCSHFLAGLFLAGHSP进入中断服务程序时284.中断服务中断服务CPU转入ISR后,需做以下几件事情:保护现场保护现场:ISR将要用到的寄存器压栈压栈,以免其数据破坏。开中断开中断:以便在执行ISR时,能响应更高级的中断请求。中断处理中断处理:处理中断请求所要求的操作。关中断关中断:保证在恢复现场时不被新的中断打断。恢复现场恢复现场:在ISR结束前,执行出栈出栈操作,恢复各寄存器的内容,以便主程序正确执行。开中断开中断:保证返回主程序后仍能响应中断。中断返回中断返回:ISR的最后一条指令为IRET,它将IP、CS和FLAGS的内容依次弹出,以便恢复到主程序的断点处。297.1.3 中断优先权中断优先权30l多个中断源产生中断,多个中断源产生中断,CPUCPU首先为谁服务?首先为谁服务?中断优先级排队问题。中断优先级排队问题。 1、中断优先权概念u中断优先级控制要处理两种情况:对同时产生的中断对同时产生的中断:应首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则处理;对非同时产生的中断对非同时产生的中断:低优先级别的中断处理程序允许被高优先级别的中断源所中断即允许中断嵌套。31软件查询方法简单硬件方法专用硬件方法中断优先级的控制方法:32在中断服务程序的开始部分安排一段查询程序在中断服务程序的开始部分安排一段查询程序,通过软件查询,通过软件查询“中断寄存器中断寄存器”的状态。的状态。查询的顺序反映了各个中断源的优先权的高低查询的顺序反映了各个中断源的优先权的高低。显然,。显然, 最先查询的外设,其优先权级别最最先查询的外设,其优先权级别最高。高。 2、软件查询方式33软件优先权查询流程图 中断程序入口 Y N Y N Y N保护现场是A设备是B设备是C设备恢复现场开中断,返回A中断服务程序B中断服务程序C中断服务程序34优点:节省硬件,优先权安排灵活; 缺点:查询需要耗费时间, 在中断源较多的情况下,查询程序较长,可能影响中断响应的实时性。软件查询方法3536+5V 外设 +5V +5V +5V +5V +5V +5V +5V 外设 外设 外设 外设 外设 外设 外设 中断寄存器中断请求触发器INTR37INTER PROC PUSH AXPUSH BX PUSH CXPUSH DX ;现场保护STI ;开中断用软件查询的程序例子:38MOV DX, 0100HIN AL, DX ;查询SHR AL,1 ;寄存器逻辑右移1JC SERV_A;为1则执行A服务程序SHR AL,1 ;寄存器逻辑右移1JC SERV_B;为1则执行B服务程序. SHR AL,1;寄存器逻辑右移1JC SERV_H;为1则执行H服务程序JMPDONE用软件查询的程序例子:39.SERV A ;A服务程序JMPDONE .SERV B;B服务程序JMPDONE.SERV_H;H服务程序JMPDONE40DONE:CLI ;关中断 POP DX ;恢复现场 POP CX POP BX POP AX STI ;开中断 IRET ;中断返回原断点INTER ENDP返回本节41INTAinCPUINTAINTR外设1外设2外设接口1菊花链逻辑电路外设接口2外设3外设接口31菊花链逻辑电路菊花链逻辑电路IREQIREQIREQ中断确认INTAinINTAin中断确认中断确认 3、菊花链中断优先权排队42菊花链逻辑电路INTAinIREQINTR&=1 1INTAoutDB三态门中断向量码E外设接口中断确认菊花链逻辑电路431 无0 有中断响应INTAINTR中断请求1 有0 无1 封锁后一级0 开放后一级接口1设备1接口2设备2 优先级由设备的位置决定,越靠近CPU的设备其优先级越高。44每一个8259A芯片都能直接管理8级中断最多可以用9片8259A芯片级连,由其构成级连机构可以管理64级中断。Intel 8259A是可编程中断控制器可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断 4、专用硬件中断优先权排队45典型的中断控制器结构(课本典型的中断控制器结构(课本P170 图图7-12)INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器优先级管理逻辑电路当前中断服务寄存器控制逻辑46包括的主要部件:包括的主要部件: 中断请求寄存器IRR保存8条外界中断请求信号IR0IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求 中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许 当前中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务 优先级管理逻辑电路(优先级裁决器) 判断中断请求的优先级高低477.2 8086中断系统中断系统48 Intel80X86系列微机有一个灵活的中断系统,可以处理256个不同的中断源,每个中断源都有相应的中断类型码(0255)供CPU识别。 中断源可以来自CPU外部,也可以来自CPU内部,可分成两大类: 硬件中断 软件中断 7.2.1 外部中断49 8086/8088中断分类 INTn指令(软件中断)中断逻辑INT3指令INTO指令单步中断除数为0中断非屏蔽中断请求中断控制系统(8259A)硬件中断可屏蔽中断请求NMIINTR软件中断50 7.2.1 外部中断(续)NMI NMI 非屏蔽中断非屏蔽中断INTR INTR 可屏蔽中断可屏蔽中断p由由NMI引脚出现中断请求信号产生的中断称引脚出现中断请求信号产生的中断称为非屏蔽中断请求,它不受中断允许标志为非屏蔽中断请求,它不受中断允许标志IF的限制。的限制。p其中断类型码为其中断类型码为2。p当当NMI引脚上出现上升沿触发时,表示非屏引脚上出现上升沿触发时,表示非屏蔽中断请求信号有效,蔽中断请求信号有效,CPU内部会把该信号内部会把该信号锁存起来,但要求该信号的有效高电平持续锁存起来,但要求该信号的有效高电平持续2个时钟周期以上。个时钟周期以上。51 7.2.1 外部中断(续)NMI NMI 非屏蔽中断非屏蔽中断INTR INTR 可屏蔽中断可屏蔽中断p从从CPU的的INTR引脚上引入的中断为可屏蔽中引脚上引入的中断为可屏蔽中断。断。INTR信号是高电平触发的。可屏蔽中断信号是高电平触发的。可屏蔽中断受中断标志受中断标志IF的影响。的影响。p只有在只有在IF=1的情况下,的情况下,CPU才会在执行当前才会在执行当前指令后响应可屏蔽中断请求信号。指令后响应可屏蔽中断请求信号。 p如果如果IF=0,即使中断源有中断请求,即使中断源有中断请求, CPU也不会响应,也称为中断被屏蔽。也不会响应,也称为中断被屏蔽。52 软件中断是软件中断是CPUCPU根据软件的某条指令或者软件根据软件的某条指令或者软件对标志寄存器的某个标志位的设置而产生的。对标志寄存器的某个标志位的设置而产生的。由于它与外部硬件电路完全无关,故也称为内部中断。在80X86系统中,内部中断主要有以下几种: 7.2.2 内部中断除法出错中断0型中断单步中断1型中断断点中断3型中断溢出中断4型中断指令中断n型中断53除法出错中断0号中断。 当执行除法指令时, 若发现除数为0或商超过了机器所能表达数的范围,则立即产生一个中断类型码为0的内部中断, 该中断称为除法出错中断。一般该中断的服务处理都由操作系统安排。 54单步中断1号中断。 若TF=1,则CPU处于单步工作方式,即每执行完一条指令之后就自动产生一个中断类型码为1的内部中断,使得指令的执行成为单步执行方式。 单步执行方式为系统提供了一种方便的调试手段,成为能够逐条指令地观察系统操作的一个窗口。如DEBUG中的跟踪命令,就是将标志TF置1,进而去执行一个单步中断服务程序,以跟踪程序的具体执行过程,找出程序中的问题或错误所在。 55 断点中断3号中断。 56 插入INT 3指令之处便是断点。 在断点中断服务程序中,可显示有关的寄存器、存储单元的内容,以便程序员分析到断点为止程序运行是否正确。 57 溢出中断4号中断。 若算法操作结果产生溢出(OF=1),则执行INTO指令后立即产生一个中断类型码为4的中断。4型中断为程序员提供了一种处理算术运算出现溢出的手段,它通常和算术指令功能配合使用。 58注意指令中断n型中断。 指令INT n的执行也会引起内部中断,其中断类型码由指令中的n指定。该指令就称为软中断指令,通常指令的代码为两个字节代码,第一字节为操作码,第二字节为中断类型码。 MOVAH ,01H INT21H ; CD 21 内部中断的类型码是预定好的或包含在软中断指令中,除单步中断外,其他的内部中断不受状态标志影响,中断后的服务处理须由用户定义。 59 7.2.3 中断向量表中断类型码中断向量表指针中断向量表60实际上就是中断处理程序的入口实际上就是中断处理程序的入口地址(段地址、偏移地址)。地址(段地址、偏移地址)。p 中断向量表:中断向量表:通常在内存的最低通常在内存的最低1 KB1 KB(00000H00000H003FFH003FFH)建立一个中断向量表。)建立一个中断向量表。用于存放中断向量。用于存放中断向量。p 分成256个组,每组占4个字节,用以存放256个中断向量。 7.2.3 中断向量表61p 每个中断向量占每个中断向量占4 4个字节。个字节。 前前2 2个字节个字节:存放中断处理程序入口地址的偏移量偏移量(IP,16位), 后后2 2个字节:个字节:存放中断处理程序入口地址的段地址段地址(CS,16位)。p 按照中断类型码的序号,对应的中断向量在中断向量表中按规则顺序排列。 如图: 7.2.3 中断向量表62类型0中断入口(除法出错)类型1中断入口(单步中断)类型2中断入口(NMI)类型3中断入口(断点中断)类型4中断入口(溢出中断)类型5中断入口类型31中断入口类型32中断入口类型255中断入口1587000000400800C01001407F0803FC供用户使用系统备用专用中断IPCSIPCSIPCS 中断向量表 63 中断类型码与中断向量在向量表中的位置之间的对应关系为: 中断向量表地址指针地址指针=中断类型码中断类型码4 例如,中断类型码为20H的中断源对应的中断向量存放在0000:0080H(420H=80H)开始的4个单元中。64问题1 如果在00080H00083H这4个单元中存放的内容分别为10H、20H、 30H、 40H,那么,在该系统中, ( )号中断所对应的中断向量为( ) 。 20H4030H:2010H0000:005CH70563412问题2 若系统中对应于中断类型码为17H的中断处理程序存放在1234:5670H开始的内存区域中,则对应于17H类型码的中断向量存放在( )开始的4个字节中。这4个单元中的值分别为:( H、 H、 H、 H)。 65 80X86中的各种中断响应过程是不相同的, 其主要区别在于如何获取相应的中断类型码。获取中断类型码之后无论那种中断类型,其后的中断响应过程和处理过程都是一样。 (1)中断类型码的获取方式中断类型码的获取方式(2)可屏蔽中断的响应过程可屏蔽中断的响应过程(3)可屏蔽中断的处理过程可屏蔽中断的处理过程 7.2.4 中断响应过程66软件中断软件中断 对于专用中断,中断类型码是自动形成的,而对于INT n指令,其类型码即为指令中给定的n。 软件中断有以下特点: 中断由CPU内部引起,中断类型码的获得与外部无关, CPU不需要执行中断响应周期去获得中断类型码。 除单步中断外,内部中断无法用软件禁止,不受中断允许标志位的影响。 内部中断没有随机性,这一点与调用子程序非常相似。 (1 1)中断类型码的获取方式)中断类型码的获取方式67硬件中断硬件中断 非屏蔽中断非屏蔽中断: : 当CPU采样到非屏蔽中断请求时,自动提供中断类型码2,然后根据中断类型码查到中断向量表指针。(1 1)中断类型码的获取方式(续)中断类型码的获取方式(续)68硬件中断硬件中断 可屏蔽中断:可屏蔽中断: 当INTR信号有效时,如果IF=1,则CPU就会在当前指令执行完毕,响应外部的中断请求,转入中断响应周中断响应周期。期。 中断响应的第一个总线周期用来通知请求中断的外设, CPU准备响应中断,现在应该准备好中断类型码;在第二个总线响应周期中,要求外设在接到第二个负脉冲以后(第二个中断响应周期的T3状态前),立即把中断类型码通过数据总线传送给CPU。CPU在T4状态的前沿采样数据总线,获取中断类型码。如图所示:通过中断响应周期来获取中断类型码(1 1)中断类型码的获取方式(续)中断类型码的获取方式(续)6970(2 2)可屏蔽中断的响应过程)可屏蔽中断的响应过程 按新的地址指针执行中断服务程序。按新的地址指针执行中断服务程序。 从中断向量表中取中断服务程序的入口地址,分从中断向量表中取中断服务程序的入口地址,分别送至别送至CSCS和和IPIP中。中。 保存断点,即把断点处的保存断点,即把断点处的IPIP和和CSCS值压入堆栈,值压入堆栈,先压入先压入CSCS值,再压入值,再压入IPIP值。值。 清除清除IFIF和和TFTF标志,以禁止中断响应过程中其他标志,以禁止中断响应过程中其他可屏蔽中断的进入,同时也禁止了中断处理过程中出可屏蔽中断的进入,同时也禁止了中断处理过程中出现单步中断。现单步中断。 把把CPUCPU的标志寄存器的标志寄存器F F入栈,保护各个标志位入栈,保护各个标志位。 执行中断响应总线周期,执行中断响应总线周期,CPUCPU获得相应的中断获得相应的中断类型码,将它左移类型码,将它左移2 2位形成中断向量表指针,存入暂位形成中断向量表指针,存入暂存器存器。 71注意响应过程是由系统硬件自动完成的。响应时CPU执行相应的总线周期来实现。 72中断响应时中断响应时CPU实际执行的总线周期有实际执行的总线周期有7个个。 按新的地址指针执行中断服务程序。 从中断向量表中取中断服务程序的入口地址,分别送至CS和IP中。 保存断点,即把断点处的IP和CS值压入堆栈。 清除IF和TF标志。 把CPU的标志寄存器F入栈。 执行中断响应总线周期,CPU获得相应的中断类型码。2个中断响应总线周期1个存储器写总线周期2个存储器写总线周期2个存储器读总线周期73 中断处理过程就是中断处理过程就是CPUCPU执行中服执行中服务子程序完成的。务子程序完成的。 CPUCPU按照新的按照新的CS:IPCS:IP取指令,执行。取指令,执行。 7.2.5 中断处理过程74 可屏蔽中断的处理过程可屏蔽中断的处理过程(由中断服务程序中的软件指令来完成的) 开中断开中断IFIF1 1。(。(STISTI命令)命令) 恢复现场。(恢复现场。(POPPOP命令)命令) 关中断关中断IFIF0 0。(。(CLICLI命令)命令) 中断服务。(相应程序段)中断服务。(相应程序段) 开中断开中断IFIF1 1。(。(STISTI命令)命令) 进一步保护现场。(进一步保护现场。(PUSHPUSH命令)命令) 中断返回。(中断返回。(IRETIRET命令)命令)75执行中断返回指令执行中断返回指令IRETIPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后IRET指令将使CPU把堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处能够继续往下执行。76p 所有中断都是在当前指令结束后处理的,在80X86系统中各种中断源的优先权实际上是指被识别出来的先后。p 首先,自动查询软件中断软件中断。在指令执行过程中是否有除法出错中断、溢出中断和INT n中断发生。p 然后,查询NMINMI和INTRINTR。p 最后,查询单步中断单步中断,先查询到的先被响应。 77 80X86中断响应和处理流程 787.3.17.3.1 8259 8259的外部引脚的外部引脚7.3.27.3.2 8259 8259的内部结构的内部结构7.3.3 82597.3.3 8259的工作过程的工作过程7.3.4 82597.3.4 8259的工作方式的工作方式7.3.5 82597.3.5 8259的控制字的控制字7.3.1 8259A的外部引脚的外部引脚一、总线连接引脚二、级联缓冲引脚三、请求与应答引脚lIntel 8259A是一种可编程中断控制器,可协助CPU进行中断管理管理。其功能:接受和扩充外设的中断请求中断优先级排队提供中断类型号屏蔽或打开中断接受CPU命令或返回当前工作状态l一片8259A可直接管理8级中断,通过级联可扩展至64级中断。l通过对8259A进行编程,可设置多种工作方式,以满足不同中断系统的需要。80 7.3.1 8259A的外部引脚的外部引脚81 7.3.1 8259A的外部引脚的外部引脚82 7.3.1 8259A的外部引脚的外部引脚83 7.3.1 8259A的外部引脚的外部引脚7.3.1 8259A的外部引脚的外部引脚D7D0:8 8位双向的数据线,与系统数据总线位双向的数据线,与系统数据总线的低的低8 8位相连。位相连。RD和和WR:读读/ /写控制信号(输入)写控制信号(输入)A0:地址信号(输入),用来选择芯片内部地址信号(输入),用来选择芯片内部的端口。与系统地址总线的的端口。与系统地址总线的A1相连。相连。CS:片选信号(输入)。为有效低电平时,片选信号(输入)。为有效低电平时,8259才被选中。才被选中。一、总线连接引脚lCAS0CAS2:级连信号。出现的是发出中级连信号。出现的是发出中断请求的从片的编码。在断请求的从片的编码。在CPU发出中断响应发出中断响应信号时,主片向从片发出,指出是哪一个从信号时,主片向从片发出,指出是哪一个从片的请求被响应了。片的请求被响应了。主片8259A的 CAS2 CAS0 为输出。从片8259A的 CAS2 CAS0 为输入。7.1 8259A的外部引脚的外部引脚(续1)二、级联缓冲引脚级联缓冲引脚lSP/EN:主从定义主从定义/缓冲器工作信号缓冲器工作信号 当当8259工作在缓冲方式时,为输出工作在缓冲方式时,为输出EN:作为总线作为总线驱动器驱动器8286的允许工作信号,连至的允许工作信号,连至8286的的OE端。端。 当当8259工作在非缓冲方式时(未使用总线驱动器工作在非缓冲方式时(未使用总线驱动器),为输入),为输入SP:用来区分是主片还是从片。输入为高用来区分是主片还是从片。输入为高电平电平1时为主片,输入为低电平时为主片,输入为低电平0时为从片(主时为从片(主=1,从从=0)。)。 7.3.1 8259A的外部引脚的外部引脚 (续3)三、级联缓冲引脚级联缓冲引脚单片8259A最多可管理8级中断。当中断源多于8个时,需将多个8259A芯片级联构成主主从模式从模式。系统最多支持8个8259A芯片级联,即:最多可支持64个中断源。每个从片的IR7 IR0可直接与8个中断源相连,经过优先级判优后向主片主片发送INT信号。主片对所有从片发来的INT进行判优后,最终向CPU发INT信号。878259A 的级联方式的级联方式CAS0 IR0CAS1 IR1CAS2 IR2 IR3INTA IR4 IR5INT IR6 IR7SP/EN CAS0INTA CAS1 CAS2INT IR0 IR1SP/EN IR7CAS0 IR0CAS1 IR1CAS2 IR2 IR3INTA IR4 IR5INT IR6 IR7SP/ENINTAINTR+5VSP/EN 引脚用于区分引脚用于区分8259A是主片还是从片。高电平是主片还是从片。高电平为主片,低电平为从片。为主片,低电平为从片。主主/从片通过从片通过CAS2CAS0 互连。主片的互连。主片的CAS2CAS0为为输出,从片的输出,从片的CAS2CAS0 为输入。为输入。CPU发出发出第一个第一个INTA时,主片使时,主片使ISR相应的位置相应的位置1,使,使IRR的相应位清的相应位清0;并通过;并通过CAS2CAS0 输出一组输出一组从片的从片的编码编码 ID2ID0。从片收到该编码后,与自身从片收到该编码后,与自身 ICW3 中的中的D2D0 编码进行编码进行比较比较。若相同,则在。若相同,则在第二个第二个INTA信号将从片的信号将从片的中断类型中断类型号号送到数据总线。送到数据总线。89SP/EN 引脚用于区分引脚用于区分8259A是主片还是从片。高电平是主片还是从片。高电平为主片,低电平为从片。为主片,低电平为从片。主主/从片通过从片通过CAS2CAS0 互连。主片的互连。主片的CAS2CAS0为为输出,从片的输出,从片的CAS2CAS0 为输入。为输入。CPU发出发出第一个第一个INTA时,主片使时,主片使ISR相应的位置相应的位置1,使,使IRR的相应位清的相应位清0;并通过;并通过CAS2CAS0 输出一组输出一组从片的从片的编码编码 ID2ID0。从片收到该编码后,与自身从片收到该编码后,与自身 ICW3 中的中的D2D0 编码进行编码进行比较比较。若相同,则在。若相同,则在第二个第二个INTA信号将从片的信号将从片的中断类型中断类型号号送到数据总线。送到数据总线。lIR7IR0:8个中断源中断请求端(输入)个中断源中断请求端(输入)lINT:中断请求输出信号(输出)。与中断请求输出信号(输出)。与CPUCPU的的INTRINTR相连。(从片的相连。(从片的INTINT输出到主片的输出到主片的IR7IR7IR0IR0)lINTA:中断响应信号(输入)。接收中断响应信号(输入)。接收CPUCPU送送来的来的INTAINTA中断响应信号。中断响应信号。7.3.1 8259A的外部引脚的外部引脚(续1)三、请求与应答引脚8259端口分配及读写功能端口分配及读写功能l主主8259A的端口地址为20H20H和和21H21H。l主主片中断源的中断类型码为08H0FH08H0FH。l从从8259A的端口地址为0A0H和0A1H。l从从片中断源的中断类型码为70H77H。92四、PC机中8259A的端口地址分配五、PC机与8259A的连接7.3.2 7.3.2 8259A8259A的内部结构的内部结构一、总线连接部件二、级联缓冲/比较器三、中断处理部件四、控制逻辑95 7.3.2 8259A的内部结构的内部结构1. 数据总线缓冲器数据总线缓冲器8位的双向三态缓冲器,连接8259A与系统数据总线的D7D0。用于在CPU与8259A间传送命令、状态和数据信息。2. 读读/写控制逻辑写控制逻辑接收CPU的读写命令,完成对8259A内部端口的读写操作。具体操作内容由CS、RD、WR 和 A0 信号来决定。96一、8259的总线连接部件 7.3.2 8259A的内部结构的内部结构3. 级联缓冲级联缓冲/比较器比较器CAS0 CAS2 用于多块8259A的级联。97二、8259的级联缓冲级联缓冲/比较比较器器 7.3.2 8259A的内部结构的内部结构98 7.3.2 8259A的内部结构的内部结构4. 中断请求寄存器中断请求寄存器 (IRR)8位寄存器,通过引脚 IR0 IR7 与8个中断源相连。若IRi = 1,表明对应的中断源有中断请求,则 IRR寄存器相应的第 i 位置1。5. 中断屏蔽寄存器中断屏蔽寄存器 (IMR)8位寄存器,第 Mi 位为1,表示屏蔽 IRi 的请求。其值可通过软件设置或改变。99三、8259的中断处理部件 7.3.2 8259A的内部结构的内部结构6. 中断服务寄存器中断服务寄存器 (ISR)8位寄存器,用来记录CPU当前正在为哪个或哪几个中断源服务。当CPU响应响应 IRi 请求时,请求时,ISR中相应的位置中相应的位置1。当ISR中有多个1时,表明CPU处于中断嵌套中。当某个中断处理完毕,中断处理完毕,ISR相应的位复位相应的位复位。100 7.3.2 8259A的内部结构的内部结构7. 中断优先权判别电路中断优先权判别电路 PR对已进入IRR且未被IMR屏蔽的各中断请求进行优先权判别,确定优先级最高的中断,向CPU发送中断请求信号INT。若8259A正在为某一中断服务时,又出现了新的中断请求,则PR判断新的中断请求新的中断请求优先级是否更高。若是,则进入中断嵌套中断嵌套。101 7.3.2 8259A的内部结构的内部结构8. 控制逻辑控制逻辑作用:根据IRR、IMR和PR的状态,通过INT信号向CPU发送中断请求。接受来自CPU的中断响应信号INTA,使使 ISR相应的位置相应的位置1,且使,且使 IRR相应的位清相应的位清0,避免该中断源的一次请求产生多次中断。102四、8259的控制部件 7.3.2 8259A的内部结构的内部结构8. 控制逻辑(续控制逻辑(续1)内部包含7个寄存器:ICW1 ICW4 存放初始化命令字,用来设置8259A的工作方式和工作条件工作方式和工作条件等。OCW1 OCW3 存放操作命令字,用来对中断处理过程进行动态控制动态控制。四、8259的控制部件104ICW1ICW2ICW3ICW4OCW1OCW2OCW38. 控制逻辑(控制逻辑(2)四、8259的控制部件其中:其中:OCW1为为中断屏蔽寄存器中断屏蔽寄存器IMRIMR是是8位的位的寄存器寄存器,用于从硬件上屏蔽中断源。,用于从硬件上屏蔽中断源。如果如果IMR相应位为相应位为1,则对应中断源的中断请求被屏蔽,则对应中断源的中断请求被屏蔽(禁止)。(禁止)。只有相应位为只有相应位为0,则对应中断源的中断请求才能进入,则对应中断源的中断请求才能进入PR。几个缩写字母的含义几个缩写字母的含义IRR: 中断请求寄存器中断请求寄存器(Interrupt Request Register)IMR:中断屏蔽寄存器中断屏蔽寄存器(Interrupt Mask Register)ISR: 中断服务寄存器中断服务寄存器(In Service Register)PR: 优先级裁决器优先级裁决器 (Priority Resolver)ICW:初始化命令字初始化命令字(Initialization Command Word)OCW:操作命令字操作命令字 (Operation Command Word)106prart 107 7.3.2 8259A的内部结构的内部结构 7.3.3 8259的工作过程的工作过程 一、单片8259A 二、多片级连的系统 工作时,每次中断处理过程如下:当当 IR7 IR0 上有中断请求,则上有中断请求,则 IRR 中相应的位置中相应的位置1。若中断屏蔽寄存器若中断屏蔽寄存器IMR中的对应位为中的对应位为0,表示对此中断,表示对此中断未加屏蔽。让其通过进入未加屏蔽。让其通过进入PR。PR把新进入的中断请求与把新进入的中断请求与ISR中的正在服务的优先级比中的正在服务的优先级比较,若高于当前的服务级别,则通过较,若高于当前的服务级别,则通过INT(经与门经与门1),向,向CPU发中断请求。发中断请求。若若ISR=00hH,则优先权失效则优先权失效=1。中断请求可以通过与。中断请求可以通过与门门2并经并经INT引脚向引脚向CPU发申请。发申请。 7.3.3 8259的工作过程的工作过程一、单片8259AISR寄存器寄存器中断屏蔽寄存器中断屏蔽寄存器IMR中中断断请请求求优优先先级级编编码码器器中中断断请请求求寄寄存存器器IRR比比较较器器B0B1B2ABA0A1A2ISR编码编码ISR7 ISR6 ISR5 ISR4 ISR3 ISR2 ISR1 ISR0D0 D7IR0IR1IR2IR3IR4IR5IR6IR7中断优先权裁决电路优先权失效优先权失效中断请求信号中断请求信号12INTINT111 7.3.2 8259A的内部结构的内部结构五、8259的工作过程(续)CPU根据中断类型码,转入相应的中断服务子程序进根据中断类型码,转入相应的中断服务子程序进 行处理行处理112在中断响应周期:第一个第一个INTA:使使IRR的锁存功能失效,直到第的锁存功能失效,直到第2个个INTA到来。到来。使使ISR中的对应位置中的对应位置1。使使IRR中的对应位清中的对应位清0。第二个第二个INTA : 将将ICW2(中断类型寄存器)中的类型码经数据(中断类型寄存器)中的类型码经数据线送线送CPU。 若若8259采用采用“中断自动结束方式中断自动结束方式”(由(由ICW4决决定),则自动将定),则自动将ISR中的对应位清中的对应位清0。否则,在。否则,在中断程序中要通过命令将其清中断程序中要通过命令将其清0。二、多片级连的系统:二、多片级连的系统:主片:第一个主片:第一个INTA:使使IRR的锁存功能失效,直到第的锁存功能失效,直到第2个个INTA到来。到来。使使ISR中的对应位置中的对应位置1。使使IRR中的对应位清中的对应位清0。发出被响应的从片的编码。发出被响应的从片的编码。该从片在第一个该从片在第一个INTA : 在第二个在第二个INTA :将将ICW2(中断类型寄存器)中的类型码(中断类型寄存器)中的类型码送送CPU。若采用中断自动结束方式(由。若采用中断自动结束方式(由ICW4决定),则自动将决定),则自动将IS