版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章中断和异常8.1概述8.2中断8.3异常8.4中断及异常的暂时屏蔽8.5中断及异常的优先级8.6实方式下的中断8.7保护方式下的中断和异常8.8中断优先级管理器8259APIC18.1概述一、什么是中断二、中断源和中断优先权三、中断服务程序四、断点和中断现场五、硬件中断和软件中断2一、什么是中断在CPU正常运行程序时,由于内部或外部某个非预料事件或指定的事件的发生(如:外部事件,电源掉电,硬件故障,传输错,存贮错,运算错及操作面板要求服务等),使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,处理完毕然后再返回被中断了的程序,继续执行。这个过程就是中断。3中断服务程序1中断服务程序
2中断事件1CPU执行流程中断事件
24二、中断源和中断优先权引起中断的因素很多,将发出中断申请的外设或内部的原因,称为中断源给每个中断源指定一个优先权,称为中断优先权当多个中断源同时发出中断请求时,
CPU按照中断优先权的高低顺序,依次响应。5三、中断服务程序
处理中断源,完成其所要求功能的程序,称中断服务程序(中断例行程序、中断子程)。CPU执行流程中断服务程序1中断服务程序2非预料事件2非预料事件16非预料事件是指事件发生的时间无法预知,
即中断源何时产生中断不确定,是随机的。但事件的性质及处理方法则是已知的,
确定的,
即中断服务程序是事先编写好的,
只是何时执行未知。中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。7四、断点和中断现场断点:
是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址。中断现场:
是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。81000:150H、、、、、、、、、、MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、
PUSHAX
、、
、、
IRETCPU在执行此指令时,某中断源发申请中断;CPU在执行完该指令后,转去执行中断子程地址1000:150H为断点断点概念:9早期中断概念的引入,是为解决CPU与外设间的速度匹配问题,提高CPU的工作效率。中断源主要是由外部硬件产生。当今的中断技术,不再限于外部硬件产生中断(称硬件中断或外中断),还可由CPU内部产生(如被零除操作),或者由程序预先安排,即由指令调用的中断服务程序。(称软件中断或
内中断)又称为异常中断将硬件中断或外中断统称中断,将软件中断或内中断统称异常五、硬件中断和软件中断10异常是指令执行期间检查到的不正常或非法的状态,使指令不能正常执行而产生中断。这与所执行的指令有直接的关系。它源于CPU的内部,通常将软中断指令也归于异常118.2中断80386,80486支持两种类型的外部中断:可屏蔽中断及不可屏蔽中断(非屏蔽中断),并有相应的两个中断请求引脚信号----INTR及NMI.
1、可屏蔽中断经由INTR信号(高电平有效)请求的中断称为可屏蔽中断.它受IF的影响和控制.当IF被软件采用STI指令置1时,表明INTR被允许,CPU响应INTR.当IF被软件采用CLI指令置0时,表明INTR被禁止,CPU不响应INTR。
2、非屏蔽中断经由NMI信号线(上升沿触发有效)请求的中断称为非屏蔽中断。它是不被IF禁止的中断。
128.3异常
1、异常分类产生异常后,系统根据引起异常的程序是否可被恢复这一原则,进一步又把异常分为故障(fault)、陷阱(trap)和中止(abort)3类异常。
故障异常是引起故障的程序可被恢复执行的异常,它也是在引起故障的指令执行之前就报告给系统的一种异常,故障被检出时,保护断点(指向引起故障的指令)故障处理完毕,返回到引起故障的指令,使该指令得以正确执行。
陷阱异常是在指令执行期间被检测到的,并在引起异常的指令执行之后向系统报告的一种异常.陷阱产生后,保护断点(指向引起陷阱的指令的下一条应该执行的指令地址),程序转向异常处理。
中止异常是微处理器面临严重错误时产生的异常。
132、异常错误码
产生异常时CPU在异常处理程序的栈中压入一个异常错误码。异常错误码格式如下,异常错误码位于特定的堆栈中,对于一些无错误信息的异常,向栈中压入错误码0。 错误码的格式类似于选择器的格式,区别仅在于选择RPL域被两个1位域(EXT、IDT)替代。选择器索引保留选择器索引15
域值描述D0:EXT0中断的程序引起异常
1外部事件引起异常D1:IDT0索引域的意义取决于
TI域
1选择器属于门描述符D2:TI0索引域指向GDT1索引域指向LDTD3----D15为索引域,与TI组成一个14位的指针
32108028680386/8048614
3、处理器定义的异常
所谓处理器定义的异常是80X86处理器中保留自用的异常,共用16个.1、异常0
异常0定义为除法出错异常,是一种故障型异常
2、异常1
异常1定义为排错异常或调试异常,有故障类或陷阱类,其中单步为陷阱型异常
3、异常3
异常3为断点中断,是一个采用单字节指令INT的软件中断,属陷阱型异常
4、异常4
异常4定义为溢出异常陷阱,属陷阱型异常
5、异常5
异常5定义为边界检查故障,属故障型异常
156、异常6异常6定义为无效操作码故障,属故障型异常7、异常7异常7定义为协处理器无效故障,属故障型异常8、异常8异常8定义为双重故障,属中止型异常9、异常9异常9定义为协处理器段越界异常,属中止型异常10、异常10异常10定义为无效TSS故障,属故障型异常11、异常11异常11定义为段不存在异常,属故障型异常1612、异常12异常12定义为栈段故障,属故障型异常13、异常13异常13定义为通用保护故障,属故障型异常14、异常14异常14定义为页故障,属故障型异常15、异常16异常16定义为协处理器出错故障,属故障型异常注意:由INTN定义的软中断均为陷阱型异常未定义313210U/SR/WP域值描述P0失效由不存在页引起
1失效由页级别保护冲突引起R/W0失效由读引起
1失效由写引起U/S0失效发生在管理方式
1失效发生在用户方式178.4中断及异常的暂时屏蔽中断和排错异常在某些条件下可被忽略或屏蔽引起中断和排错异常可被忽略或屏蔽的条件如下:1、EFLAGS中的IF=0,屏蔽外部可屏蔽中断.2、IF=0时,执行STI指令,则在STI指令及下面一条指令执行期间,屏蔽外部可屏蔽中断.3、EFLAGS中的RF=1,屏蔽排错故障.(RF为调整恢复标志:RF=0,调试故障被接受,
RF=1,调试故障被忽略)
4、系统正处理一个非屏蔽外部中断,则屏蔽任何新的非屏蔽中断。
5、执行以SS为目的寄存器的MOV及POP指令时,将在该指令及下面一条指令执行期间屏蔽各种中断及排错异常.6、在指令前缀LOCK及被锁定的指令之间不允许中断。188.5中断及异常的优先级中断/异常类型优先级排错故障非排错故障陷阱指令INTn、INTONMI中断INTR中断最高最低中断/异常的优先级排错陷阱19一、实方式下的中断分类按中断源的不同,中断分为内部中断和外部中断。1、内部中断(软中断)指CPU执行某些特殊操作或由INT指令引起的中断①
被零除操作或OF=1时执行INTO指令引起②使用DEBUG中的单步或断点设置操作引起③
执行INTn指令引起8.6实方式下的中断20指外部芯片通过CPU的INTR引脚或NMI引脚发出中断申请引起的中断。当INTR上有高电平信号当NMI上有上升沿信号2、外部中断(硬中断)8088GNDA14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND最大组态(最小组态)VCCA15A16/S3A17/S4A18/S5A19/S6(HIGH)(SSO)MN/MXRDRQ/GT0(HOLD)RQ/GT1(HLDA)LOCK(WR)S2(IO/M)S1(DT/R)S0(DEN)QS0(ALE)QS1(INTA)TESTREADYRESET21
可屏蔽中断
由INTR引脚引起的中断,称可屏蔽中断。
CPU是否响应INTR引脚上的中断请求取决于IF标志:
IF=1,CPU响应INTR引脚上的中断请求
IF=0,CPU不响应INTR引脚上的中断请求即当IF=0时,将INTR引脚上的中断申请屏蔽。非屏蔽中断
由NMI引脚引起的中断,称非屏蔽中断。当NMI引脚上产生上升沿信号,CPU必响应此中断请求,即NMI引脚上的中断请求不受IF标志的控制,
IF不能屏蔽NMI引脚上的中断请求。22保留中断逻辑INTn指令INTO指令除法错误单步TF=1非屏蔽中断请求IR0IR6IR5IR4IR3IR2IR1IR7可编程中断控制器(PIC)8259AINTn412CPUINTRNMI08090A0B0C0D0E0F系统定时器键盘保留(打印机)软盘串行通信接口保留(通信)彩色/图形接口实方式下的中断源INT指令
3023当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源。二、实方式下的中断优先权优先级高低
内中断(除零,INT指令,断点,INTO指令)
非屏蔽中断可屏蔽中断
低内中断(单步)
24三、实方式下的中断响应过程当中断源产生中断申请后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成下列响应中断的过程:①
取中断类型号N②
当前PSW的内容入栈③
清IF、TF标志为0④当前CS的内容入栈⑤
当前IP的内容入栈⑥
取内存单元(0:N×4)字内容送IP
取中断子程⑦
取内存单元(0:N×4+2)字内容送CS
入口地址此时CS:IP指向中断程序的入口,开始执行中断程序。保存现场25当前指令执行完的含义
CPU正在执行一条指令,执行完本条指令,响应中断;对于带重复前缀的串指令(如REPMOVSB),执行一次重复和串指令即可响应中断;对MOV和POP指令,处理对象为段寄存器,以及STI和IRET指令执行完本条指令后,再执行一条指令才响应中断。26内存中断向量表0:0~3FFH1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、
0200h3000h
、、、、、、、、、
MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、、、、
MOVBX,CX、、、、、、
IRET、、、类型N中断子程某中断源发申请中断,申请执行类型号为N的中断子程响应中断前
SS:SP响应中断后SS:SP
堆栈执行IRET后
(IP)(CS)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h0:3FFH0:027从中断子程返回断点处,靠的是执行中断子程最后的指令IRET,从堆栈中取出断点地址给CS:IP,继续执行被中断的程序。故中断子程最后应安排IRET指令。1000:150h3000:200h0:N×40:N×4+20:0000、、、、、、
0200h3000h
、、、、、、、、、
MOVAX,0ADDAX,DXMOV[DI],AX、、、、、、、、、
MOVBX,CX、、、
IRET、、、响应中断前
SS:SP响应中断后SS:SP
堆栈执行IRET后
(IP)(CS)(PSW)01501000(PSW)SS:SP(IP)=0200h(CS)=3000h28四、实方式下如何获取中断类型号由前面介绍知,当中断源产生中断请求后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,
CPU内部硬件会自动完成响应中断的过程,
共七个步骤,而第一步就是获取中断类型号。不同的中断源,实方式下获取中断类型号的方法不同。29STIIPCSPSWCPU和总线控制逻辑(1)条件
IF=1NMI=0HOLD=0
无内部中断INTRINTAD0~D78259AINTINTAD0~D7IR0IR1IR7外设中断请求(6)0IF0TF(5)保护断点(9)返回主程序4*N4*N+2IPCSPSW(2)中断请求主程序(7)(4*N)IP(4*N+2)CS转入中断处理程序(2)中断请求INT=1(3)INTA=0送8259A(4)类型码N送CPU(7)转入中断处理程序(9)返回主程序(8)开中断中断处理程序INET可屏蔽中断的响应和处理过程可屏蔽中断的响应和处理过程:308.7保护方式下的中断和异常基地址限量中断描述符表中断N的门中断N-1的门8N8(N-1)中断2的门中断1的门中断0的门10H80150保护方式的中断描述符表保护方式下,发生中断和异常时,使用中断描述符表IDT(共256项每项由8字的中断描述符组成)IDT在内存中的位置由中断描述符表寄存器IDTR给出(48位)IDTRIDT310IDT:为中断门,陷阱门,任务门之一311514121170保留(必须为0)
PDPL0类型未用代码段选择器偏移量80286中断或陷阱门6420150
80386/80486中断或陷阱门6420偏移量(高)PDPL0类型000保留代码段选择器偏移量150任务门保留PDPL0类型保留TSS段选择器保留6420中断描述符格式P:存在位DPL:描述符特权级类型:0101任务门0110/0001中断门0111/1111陷阱门DPL字段仅在INTN和INTO指令时被检验,且要求CPL大于或等于DPL32入口点中断描述符表SelectorAttributesOffset全局或局部描述符表线性地址空间BaseLimitAttributes通过中断门或陷阱门的转移:IDT为中断门或陷阱门则中断程序与当前程序为同一任务,中断程序地址由中断门或陷阱门提供,如下图8.7.1通过中断门及陷阱门的转移33通过中断门或陷阱门向内层转移:向内中断向外返回堆栈向下增长内层栈外层栈IRET前的ESP指针中断后的ESP指针中断前及IRET后的ESP指针SS0LIMITLIMITSS0OuterSSOuterEspEFLAGSOuterCSOuterEIPErrorCode348.8中断控制器8259A8259A中断控制器由INTEL公司设计。它具有8级优先权控制,通过级联可扩展至64级优先权控制。每一级中断都可以屏蔽或允许。在中断响应周期,它可提供相应的中断向量,从而能迅速地转至中断服务程序。特点:1片8259能管理8级中断,9片8259可构成64级主从式中断。可通过编程,使8259工作在多种不同的方式。采用CMOS工艺,只需单一的5V电源。35IR0IR1IR2IR3IR4IR5IR6IR7内部总线中断服务寄存器(ISR)优先权判别器(PR)中断请求寄存器(IRR)中断屏蔽寄存器(IMR)控制逻辑
INTAINT
数据总线缓冲器读/写控制逻辑级连/缓冲比较器RDWRA0CSCAS0CAS1CAS2SP/END7~D01.8259A的内部结构中断请求寄存器(8位)IRR寄存从引脚IR0~IR7输入的中断请求信号。当IRi
有效时,IRRi位置“1”。中断屏蔽寄存器(8位)IMR存放屏蔽中断的信息。IMRi位与IRRi位一一对应,如果IMRi位为1,锁存在IRRi位的中断请求被屏蔽。优先权判别器(PR)
当IR7~IR0端有多个中断请求同时发生时,由PR判定哪个中断请求具有最高优先权,并在INTA脉冲期间将它置入中断服务寄存器ISR的相应位。中断服务寄存器(8位)ISR
记录CPU正在处理中的中断请求。ISRi
位与IRi中断源一一对应,当任一级IRi中断请求被响应,CPU正在执行它的中断服务程序时,ISRi
位置“1”,它一直保持到该级中断处理过程结束为止。由于可能产生多重中断,因此ISR中有可能多位为“1”。数据总线缓冲器 是8位双向三态缓冲器,构成8259A与系统数据线的接口。对8259A编程写入的命令字以及读出的8259A状态信息都是通过它传送。读写控制逻辑 接收读/写控制信号RD/WR、片选信号CS和端口选择信号A0。一片8259A在系统中占用2个口地址,用地址线A0来选择端口;用高位地址线通过译码产生8259A的片选信号。控制电路
它有一组命令字(ICW1~ICW4)寄存器和操作字(OCW1~OCW3)寄存器以及相关的控制逻辑。它通过INT端向CPU发中断请求信号,从INTA端接收CPU的中断响应信号,控制8259A进入中断状态。级连缓冲/比较器 一片8259A只能接收8级中断,当超过8级时,可用多片8259A级连使用,构成主从结构。可扩充到64级。368259A的中断过程在中断请求输入端IR7~IR0上接受中断请求。中断请求锁在IRR中,并与IRR相“与”,送给优先权判断电路。优先权判断电路检测出优先级最高的中断请求位,并置位该位的ISR。控制逻辑接受中断请求,输出INT信号。CPU接受INT信号,进入连续两个中断响应周期。单片使用或由CAS2~CAS0选择的从片8259A,就在第二个INTA周期,将中断类型向量从D7~D0线输出;若作主片输出,则在第1个INTA周期,把级联地址从CAS2~CAS0送出。CPU读取中断向量,转移到相应的中断处理程序。通过向8259A送一条EOI(中断结束)命令,使ISR复位,实现结束中断。在EOI命令复位之前,不接受由ISR置位的中断请求。37
CSA0INTADCAS0SP主8259CAS1CAS2INTIR7IR6…IR3…IR0…CSA0INTADCAS0SP从8259CAS1CAS2IR7…IR0INT…CSA0INTADCAS0SP从8259CAS1CAS2IR7…IR0INT…ABCBDBVccD7~0D7~08259级连电路级连方式接法级连信号CASi
:主、从片8259A的CASi端互连,但主片8259A的CASi输出,从片CASi
输入。双功能引脚SP/EN:主片接高电平,从片接低电平。INT信号:从片的INT接至主片的IRi端388259A的引脚功能当WR有效时,若CS也有效,则允许该8259A接收CPU送来的命令字;当RD有效时,且CS也有效,则允许该8259A将状态信息放入数据总线供CPU检测INT:中断请求信号。输出。当IR7~IR0任一引脚有中断请求时,8259A从INT向CPU(通常是INTR引脚)发出中断请求信号CAS2~CAS0:级连信号、双向引脚。用于控制多片8259A的级连使用。主片:CAS2~CAS0
引脚输出;从片:CAS2~CAS0
引脚输入SP/EN:双功能引脚。当该8259A处于缓冲方式时,该引脚输出,它用于总线收发器的使能信号;当该8259A处于非缓冲方式时,该引脚输入,SP=1表示该片是主片,SP=0表示该片是从片39
3.8259A的中断管理方式中断触发方式电平触发方式当IR7~IR0
出现高电平时,表示有中断请求。这个高电平应持续到8259A收到第一个中断响应脉冲之前。边沿触发方式当IR7~IR0
出现由低电平到高电平的跃变,表示有中断请求。40中断屏蔽方式普通屏蔽方式将IMR中某一位或几位置“1”,即可将相应位的中断请求屏蔽。例如,将11110000写入IMR,即可屏蔽IR7~IR4的中断请求,开放
IR3~IR0
的中断。特殊屏蔽方式通常情况下,当一个中断被响应时,禁止同级或较低级别的中断请求。在特殊屏蔽方式下,当一个中断被响应时,仅屏蔽同级中断,较低或较高级别的中断请求可被允许进入。41中断优先级别管理方式完全嵌套方式又称固定优先级方式,其特点为:IR7~IR0的优先级固定,IR0
为最高级,IR1次之,IR7为最低级。
CPU响应某一级中断时,8259A将ISR中与该中断源对应的那一位置“1”,并自动禁止同一级和较低级的中断请求,但高优先级中断可中断当前的服务,实现中断嵌套。42特殊全嵌套方式该方式与完全嵌套方式的不同点在于:当CPU正处理某级中断请求时,只禁止较低级别的中断请求,而允许同级或较高级的中断请求进入。特殊全嵌套方式用于多片8259A的级连系统中。主片处于特殊全嵌套方式,可响应来自同一从片的其它中断请求。自动循环方式IR7~IR0中断源轮流为最高优先级,当任一级中断服务结束后,该中断源自动降为最低级,而它的下一级的中断源自动升为最高级。43例如现正为IR3引入的中断服务,若中断服务程序完毕,IR3被赋予最低优先级,IR4被赋予最高优先级,各级中断源的优先级从高到低依次为:
IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3
。特殊循环方式该方式下,用户可置优先权命令指定最低优先级。例如设置IRi为最低优先级,则最高优先级赋予IRi+1,其它各级按循环方式类推。44中断结束方式把ISR寄存器的中断服务标志ISRi位清0,这意味着结束第i中断源的中断服务。如何将ISRi位清0,8259A提供了6种中断结束方式。自动EOI方式8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0。采用这种方式,不需要在中断服务程序中向8259A送中断结束(EOI)命令字。45普通EOI方式在中断服务程序结束,执行IRET之前,向8259A送一个“普通中断结束(EOI)”命令字,8259A收到EOI命令字后,把ISR中级别最高的置1位清0。在完全嵌套方式下,应采用普通EOI方式,但在特殊屏蔽方式下不能采用。特殊中断结束方式该种方式下,在中断服务程序结束,执行IRET之前,向8259A送一个“特殊EOI”命令字,可将ISR中指定位清0。46自动EOI,优先级循环方式在CPU响应中断,8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0,并完成优先级循环。普通EOI,优先级循环方式在IRi的服务程序结束,执行IRET之前,向8259A送一个“普通EOI,优先级循环方式”命令字,8259A收到EOI命令字后,把ISR中级别最高的置1位清0,同时完成优先级循环。47特殊EOI,优先级循环方式当前中断服务结束,执行IRET之前,向8259A送一个“特殊EOI,优先级循环方式”命令字,可将ISR中指定位清0。并完成优先级循环。48总线连接方式缓冲方式如果8259A通过总线驱动器和系统数据总线相连,则8259A应采用缓冲方式。此时SP/EN为输出端,它输出一个低电平信号,可作为总线驱动器的启动信号。非缓冲方式如果8259A数据线和系统数据总线直接相连,则8259A应工作于非缓冲方式下。494.8259A的控制字及编程使用8259A有两类编程命令:初始化命令字(ICW)和操作命令字(OCW)初始化命令字共有ICW1~ICW44个字。设置顺序依次为:ICW1,ICW2,ICW3,ICW4。ICW1:中断请求触发方式设定ICW1使用偶端口(A0=0),D4位固定为1,表示当前写入的是ICW1。写入ICW1时,自动将中断屏蔽寄存器IMR清0,并恢复各中断源的优先级为IR0最高,IR1次高,IR7最低。50ICW1的格式为:写ICW4单片使用无效电平触发特征位16位机无效IC4SNGLADILTIM10000D0D1D2D3D4D5D6D7A0D0(IC4)位:是否写ICW4选择。D0=0,不需要写ICW4;D0=1,写ICW4。D1(SNGL)位:单片多片选择。D1=0,多片级连使用;D1=1,单片使用。D3(LTIM)位:触发方式选择。D3=0,边沿触发;D3=1,电平触发。D7、D6、D5、D24位:8086CPU不用。D4位:特征位。D4=1表示写入ICW1字。51ICW2:中断类型号设定ICW2的功能是设置中断类型号。它使用奇端口(A0=1),紧跟在ICW1之后设置。ICW2的格式为:16位机无效中断类型号的高5位000T3T4T5T6T71D0D1D2D3D4D5D6D7A0D7~D3(T7~T3)是中断类型号的高5位,它由用户写入。D2D1D03位在8086系统中不用,固定写000。中断类型号的低3位由中断进入的引脚决定,从IR0~IR7依次为000~111。它在第一个INTA到来时,将这个编码写入低3位。52例:若对8259A采用电平触发,单片使用,需写ICW4,则程序段为:MOVAL,1BH;ICW1的内容(00011011)OUT20H,AL;写入ICW1端口(A0=0)
53ICW3:中断级连方式设定S0/ID0S1/ID1S2/ID2S3S4S5S6S71D0D1D2D3D4D5D6D7A0ICW3仅在多片级连方式中使用,它使用奇端口(A0=1)。ICW3的格式为:对于主片8259A,若Si=1,表示IRi引脚上接有从片8259A;否则,Si=0。对于从片8259A,用ID2ID1ID0的编码表示本8259A接在主8259A的哪根引脚上。IR0~IR7对应的编码为000~111。54ICW4:中断结束、嵌套方式设定μPMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0ICW4使用奇端口(A0=1),它确定中断结束的方式和中断嵌套的方式。ICW4的格式为:D0(μPM)位:系统选择。D0=0,用于8085系统;D0=1,用于8086系统D1(AEOI)位:中断结束方式选择。D1=0,普通EOI方式;D1=1,自动EOI方式。D3(BUF)位:缓冲方式选择。D3=0,工作于非缓冲方式;D3=1,工作于缓冲方式。在缓冲方式下,SP/EN引脚输出给总线收发器。此时,由M/S位来定义本8259A是主片或是从片。D2(M/S)位:主/从片选择。当BUF=1时(缓冲方式),D2=0为从片;D2=1表示主片。当BUF=0时,M/S位无意义。D4(SFNM)位:中断嵌套方式选择。D4=0表示普通全嵌套方式;D4=1表示特殊全嵌套方式。55例:多片8259A级连方式连接,从片A和B的中断请求线INT分别接到主片的IR3和IR6,故:从片A的ICW3=00000011B=03H;从片B的ICW3=00000110B=06H;主片的ICW3=01001000B=48H。程序段为从片A:MOVAL,03H;写从片A的ICW3OUT0A1H,AL;ICW3的端口地址(A0=1)56从片B:MOVAL,06H;写从片B的ICW3OUT0B1H,AL;ICW3的端口地址(A0=1)主片:MOVAL,48H;写主片的ICW3OUT81H,AL;ICW3的端口地址(A0=1)57操作命令字工作命令字有3个,它们对写入顺序没有要求,某些工作命令字可能反复多次写入。OCW1中断屏蔽字OCW1占用奇地址(A0=1),它对中断请求输入线IRi进行屏蔽控制,格式为:M0M1M2M3M4M5M6M71D0D1D2D3D4D5D6D7A0其中,Di(Mi)=1,则IRi位请求被屏蔽;
Di(Mi)=0,则IRi位请求被允许。58例:
要使IR3开放,其余均被屏蔽,则OCW1=11110111B=0F7H;程序段为:MOVAL,0F7HOUT21H,AL;21H是奇端口(A0=1)例:IMR寄存器的内容可读出。MOVAL,00;置IMR为全“0”OUT21H,AL;OCW1的口地址INAL,21H;读IMR(奇地址)59ORAL,AL;检查是否为全“0”JNZERR;不为“0”,则转错误处理MOVAL,0FFH;置IMR为全“1”OUT21H,AL;OCW1的口地址INAL,21H;读IMRADDAL,1;检查是否为全“1”JNZERR;不为全“1”,转错误处理60OCW2
优先级循环及结束方式操作字OCW2作用是设定8259A的中断优先级循环和结束方式。OCW2占用偶地址(A0=0)。
OCW2格式为:L0L1L2000D0D1D2D3D4A0中断等级编码特征位中断结束设定指定中断级别优先级循环EOISLRD5D6D7D7(R):中断优先级循环设定D7=0,固定优先权方式;D7=1,循环方式。D6(SL):中断级别指定D6=0,不指定中断级别,L0~L2编码无效;D6=1,要用L0~L2编码来指定中断优先级。D5(EOI):中断结束命令位当ICW4中的AEOI位=1时,D5=1可使当前ISR寄存器中相应位清“0”。D2D1D0(L2L1L0):中断等级编码。L2L1L0的8种编码:000B~111B分别与IR0~IR7
对应。D4D3:特征位。D4D3=00表示是OCW2。61无操作010置优先权命令011自动EOI循环方式(置位)001自动EOI循环方式(复位)000特殊EOI命令111普通EOI命令101特殊EOI命令110普通EOI命令100意义EOISLRR,SL,EOI的设置及意义R,SL,EOI不同设置的意义说明编码=001:普通EOI命令。它在中断服务程序结束时发出,8259A接到该命令后,将当前ISR中优先级最高的置“1”位清“0”。编码=011:特殊EOI命令。当中断处理结束,8259A接收到该命令后,将ISR中由L2L1L0编码指定的相应位清“0”。编码=101:普通EOI循环命令。8259A接收到该命令后,将ISR中优先级最高的置“1”位清“0”,并将刚结束的中断请求IRi赋予最低优先级,把最高优先级赋予IRi+1,其它级别按循环排序。编码=111:特殊EOI命令。8259A接收到该命令后,将ISR中由L2L1L0编码指定的相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变。编码=000和100:使8259A取消自动EOI循环方式(复位)和设置自动EOI循环方式(置位)。在自动EOI循环方式下,8259A在接收到中断响应信号后,将ISR中相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变编码=110:向8259A发置优先权命令,将最低优先级赋予由由L2L1L0编码指定的中断请求IRi,其它中断请求的级别按循环方式分别赋给。62OCW3:查询中断方式和特殊屏蔽方式操作OCW3的端口为偶地址(A0=0),格式为:读ISR读寄存器允许查询方式特征特殊屏蔽方式特殊屏蔽允许不用RISRRP10SMMESMM×0D0D1D2D3D4D5D6D7A0D4D3=01是OCW3的特征位。D6(ESMM):特殊屏蔽方式允许位。ESMM=0,将SMM位屏蔽,使其无效;ESMM=1,开放SMM位,使其有效。D5(SMM):特殊屏蔽方式设定。当ESMM=1时,若SMM=1,选择特殊屏蔽方式;SMM=0,不选择特殊屏蔽方式。D2(P):查询命令标识位,P=1,告之8259A,CPU将执行一条读中断状态字字指令,并使读其它寄存器命令无效;P=0,不读中断状态字。D1(RR)D0(RIS):读ISR和IRR中的状态信息标识位,仅当P=0时有效。RR=1,RIS=0表示在下一条“IN”指令时从偶地址(A0=0)读IRR中的状态信息;RR=1,RIS=1表示在下一条“IN”指令时从偶地址(A0=0)读ISR中的状态信息。RR=0,则RIS位无效。IMR中的信息可直接用“IN”指令从奇地址(A0=1)读出。63查询中断方式的说明:W0W1W2----IR0D0D1D2D3D4D5D6D7A0当P=1时,表示向8259A发查询命令,可读出中断状态字,了解8259A当前的中断状态。中断状态字的格式为:D7(IR):有无中断请求位。IR=1表示有中断请求;IR=0,表示无中断请求。D2D1D0(W2W1W0):当前正在请求的中断的最高优先级编码:W2W1W0=000~111分别与IR0~IR7
对应。使用查询中断方式时,CPU应先关闭其中断请求,再发查询命令字(P=1的OCW3),然后用“IN”指令读中断状态字。64例:若对IR3中断源采用非自动指定(特殊)中断结束方式,则:OCW2=01100011B=63H;程序段为:MOVAL,63H;将OCW2OUT20H,AL;写入偶端口(A0=0)例:特殊屏蔽方式的编程。设系统正为IR4服务,同时允许级别较低的中断请求进入。方法:先用特殊屏蔽命令将IR4中断暂时屏蔽,再响应较低级别的中断请求,完成较低级别的中断服务后,解除对IR4的屏蔽,继续为IR4服务。编程:IR4中断服务程序65CLI;关中断MOVAl,10H;置OCW1的M4=1,屏蔽IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALMOVAL,68H;置OCW3为特殊屏蔽方式MOVDX,PORT2;OCW3的口地址(A0=0)OUTDX,ALSTI;开中断CLI;关中断MOVAL,48H;置OCW3为复位特殊屏蔽方式66MOVDX,PORT2
;OCW3的口地址(A0=0)OUTDX,ALMOVAL,00H;置OCW1的M4=0,开放IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALSTIMOVAL,01100L2L1L0;OCW2
指定中断结束MOVDX,PORT2;OCW2的口地址OUTDX,ALIRET;中断返回67例:通过OCW3读8259A的状态。读IRR:OCW3=00001010B=0AH读ISR:OCW3=00001011B=0BH编程:MOVAL,0BH;OCW3表示要读ISROUT20H,AL;20H是OCW3的口地址NOP;空拍延时INAL,20H;读ISR的内容(偶地址A0=0)MOVAH,AL;保存ISR→AHORAL,AH;是否为全0?JNZAW_INT;否,转硬件中断程序68例:
在PC/XT系统中8259A的初始化编程使用要求与特点:①采用2片8259A级连,共15级向量中断;②从片的INT接到主片的IR2;③主从片的中断请求信号均采用边沿触发;④采用完全嵌套方式,优先级排序为:
0,1,8~15,3,4,5,6,7级;⑤采用非缓冲方式;⑥0~7级对应的中断类型号为8~0FH,8~15级对应的中断类型号为70H~77H。69硬件连接图CAS0~2IR0SP/ENIR1IR2INTIR3
IR4IR5D0~7IR6
IR7
INTAA0RDCSWRCAS0~2IR0SP/ENIR1IR2INTIR3D0~7IR4
IR5IR6
IR7
INTAA0RDCSWR
CPU
INTRS0D0~7S1S2INTAS0IORS1IOWS2主片+5V从片总线控制器70初始化编程;初始化8259A主片:INTA00EQU020H;8259A主片端口0INTA01EQU021H;8259A主片端口1MOVAL,11;ICW1:边沿触发、多片、写ICW4OUTINTA00,ALJMPSHORT$+2;端口延时要求MOVAL,8;ICW2:中断类型号的高5位OUTINTA01,AL71JMPSHORT$+2;端口延时要求MOVAL,04H;ICW3:主片的IR2上接从片OUTINTA01,AL;(S2=1)JMPSHORT$+2;端口延时要求MOVAL,01H;ICW4:非缓冲,全嵌套OUTINTA01,AL;非自动结束;初始化从片:INTB00EQU0A0H;8259A从片端口0INTB01EQU0A1H;8259A从片端口172MOVAL,11;ICW1:边沿触发、多片、写ICW4OUTINTB00,ALJMPSHORT$+2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025委托销售合同范本
- 维修路面申请报告范文
- 模拟企业实习报告范文
- 课题申报书:高校体育文化赋能大学生思想政治工作的机制与路径研究
- 课题申报书:高校教师数字化教学能力的伴随式数据诊断及提升策略研究
- 2025青岛市劳动合同范文
- 课题申报书:高等教育高质量发展的区域差异与统筹策略研究
- 上海杉达学院《水彩肖像》2023-2024学年第一学期期末试卷
- 2023-2024届高考作文写作提升课堂“三元关系型作文”的关系梳理与运用
- 上海纽约大学《会展管理概论》2023-2024学年第一学期期末试卷
- 数据分析服务合同三篇
- 血透室安全隐患
- 《中国园林发展》课件
- 菏泽学院教育科学研究方法(专升本)复习题
- 小学科技节活动总结15篇
- 船运居间协议合同范例
- 质控竞聘课件
- 2024-2025学年统编版道德与法治三年级上册 期末测试卷(含答案)
- 教育学原理项贤明第九章教师与学生
- 严禁在学校组织宗教活动
- 2023-2024学年广东省湛江市赤坎区某中学七年级上学期期末数学试卷及参考答案
评论
0/150
提交评论