![《微型计算机基本原理与应用》课件第9章 中断及中断控制器_第1页](http://file4.renrendoc.com/view/59577a78812c944d1dc55329b95db8c7/59577a78812c944d1dc55329b95db8c71.gif)
![《微型计算机基本原理与应用》课件第9章 中断及中断控制器_第2页](http://file4.renrendoc.com/view/59577a78812c944d1dc55329b95db8c7/59577a78812c944d1dc55329b95db8c72.gif)
![《微型计算机基本原理与应用》课件第9章 中断及中断控制器_第3页](http://file4.renrendoc.com/view/59577a78812c944d1dc55329b95db8c7/59577a78812c944d1dc55329b95db8c73.gif)
![《微型计算机基本原理与应用》课件第9章 中断及中断控制器_第4页](http://file4.renrendoc.com/view/59577a78812c944d1dc55329b95db8c7/59577a78812c944d1dc55329b95db8c74.gif)
![《微型计算机基本原理与应用》课件第9章 中断及中断控制器_第5页](http://file4.renrendoc.com/view/59577a78812c944d1dc55329b95db8c7/59577a78812c944d1dc55329b95db8c75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章中断及中断控制器本章主要内容1.中断及中断处理的基本概念2.80x86实模式中断系统3.可编程中断控制器8259A9.1基本概念9.1.1中断的定义在程序运行时,系统外部、内部或现行程序本身若出现紧急事件,处理器必须立即强行中止现行程序的运行,改变机器的工作状态并启动相应的程序来处理这些事件,然后再恢复原来的程序运行,这一过程称为中断。9.1.2中断响应和处理过程CPU在执行每条指令的适当时刻,检测中断请求信号。若发现中断请求信号有效,对于可屏蔽中断还必须CPU开放中断,则在下一机器周期进入中断响应周期。进入中断响应周期后,中断响应和处理的过程如下:1.关中断CPU在响应中断时,发出中断响应信号INTA,同时内部自动地关中断,以禁止接受其他的中断请求。2.保存断点把断点处的指令指针IP值和CS值压入堆栈,以使中断处理完后能正确地返回主程序断点。3.识别中断源CPU要对中断请求进行处理,必须找到相应的中断服务程序的入口地址,这就是中断的识别。4.保护现场为了不使中断服务程序的运行影响主程序的状态,必须把断点处有关寄存器(指在中断服务程序中要使用的寄存器)的内容以及标志寄存器的状态压入堆栈保护。5.执行中断服务程序在执行中断服务程序中,可在适当时刻重新开放中断,以便允许响应较高优先级的中断。6.恢复现场并返回即把中断服务程序执行前压入堆栈的现场信息弹回原寄存器,然后执行中断返回指令,从而返回主程序继续运行。在上述中断响应及处理的6项操作中,前3项是中断响应过程,一般由中断系统硬件负责完成。后3项是中断处理过程,通常是由用户或系统程序设计者编制的中断处理程序(软件)负责完成。针对一个具体的系统或机型,中断服务程序设计者应该清楚该系统在中断响应时,中断响应硬件完成了哪些操作(如程序状态字PSW是否已被压入堆栈),还需中断处理软件(中断服务程序)完成哪些操作。9.1.3中断优先级和中断嵌套1.中断优先级在实际系统中,多个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理,这时CPU必须确定服务的次序,即根据中断源的重要性和实时性,照顾到操作系统处理的方便,对中断源的响应次序进行确定。这个响应次序称为中断优先级(priority)。通常,可用软件查询法确定中断优先级,也可用硬件组成中断优先级编码电路来实现。现代PC机中多采用可编程中断控制器(如8259A)来处理中断优先级问题。(1)软件查寻法确定中断优先级采用软件查询法解决中断优先级只需要少量硬件电路。如图9.1所示,系统中有多种外部设备,将这些设备的中断请求信号相“或”,从而产生一个总的中断请求信号INTR发给CPU。图9.1软件查询接口电路磁盘磁带CRT显示键盘输入打印输出电源故障纸带输入保留INTR当CPU响应中断请求进入中断处理程序后,必须在中断处理程序的开始部分安排一段带优先级的查询程序,查询的先后顺序就体现了不同设备的中断优先级,即先查的设备具有较高的优先级,后查的设备具有较低的优先级。一般来说总是先查速度较快或是实时性较高的设备。软件查询的流程如图9.2所示。图9.2软件查询流程图保护现场恢复现场A申请服务?B申请服务?C申请服务?外设A中断服务程序NNN外设B中断服务程序外设C中断服务程序YYY(2)菊花链优先级排队电路菊花链(DaisyChain)优先级排队电路是一种优先级管理的简单硬件方案。它是在每个设备接口设置一个简单的逻辑电路,以便根据优先级顺序来传递或截留CPU发出的中断响应信号INTA,以实现响应中断的优先顺序。典型的菊花链优先级结构如图9.3(a)所示。图9.3菊花链优先级结构(a)菊花链排队电路中断请求CPU
INTR接口设备3接口设备2接口设备1菊花链逻辑菊花链逻辑菊花链逻辑中断响应信号集电极开路门+5V图9.3菊花链优先级结构(b)菊花链逻辑中断请求信号(高电平有效)中断响应信号(低电平有效)INTR2.中断嵌套当CPU正在执行优先级较低的中断服务程序时,允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。此时,CPU首先为级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低的那一级,继续为它进行中断服务。如图9.4所示。图9.4中断嵌套示意图STIIRETSTIIRET............中断嵌套的深度(中断服务程序又被中断的层次)受到堆栈容量的限制。所以在编写中断服务程序时,必须要考虑有足够的堆栈单元来保留多次中断的断点信息及有关寄存器的内容。9.280x86实模式的中断系统9.2.1中断的分类中断分类的方式很多。根据进入中断的方式可分为自愿中断和强迫中断。根据其重要性可分为可屏蔽中断和不可屏蔽中断。根据中断源的位置可分为内部中断和外部中断等等。如图9.5所示。图9.580x86实模式系统的中断分类INTn指令中断逻辑断点中断(INT3)溢出中断(INTO,OF=1)单步中断(TF=1)除法错中断软件中断(内部中断)非屏蔽中断请求中断控制器(8259A)NMIINTRIRQ0....IRQ7可屏蔽中断
硬件中断(外部中断)关于中断分类的补充说明为了支持多任务和虚拟存储器等功能,80386及以上CPU把外部中断称为“中断”(interrupt),把内部中断称为“异常”(exception)。与8086一样,它也最多处理256种中断和异常。根据引起异常的程序是否可被恢复和恢复点的不同,又把异常分为三类:
故障(fault)
陷阱(trap)
中止(abort)把对应的异常处理程序分别称为故障处理程序、陷阱处理程序和中止处理程序。故障是在引起异常的指令之前,把异常通知给系统的一种异常。故障的特点是可以排除的。
例如,在执行一条指令时,如果发现它要访问的段不在内存中,那么停止该指令的执行,并产生一个段不存在异常,对应的故障处理程序可通过从外存加载该段到内存的方法来排除故障。之后,原引起异常的指令就可以继续执行,就不再产生异常。陷阱是在引起异常的指令执行之后触发的一种异常。在转入异常处理程序时,引起陷阱的指令已完成。陷阱处理程序执行完,返回到引起陷阱指令的下一条指令。软中断指令INTn是陷阱的例子。中止是在系统出现严重的不可恢复的事件时触发的一种异常。产生中止后,正执行的程序不能恢复执行,系统要重新启动才能恢复正常运行状态。9.2.2中断向量表所谓中断向量(interruptvector),实际上就是中断服务程序的入口地址,每个中断类型对应一个中断向量。每个中断向量占4字节的存储单元。其中:前两个字节单元存放中断服务程序入口地址的偏移量(IP),低字节在前,高字节在后;后两个字节单元存放中断服务程序入口地址的段基值(CS),也是低字节在前,高字节在后。80x86实模式系统允许引入的中断可达256个,因此需占用1K字节的存储空间来存放这256个中断服务程序入口地址。80x86实模式系统把中断服务程序入口地址信息设置在存储器的最低端,即从00000H~003FFH的1K字节存储空间中。这一存储空间就叫中断向量表,如图9.6所示。图9.6实模式系统的中断向量表CSIPCSIPCSIPCSIPCSIPCSIPCSIP︽︾︽︾︽︾︽︾类型255(十进制)类型32类型31(十进制)供用户定义的中断(共224个)类型5类型4类型3类型2类型1类型0保留的中断(共27个)专用的中断(共5个)0000:03FFH0000:007FH0000:007EH0000:0014H0000:0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H溢出中断断点中断非屏蔽中断单步中断除数为0中断在中断向量表中,各中断向量按中断类型码从0到255顺序存放。这样,知道了中断类型码,很快就可算出相应中断向量的存放位置,从而取出中断向量。例如,中断类型码为27H的中断所对应的中断向量应存放在从0000H:009CH开始的4个连续字节单元中。如果相应存储单元的内容如图9.7所示,那么27H号中断的中断服务程序的入口地址即为8765H:4321H。图9.7中断向量的存放格式87H65H43H21H0000:009FH0000:009CH由于中断向量在中断向量表中是按中断类型码(也称中断向量号)顺序存放的,所以每个中断向量的地址可由中断类型码乘以4计算出来。CPU响应中断时,只要把中断类型码N左移2位(乘以4),即可得到中断向量在中断向量表中的对应地址4N(该中断向量所占4个字节单元的第一个字节单元的地址)。然后把由此地址开始的两个低字节单元的内容装入IP寄存器:IP←(4N,4N+1)
再把两个高字节单元的内容装入CS寄存器:
CS←(4N+2,4N+3)这就是使程序转入中断类型码为N的中断服务程序的控制过程,如下面例1所示。至于中断类型码N的来源,对于不同的中断类型(内部中断、外部中断),情况有所不同,详见后述。例9.1
若中断类型码为3,则由中断类型码取得中断服务入口地址的过程如图9.8所示。图9.8根据中断类型码取得中断服务程序入口地址OOH(IPL)0AH(IPH)00H(CSL)1EH(CSH)中断服务程序00000H00001H0000CH(0000:000CH)
1EA00H(1E00:0A00H)FFFFFH高地址低地址3×4=000CH(中断向量地址)例9.2
中断类型码为20H,则中断服务程序的入口地址存放在中断向量表从0000:0080H开始的4个字节单元中。若这4个字节单元的内容分别为:(0000:0080H)=10H(0000:0081H)=20H(0000:0082H)=30H(0000:0083H)=40H试指出相应的中断服务程序的入口地址。解:
中断服务程序的入口地址为
。例9.3
中断类型码为17H,若中断服务程序的入口地址为2340H:7890H,试指出中断向量表中存放该中断向量的4个字节单元的地址及内容。解:
由于中断类型码为17H,所以中断向量表中存放相应中断向量的4个字节单元的地址分别为0000:005CH、0000:005DH、0000:005EH、0000:005FH,4个字节单元的内容分别为
。9.2.3外部中断由外部的中断请求信号启动的中断,称为外部中断,也称硬件中断。80x86CPU为外部中断提供两条引线,即NMI和INTR,用来输入中断请求信号。1.非屏蔽中断从NMI引脚进入的中断为非屏蔽中断,它不受中断允许标志IF的影响。非屏蔽中断的类型码为2,因此,非屏蔽中断处理子程序的入口地址存放在08H、09H、0AH和0BH这4个字节单元中。2.可屏蔽中断一般外部设备请求的中断都是从CPU的INTR端引入的可屏蔽中断。当CPU接收到一个可屏蔽中断请求时,如果中断允许标志IF为1,那么CPU就会在执行完当前指令后响应这一中断请求。下面以8086系统为例,具体介绍一下可屏蔽中断的响应时序。图9.98086的中断响应总线周期T1T2T3T4TITITIT1T2T3T4第一个总线周期第二个总线周期三个空闲状态中断类型码CLK____INTAAD7~AD09.2.4内部中断内部中断也称软件中断。它是由于CPU执行了INTn(含INT3)、INTO指令,或者由于除法出错以及进行单步操作所引起的中断,主要包括INTn指令中断、断点中断、溢出中断、除法错中断以及单步中断。(1)INTn指令中断。80x86系统提供了直接调用中断处理子程序的手段,这就是中断指令INTn。指令中的中断类型码n告诉CPU调用哪个中断处理子程序。(2)除法错中断(类型0)在执行除法指令DIV或IDIV后,若所得的商超出了目标寄存器所能表示的范围,比如用数值0作除数,则CPU立即产生一个0型中断。(3)溢出中断(类型4)若上一条指令执行的结果使溢出标志位OF置1,则紧接着执行INTO指令时,将引起类型为4的内部中断,CPU将转入溢出错误处理。若OF=0时,则INTO指令执行空操作,即INTO指令不起作用。
INTO指令通常安排在算术运算指令之后,以便在发生溢出时能及时处理。典型情况如表9-1所示。表9-1溢出中断的相应和处理主程序中断服务程序OVERFLOW:PUSHAXPUSHBXPUSHCXPUSHDXADDAX,BX;若OF=1溢出处理INTO(包括输出某些提示信息)POPDXPOPCXPOPBXPOPAXIRET............
(4)单步中断(类型1)当把CPU标志寄存器的TF位置为1以后,CPU便处于单步工作方式。在单步工作方式下,CPU每执行完一条指令,就会自动产生一个1型中断,进入1型中断处理程序。此处理程序显示CPU内部各寄存器的内容并告知某些附带的信息。(5)断点中断(类型3)与单步中断类似,断点中断也是一种调试程序的手段,并且常常和单步中断结合使用。对一个大的程序,不可能对整个程序全部用单步方式来调试,而只能先将程序中的某一错误确定在程序中的一小段中,再对这一小段程序用单步方式跟踪调试。断点中断就是用来达到这个目的的。在所有INTn形式的指令中,只有断点中断指令INT3是一条单字节长的指令,其他中断指令都是两字节指令。图9.10断点的设置ADDAL,BLJMP201HINCALCMPAL,0FFHJL200H不转移转移断点1FCH,1FDH1FEH,1FFH200H201H,202H203H,204H内部中断的特点是:(1)中断类型码由CPU内部自动提供(含从INTn指令中自动提取),不需要执行中断响应总线周期(INTA总线周期)去读取中断类型码。(2)除单步中断外,所有内部中断都不可以用软件的方法来禁止(屏蔽)。单步中断可以通过软件将TF标志置1或清0来予以允许或禁止。(3)除单步中断外,所有内部中断的优先级都比外部中断高。9.2.5中断响应和中断处理过程1.可屏蔽中断的响应和处理过程图9.11给出了可屏蔽中断从中断请求信号产生到中断服务程序结束并返回被中断程序的全过程。图9.11可屏蔽中断全过程INTR____INTAIPCSPSW(FR)中断类型码寄存器②CPU完成现行指令,发出中断响应信号Q中断请求中断屏蔽①接口发中断请求信号INTR③CPU读取中断类型码N新的(IP)新的(CS)旧的(IP)旧的(CS)旧的(PSW)被中断的程序.....STI...IRET中断服务程序...存储器中断向量表︽︽︽︽16位4N4N+2⑤清除IF和TF⑦转入中断服务程序⑩返回被中断的程序⑧开放中断(可选)④现行PSW、CS、IP压栈⑨IRET指令使旧的IP、CS、PSW弹出堆栈CPU外设接口⑥取CS、IP新值判断与思考:
若在主程序中已使IF=1(开中),则在响应中断请求并执行完中断服务程序返回主程序后,IF标志位是否为1决定于在中断服务程序中是否执行了STI指令。2.80x86实模式中断响应和中断处理过程
80x86实模式中断响应和处理流程如图9.12所示。图9.1280x86实模式中断响应和中断处理过程中断优先级除法错,INTn,INTO最高NMIINTR单步最低80x86实模式中断优先级结束当前指令除法错,INTO,INTn?NMIINTR?TF=1?执行下一条指令NNNNIF=1?NYYYYY内部自动形成中断类型码N读中断类型码N标志压入堆栈令TEMP=TF清除IF和TFCS和IP压入堆栈(4N,4N+1)IP(4N+2,4N+3)CS执行中断处理程序IP、CS出栈标志寄存器出栈返回被中断的主程序有NMI?TEMP=1?YYNN执行IRET指令①‘①②③④⑤⑥需要说明的是,在图9.12所示的中断响应和处理过程中,其中的①~⑥步(含①′)是由处理器内部的中断系统硬件自动完成的,即无需程序员的直接控制和干预;其后的中断处理过程则是通过执行中断服务程序(软件)来完成的。9.3可编程中断控制器8259A
(8259AProgrammableInterruptController-PIC)
Intel8259A用于管理和控制80x86的外部中断请求,实现优先级判决,提供中断类型码,屏蔽中断输入等功能。使用单片8259A可以管理8级中断,采用级联方式,可扩充到64级(用9片8259A)。9.3.18259A的引脚功能封装形式28脚双列直插(28-pinDIP),DIP:Dual-In-linePackage,如图9.13所示。123456789101112131428272625242322212019181716158259A
CS
WRRDD7D6D4D5D2D3D0D1CAS0CAS1GNDINTAIR7IR6IR4IR5IR2IR3IR0IR1INTCAS2SP/ENVCCA0
-片选信号(ChipSelect)低电平有效,来自地址译码器的输出只有
有效时,CPU才能对8259A进行读写操作。-写信号,低电平有效,来自CPU的输出;当有效且有效时,使8259A接受CPU送来的命令字。-读信号,低电平有效,来自CPU的输出;当有效且有效时,使8259A将状态信息放到数据总路线上,供CPU检测。CSWRCSCSCSRDRDWRWRRDD7~D0:双向数据总线,接到系统数据总线的D7~D0
上,用来传送控制字、状态字和中断类型号。IR7~IR0
:中断请求信号,输入,来自外部接口电路。(单片时)INT:向CPU发出的中断请求信号。(单片时)。INTA:中断响应信号,由此接收CPU发来的中断响应脉冲。A0:地址输入信号,用于对8259A内部寄存器的寻址。CAS2~CAS0:级联线(CASCADE
LINES),传送3位标识码,用于区分特定的从控制器。双向:对于主片为输出,对于从片为输入。
:从片/允许缓冲器信号。双功能引脚:作为输入时,8259A作为主片(
=1) 8259A作为从片(=0)作为输出时,用来启动(允许)数据总线收发器(如8286)。
*究竟是作为输入还是输出,取决于8259A是否工作于“缓冲方式”(即8259A是否通过一个“数据总线收发器”与系统总线相连)。详见后面ICW4的格式。SP/ENSP/ENSP/EN9.3.28259A的内部结构
8259A的内部逻辑结构如图9.14所示。图9.148259A的内部逻辑结构数据总线缓冲器读/写控制电路级连缓冲器/比较器中断服务寄存器(ISR)中断请求寄存器(IRR)优先权判别器(PR)中断屏蔽寄存器(IMR)控制电路
SP/EN。。。IR0IR1IR2IR6IR7内部总线CAS0CAS1CAS2____INTAINT
WR
RDCSA0D7~D0
CPUAD7~AD0INTAINTRSP/ENISRICW1OCW1
(IMR)
ICW2OCW2ICW3OCW3ICW4PRIRRD7~D0地址译码...INTINTACSRDWRA0CAS0CAS1CAS2...IR7IR0
8259A的编程结构IRR—InterruptRequestRegisterPR---PriorityResolverISR---In-ServiceRegisterIMR---InterruptMaskRegisterICWs---InitializationCommandWordsOCWs---OperationCommandWords7个CPU可访问的寄存器,分两组:初始化命令字ICW1~ICW4---系统初启时设定。操作命令字OCW1~OCW3—系统运行时,由应用程序设定(实现对中断处理的动态管理和控制).TheOCWscanbewrittenintothe8259Aanytimeafterinitialization.(手册P6-P7)。7个寄存器的寻址问题:
规规定:A0
ICW1:用偶地址写入,且D4=1ICW2ICW3ICW4紧接着ICW1,用奇地址写入OCW1:也用奇地址写入,但不紧跟ICW1OCW2OCW3也用偶地址写入,但D4=0即:000采用了专门的“标识位”,以节省输入地址的引脚数(仅用了A0)8259A的处理部件:中断请求寄存器IRR-8位寄存器+控制逻辑
作用:接受并锁存来自IR0~IR7的中断请求信号。中断服务寄存器ISR
作用:保存当前正在处理的中断请求。优先级裁决器PR
作用:把新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。9.3.38259A的工作过程IR0~IR7上出现某一中断请求信号->IRR对应位被置“1”->由IMR的相应位决定是否将其屏蔽(屏蔽位=1,不通过;屏蔽位=0,通过)->中断请求进PR->PR把新进入的中断请求和当前正在处理的中断进行优先级比较->若新进入的中断优先级高,该中断请求被送到CPU。若CPU的IF=1,CPU完成当前指令后,响应中断,在引脚上发出两个负脉冲(执行两个中断响应总线周期),在第2个中断响应总线周期,8259A送出中断类型码N。INTAT1T2T3T4TITITIT1T2T3T4第一个总线周期第二个总线周期三个空闲状态中断类型码CLK____INTAAD7~AD08259A收到第一个负脉冲后:使IRR锁存允许,不予接受IR0~IR7上的中断请求信号;直到第二个负脉冲结束后,才又使IRR锁存禁止(输入输出透明)。使ISR的相应位置“1”,以便为优先级裁决器以后的裁决提供依据。清除IRR的相应位。8259A收到第二个负脉冲后:把中断类型码寄存器的内容(ICW2的内容)送到D7~D0如果ICW4的AEOI位为1,则在第二个脉冲结束时,将ISR中被第一个脉冲置“1”的位清除(自动结束);否则,要等到中断结束命令(EOI)发送后才能清除。INTAINTA9.3.48259A的工作方式1.设置优先级的方式(1)全嵌套方式(FULLYNESTEDMODE)也称固定优先级方式。在这种方式下,由IRi引入的中断请求具有固定的优先级-IR0(最高)->IR7(最低).Thismodeisenteredafterinitializationunlessanothermodeisprogrammed.当一个中断请求被响应时,ISR中的对应位ISn被置“1”,8259A把中断类型码放到数据总线上,然后,进入中断服务程序。一般情况下(除了“中断自动结束”方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持为“1”-封锁同级或低级的中断响应,但并不禁止比本级优先级高的中断响应-实现中断“嵌套”。(2)特殊全嵌套方式(SPECIALFULLYNESTEDMODE-SFNM)在处理某一级中断时,不但允许优先级更高的中断请求进入,也允许同级的中断请求进入。用于主从结构的8259系统中,将主片设置为“特殊全嵌套方式”。通过ICW4的“SFNM”位可以设置此种方式。CPUIR0IR1IR7…IR0IR1IR7…8259(主片)8259(从片)
(3)优先级自动循环方式(AUTOMATICROTATION)优先级是循环变化的(不希望有固定的优先级差别)-一个设备的中断服务完成后,其优先级自动降为最低,而将最高优先级赋给原来比它低一级的中断请求。开始时,优先级队列还是:IR0->IR7,若此时出现了IR0请求,响应IR0并处理完成后,队列变为:IR1,IR2,IR3,IR4
,IR5
,IR6
,IR7,IR0。若又出现了IR4请求,处理完IR4后,队列变为:__________________________________系统中是否采用“自动循环优先级”,由 操作命令字OCW2来设定。(4)优先级特殊循环方式(SPECIFICROTATION)与“优先级自动循环方式”相比,只有一点不同,即可以设置开始的最低优先级。例如,设定IR4为最低优先级,那么IR5就是最高优先级,其余各级按循环方法类推。2.屏蔽中断源的方式(中断屏蔽方式)普通屏蔽方式通过对中断屏蔽寄存器(IMR)的设定,实现对相应位为“1”的中断请求的屏蔽。可通过OCW1使IMR的一位或几位置“1”。*特殊屏蔽方式(SPECIALMASKMODE)作用:P285实现:输出OCW3(ESMM=1,SMM=1)输出OCW1(使IMR对应于本级的位为“1”)…………输出OCW1(使IMR对应于本级的位为“0”)输出OCW3(ESMM=1,SMM=0)“中断级无效”设置撤销
3.中断结束方式(ENDOFINTERRUPT-EOI)(1)中断自动结束方式(AUTOMATIC-AEOI方式)在第二个后沿,即完成把对应的ISR位复位。注意:AEOI方式是在中断响应后,而不是在中断处理程序结束后将ISR位清0。这样,在中断处理过程中,8259A中就没有“正在处理”的标识。此时,若有中断请求出现,且IF=1,则无论其优先级如何(比本级高、低或相同),都将得到响应。尤其是当某一中断请求信号被CPU响应后,如不及时撤销,就会再次被响应-“二次中断”。INTA所以,AEOI方式适合于中断请求信号的持续时间有一定限制以及不出现中断嵌套的场合。通过ICW4可以设置AEOI方式(AEOI=1)。(2)一般(常规)中断结束方式适合于全嵌套方式。实现:在中断服务程序结束时,向8259A发常规中断结束命令(OCW2:EOI=1,SL=0,R=0)例:MOVAL,20H;OCW2=20HOUT20H,AL;端口地址=20H(偶地址)在全嵌套方式下,ISR中最高优先级的置“1”位,正对应于当前正在处理的中断,将其清“0”,就完成了当前正在处理中断的结束操作。…10111IR0IR7(3)特殊中断结束方式(SPECIFICEOI-SEOI)在非全嵌套方式下,无固定的优先级序列(使用设置优先权命令或特殊屏蔽方式),此时,根据ISR的内容就无法确定刚刚所响应(处理)的中断。这种情况下,就不能用上述的EOI方式进行中断结束处理,而必须用特殊的中断结束命令SEOI--用OCW2:EOI=1,SL=1,R=0,L2~L0.由L2~L0指定清除ISR中的哪一位。4.中断触发方式电平触发方式:由IRi上的有效电平来触发“中断请求触发器”。边沿触发方式:由IRi上由低电平向高电平的跳变来触发“中断请求触发器”。由ICW1的LTIM位可以设置中断触发方式。5.连接系统总线的方式缓冲方式(ICW4的BUF=1)8259A通过总线驱动器(如8286)和数据总线相连。在缓冲方式下,8259A的作为输出(有效),此时,由ICW4的M/S位来定义(标识)本8259A是主片还是从片。非缓冲方式(ICW4的BUF=0)即8259A直接与数据总线相连在“非缓冲方式下”,8259A的作为输入(
有效)
此时,由端来标识本8259A是主片还是从片。在“非缓冲方式下”,ICW4的BUF=0,M/S位无意义。SP/ENENSP/ENSPSP/EN“中断查询”方式特点:既有中断的特点,又有查询(Polling)的特点。外设仍然向8259A发中断请求信号,要求CPU服务。CPU的IF=0,不响应外部的中断请求(对CPU的中断请求信号不起作用)此时,CPU需要用软件查询方法来确认中断源,从而实现对设备的服务先向8259A发查询命令(pollcommand)OCW3:00001100P紧接着执行一条读指令(IN指令),读出专门的“中断状态字”:当8259A收到P=1的查询命令后,在下一个信号将使ISR的相应位置“1”,就像收到了一样,并把上述的“中断状态字”送到数据总线上,由CPU读入AL。0A0IR----W2W1W0D7D01:有设备请求服务;0:无设备请求服务。当前最高优先级的中断请求RDINTA9.3.68259A的控制字及编程使用8259A的控制寄存器可分为两组,一组是初始化命令字ICW1~ICW4,另一组是操作命令字OCW1~OCW3。每片8259A具有两个内部端口地址,一个偶地址端口(A0=0),一个奇地址端口(A0=1),其他高位地址码由用户定义,用来产生8259A的片选信号。1.初始化命令字初始化命令字用来对8259A初始化,包括ICW1~ICW44个初始化命令字。(1)ICW1ICW1
使用偶地址端口(A0=0),其中D4位为特征位(标志位),此时该位固定为1,表示当前写入的是ICW1(OCW1
也用偶地址端口写入,但OCW1
的D4
位为0)。ICW1的格式如下:A7A6A51LTIMADISNGLIC40ICW1A0D7D6D5D4D3D2D1D0
初始化命令字ICW1格式IC4规定初始化时是否要写入ICW4。IC4=0表示不写入,IC4=1表示写入。SNGL规定8259A的用法。SNGL=0表示为级联方式,同时要写入ICW3;SNGL=1表示为单片方式,不要写入ICW3。ADI为配合8085工作时选用CALL指令字节数而设,80x86不用这一位。LTIM规定中断检测方式。LTIM=0表示边沿触发,LTIM=1表示电平触发。A5~A7
在8085微处理器中用这几位作中断向量字,80x86不用这三位。(2)ICW2ICW2使用奇地址端口(A0=1),紧跟在ICW1之后设置。ICW2的格式如下:A15/T7A14/T6A13/T5A12/T4A11/T3A10A9A81ICW2A0D7D6D5D4D3D2D1D0
初始化命令字ICW2格式对于80x86系统,ICW2的D7~D3位用来确定中断类型码N的高5位,低3位D2~D0未定义。高5位D7~D3,由ICW2在初始化编程时设定;低3位D2~D0则由8259A根据中断进入的引脚序号而自动填入,从IR0~IR7依次为000~111。例:若将ICW2
初始化为28H,则在中断响应总线周期从数据总线上向CPU送出的对应于IR2的中断类型码为2AH,对应于IR3的中断类型码为
等。(3)ICW3ICW3只在级联方式中使用,端口地址为奇地址,其格式如下:S7S6S5S4S3S2/ID2S1/ID1S0/ID01ICW3A0D7D6D5D4D3D2D1D0
初始化命令字ICW3格式对于主片8259A,ICW3表示哪些IR引脚接有从片8259A。接有从片8259A的相应S位置1,否则置0。例如,若IR2、IR6
上接有从片8259A,且其他IR引脚未接有从片8259A,则ICW3为01000100。对于从片8259A,用ICW3中的ID2~ID0
表示本8259A接在主片8259A的哪一根IR引脚上。与IR0~IR7分别对应的ID码为000~111。例如,若从片8259A接在主片8259A的IR6
上,则从片8259A的ICW3应设定为:
ID2=1,ID1=1,ID0=0(4)ICW4在80x86系统中必须设置ICW4,端口地址为奇地址,其格式如下:000SFNMBUFM/SAEOIμPM1ICW4A0D7D6D5D4D3D2D1D0
初始化命令字ICW4格式其中,μPM规定是哪种系统。μPM=0表示是8080/8085系统,μPM=1表示是80x86系统。AEOI表示中断结束方式。AEOI=0为普通EOI方式,AEOI=1表示自动EOI方式。BUF表示本8259A工作于缓冲方式还是非缓冲方式。BUF=1为缓冲方式,BUF=0为非缓冲方式。在缓冲方式下,SP/EN引脚作为输出能使信号给总线收发器。此时,由M/S位来定义本8259A是主片还是从片。所谓8259A工作于缓冲方式,是指在多片8259A级联的大系统中,8259A通过总线收发器(驱动器)和数据总线相连。M/S位用来在缓冲方式下规定本8259A是主片还是从片。M/S=0表示是从片,M/S=1表示是主片。在非缓冲方式(BUF=0)下,M/S位无效。SFNM表示中断嵌套方式。SFNM=0表示全嵌套方式,SFNM=1表示特殊全嵌套方式。8259A的初始化流程8259A的初始化命令字(ICW)是在加电之后由CPU按特定的顺序写入的。也就是说,各初始化命令字的识别一方面依赖于地址信号A0和初始化命令字中的特定标识位,另一方面也与写入的先后次序有关。8259A的初始化顺序及相应的寻址标志如图9.17所示。开始ICW1(A0=0D4=1)ICW2(A0=1)SNGL=0?(级联方式?)ICW3(A0=1)IC4=1?ICW4(A0=1)准备好接受中断NNYY①在初始化操作过程的开头,总要依次写入命令字ICW1和ICW2。②只有当ICW1中的SNGL位=0,才需写入ICW3。对于主片和从片均需写入ICW3,而且它们的格式不同。③只有当ICW1中的IC4=1时,才需写入ICW4。对于80x86系统,ICW4总是需要设置的。在系统中,单片8259A与80x86CPU配置时,初始化要写入的预置命令字是:ICW1、ICW2、ICW4
。而级联系统要写入预置命令字是:ICW1、ICW2、ICW3和ICW4。初始化过程结束,8259A进入所设置的状态后,才能写入操作命令字(OCW)。2.操作命令字在8259A工作期间,可通过设置操作命令字来修改或控制8259A的工作方式。需要说明的是,与初始化命令字ICW1~ICW4需要按规定的顺序进行设置不同,操作命令字OCW1~OCW3
的设置没有规定其先后顺序,使用时可根据需要灵活选择不同的操作命令字写入到8259A中。当然,也需注意奇、偶端口地址及有关标识位的规定。(1)OCW1OCW1
为中断屏蔽操作命令字,用来实现中断屏蔽功能,要求写入8259A的奇地址端口(A0=1)。OCW1
的内容被直接置入中断屏蔽寄存器IMR中,其格式如下:M7M6M5M4M3M2M1M01OCW1A0D7D6D5D4D3D2D1D0
操作命令字OCW1其中M0~M7
分别对应8259A的IR0~IR7。当OCW1
中的Mi位为1时,则相应的IRi的中断请求就被屏蔽。例如,若通过OCW1向中断屏蔽寄存器写入代码11110000,将导致中断输入IR7~IR4被屏蔽掉,而IR3~IR0撤销屏蔽。(2)OCW2OCW2
用来设置优先级循环方式和中断结束方式。占用偶地址端口(A0=0)。OCW2
的格式如下:RSLEOI00L2L1L00OCW2A0D7D6D5D4D3D2D1D0
操作命令字OCW2其中,D4D3=00是OCW2
的标识位。R表示中断优先级是否按循环方式设置。R=1表示采用循环方式,R=0表示采用非循环方式。SL表示OCW2
中的L2、L1、L0
是否有效。SL=1表示有效,SL=0表示无效。EOI为中断结束命令位。EOI=1使当前ISR寄存器的相应位清0。当ICW4中的AEOI为0时,ISR中的相应置1位就要由该命令位来清除。L2、L1、L0
在SL=1时配合R、SL、EOI的设置,用来确定一个中断优先级的编码。L2、L1、L0
的8种编码000~111分别与IR0~IR7相对应。由R、SL、EOI三位可以定义多种不同的中断结束命令或优先级循环方式。综合起来,R、SL、EOI的设置与其代表的意义如表9-1所示。表9-2R、SL、EOI的设置及意义RSLEOI意义001普通EOI命令011特殊EOI命令101普通EOI循环命令111特殊EOI循环命令000自动EOI循环方式(复位)100自动EOI循环方式(置位)110置优先权命令010无操作(3)OCW3OCW3
的端口为偶地址(A0=0),其格式如下:ESMMSMM01PRRRIS0OCW3A0D7D6D5D4D3D2D1D0
操作命令字OCW3其中D4D3=01是OCW3的特征位。ESMM是特殊屏蔽方式允许位,SMM是特殊屏蔽方式位。当ESMM为0时,SMM的值不起用。当ESMM为1时,由SMM位决定是否工作在特殊屏蔽方式。当ESMM=1,SMM=0时,表示8259A不是工作在特殊屏蔽方式。当ESMM=SMM=1时,表示8259A工作在特殊屏蔽方式。P是查询命令(PollCommand)标识位。当P=1时,表示向8259A发查询命令,查询当前是否有中断请求,以及在有中断请求时,当前正在请求的中断最高优先级是哪一级。查询的中断状态字的格式如下:IR------------W2W1W00A0D7D6D5D4D3D2D1D00:无中断请求1:有中断请求当前正在请求的中断的最高优先级
中断状态字RR和RIS位在P=0时才有效。当P=0时,RR=1,RIS=0表示在下一条读指令时读IRR(用偶地址);RR=1,RIS=1表示在下条读指令时读ISR(用偶地址)。8259A初始化编程举例例9.6
对8259A按下述要求进行初始化编程:(1)工作于80x86系统,单片8259A,边沿触发方式。(2)中断类型码初始值为08H,即IR0~IR7对应的中断类型码为08H~0FH。(3)中断结束时,用普通中断结束命令,固定优先级。
8259A的端口地址为20H,21H。实现上述要求的初始化程序如下:MOVAL,13H;ICW1,边沿触发,单片8259A,要写ICW4OUT20H,ALMOVAL,08H;ICW2,中断类型码初值为08HOUT21H,ALMOVAL,0DH;ICW4,缓冲方式,80x86系统,普通EOI方式OUT21H,AL;在中断服务结束时,需向8259A设置操作命令字OCW2=20H,如下所示:MOVAL,20H;OCW2,普通EOI命令OUT20H,AL普通用户在使用系统资源时,不应该也没有必要去改变系统对8259A的初始化编程设定。8259A的读出操作:可以读出四个方面的内容读“中断状态字”(“查询字”):先写入P=1的OCW3查询命令字用偶地址读(INAL,20H)读IRR:先写入OCW3(RR=1,RIS=0)用偶地址读(INAL,20H)读ISR:先写入OCW3(RR=1,RIS=1)用偶地址读(INAL,20H)随时可用奇地址读IMR
(INAL,21H)例1:
INAL,21H;读IMRANDAL,7FH;开放IR7中断
OUT21H,AL例2:
INAL,21H;读IMRORAL,80H;关闭IR7中断
OUT21H,AL9.3.78259A应用举例1.8259A在IBMPC/XT中的应用IBMPC/XT微型计算机只用一片8259A作为整个系统的中断控制器,可连接8个外部中断源,其连线结构、中断源名称、中断类型码的情况如图9.18及表9-3所示。图9.188259A在IBMPC/XT中的连线结构8259AIR0IR1IR2IR3IR4IR5IR6IR7INT
____INTAIRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7日时钟定时器键盘保留串行通信口1串行通信口2硬磁盘软磁盘打印机8086/8088CPUINTR
____INTA2.8259A在IBMPC/AT中的应用外部中断源数大于8个,所以采用两片8259A组成中断系统。其中主片8259A的功能与上面介绍的IBMPC/XT中的8259A功能相同,而从片8259A则负责管理系统中增加的中断源,从片的中断请求信号INT和主片8259A的IR2输入端相连。主片和从片的CAS0~CAS2依次连接,但此时主片8259A的CAS0~CAS2
作为输出,而从片8259A的CAS0~CAS2则作为输入。IBMPC/AT中的2片8259A的连接结构如图9.19所示。主片采用“特殊全嵌套方式”,从片采用“全嵌套方式”。系统的中断优先级队列为:IRQ0>IRQ1>IRQ8>IRQ9>IRQ10…IRQ15>IRQ3>IRQ4>IRQ5>IRQ6>IRQ7
主片从片主片图9.198259A在IBMPC/AT中的应用80286CPU____INTAINTR8259A(主片)
IR0IR1IR2IR3IR4IR5IR6IR7IRQ0IRQ1
IRQ3IRQ4IRQ5IRQ6IRQ7日时钟键盘串行通信1串行通信2硬磁盘软磁盘打印机8259A(从片)
IR0IR1IR2IR3IR4IR5IR6IR7____INTAINT____INTAINTCAS0CAS1CAS2IRQ8IRQ9IRQ10IRQ11IRQ12IRQ13IRQ14IRQ15保留实时时钟INT0AH
80287硬盘保留___SP___SP+5VIRQ29.4中断服务程序设计9.4.1中断服务程序的一般结构中断服务程序的一般结构如图9.20所示。由该图可见,在中断服务程序的开始部分,通常要安排几条PUSH指令,把将要在中断服务程序中用到的寄存器的内容压入堆栈保存,以便在中断服务结束时再从堆栈中弹出,恢复原先的内容,这通常称为“保存现场”。
图9.20中断服务程序的一般结构由于进入中断处理程序时IF已被清除,所以在执行中断处理程序的过程中,将不再响应其他外部可屏蔽中断请求。如果希望在当前这个中断处理过程中能够响应更高级的中断请求,实现中断嵌套,则需用STI指令把IF置1,重新开放中断。接下来是中断服务程序的主体部分,即中断服务程序应完成的主要操作,它要完成的任务是各色各样的,这与实际的应用有关。如果它的任务是某种出错处理,一般要显示输出一系列信息。如果它是对一个I/O设备进行服务,就按I/O设备的端口地址输入或输出一个单位(字节或字)的数据。在中断服务程序的末尾需恢复原来的程序环境,需用几条POP指令(或一条POPA指令)从堆栈中弹出被保护寄存器的内容。这称为“恢复现场”。中断服务程序的最后一条指令必须是IRET指令。执行IRET指令将从堆栈中弹出旧的IP、CS以及标志寄存器FR的内容。这样就恢复了原来的程序环境,程序将从被中断的地点继续执行。9.4.2在中断向量表中置入中断向量1.用MOV指令直接进行传送用MOV指令直接进行传送即是利用MOV指令直接将中断服务程序的入口地址送入中断向量表的相应地址单元中。具体地说,就是将中断服务程序入口地址的偏移量存放到物理地址为4N(N为中断类型号)的字单元之中,将中断服务程序入口地址的段基值存放到物理地址为4N+2的字单元中。如下列程序段所示:MOVAX,0MOVES,AXMOVBX,N*4MOVAX,OFFSETINTHANDMOVES:WORDPTR[BX],AX;置入中断服务程序入口地址的偏移量MOVAX,SEGINTHANDMOVES:WORDPTR[BX+2],AX;置入中断服务程序入口地址的段基值┇
INTHAND:
┇
中断服务程序
IRET2.利用DOS功能调用法DOS功能调用(INT21H)专门提供了在中断向量表中存、取中断向量的手段,功能号分别是25H和35H。(1)设置中断向量(25H功能调用)25H功能调用把由AL指定的中断类型的中断向量(预置于DS:DX中)放入中断向量表中。其基本使用方法为:
预置:AH=25HAL=中断类型号
DS:DX=中断向量执行:INT21H例9.7PUSHDS;保存DSMOVAX,SEGINTHANDMOVDS,AX;将中断服务程序入口地址的段基值预置于DS中MOVDX,OFFSETINTHAND;将中断服务程序入口地址的偏移量预置于DX中MOVAL,N;送中断类型码NMOVAH,25HINT21H;在中断向量表中设置中断向量POPDS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度建筑工程施工安全责任保险合同
- 2025年度海洋工程劳务承包合同模板
- 2025年度新能源车用锂电池研发借款保证合同
- 气模鼓风机项目融资计划书
- 金华浙江金华永康市信访局编外工作人员招聘笔试历年参考题库附带答案详解
- 金华浙江金华市技师学院招聘编外工作人员8人笔试历年参考题库附带答案详解
- 贵州2025年贵州省工业和信息化厅所属事业单位招聘1人笔试历年参考题库附带答案详解
- 舟山浙江舟山市普陀区档案馆(区史志研究室)招聘劳务派遣工作人员笔试历年参考题库附带答案详解
- 聊城2024年山东聊城阳谷县第二批招聘教师70人笔试历年参考题库附带答案详解
- 湛江广东湛江市清风苑管理中心招聘事业编制工作人员10人笔试历年参考题库附带答案详解
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 《中华民族共同体概论》考试复习题库(含答案)
- 2023年卫生院岗位大练兵大比武竞赛活动实施方案
- 2023年浙江省初中学生化学竞赛初赛试卷
- 辽海版小学五年级美术下册全套课件
- 专题7阅读理解之文化艺术类-备战205高考英语6年真题分项版精解精析原卷
- 真空泵日常操作标准作业指导书
- 2022年广东省10月自考艺术概论00504试题及答案
- 中国石油大学(华东)-朱超-答辩通用PPT模板
- 隧道二衬承包合同参考
- 空气能热泵系统
评论
0/150
提交评论