1、第6章 中断技术18259A的应用举例48086/8088 微机中断系统28259A可编程中断控制器3中断技术概述1 6.1 中断技术概述中断是中断是CPU与外设间进行信息交换的一种形式。与外设间进行信息交换的一种形式。该形式下,CPU无需完全服务于某个外设,效率高。当出现某些异常情况或某个外设有请求时,CPU暂停暂停正在执行的程序,转去转去执行某一特定的程序,执行完后再返回返回原来被终止的程序处继续执行。2(1)中断的常用术语1.中断中断指CPU正在执行一个程序的过程中,由于出现了某些异常情况或外设提出了某种请求,CPU暂停暂停正在执行的程序,转去转去处理异常情况或执行外设请求的特定程序,执
2、行完后再返回返回原来被终止的程序处继续执行。这个过程(三部曲)称为中断。2.主程序主程序未发生中断时,CPU正在执行的程序称为主程序。33.中断服务程序中断服务程序处理中断事件的程序段称为中断服务程序(Interrupt Service Routine,ISR)或中断子程序。不同的中断对应不同的ISR。4.中断断点中断断点中断发生时,主程序中被终止的当前指令的下一条指下一条指令的地址令的地址称为断点。CPU转去执行ISR时,断点被压入栈压入栈中进行保护,等ISR执行完毕,CPU从栈顶获得中断断点(出栈出栈),确保能返回到主程序处继续执行。45.中断源中断源引起中断的事件或设备。内部中断内部中断
3、:在CPU的内部产生。例:CPU执行程序时遇到的特殊情况,如:除法错误等。外部中断外部中断:在CPU的外部产生。例:外设提出的中断,如电源故障等。6.中断类型号中断类型号微机系统中有多个中断源。为便于区分,为每个中断源分配一个编号编号,即中断类型号。57.中断接口中断接口当中断源向CPU发中断请求时,需由硬件电路来进行管理管理,如:屏蔽某中断请求、接受某中断请求、中断优先级排队、中断嵌套和中断结束等。实现以上中断管理的逻辑电路逻辑电路称为中断接口。本章使用8259A可编程中断控制器对系统的中断进行管理。68.中断识别中断识别指CPU确定确定哪一个中断源发出中断请求的过程。目的目的:最终形成该中
4、断源所对应的中断服务程序的入口地址入口地址,实现程序的转移。中断识别的2种方法:查询中断查询中断:采用软件或硬件查询技术来确定发出中断请求的中断源。向量中断向量中断:由中断向量指示中断服务程序的入口地址。79.中断向量和中断向量表中断向量和中断向量表中断向量:指中断服务程序的入口地址入口地址。每个中断服务程序都有一个确定确定的入口地址。包含段基址段基址CS和偏移地址偏移地址IP,共占4个字节。中断向量表:将系统中所有的中断向量集中起来,按中断类型号从小到大的顺序存放在内存某区域。这个存储区域称为中断向量表。PC机中共有256个中断(0255),每个中断向量占4个字节,共占1KB的存储区域。用
5、000003FFH 的内存单元存储中断向量表。8(2)中断过程 从中断源请求请求中断到完成中断服务程序后返回返回主程序的过程,称为中断过程。包含4个阶段。1.中断源请求中断中断源请求中断外设发出中断请求时,中断接口电路一般应设置中断中断请求触发器请求触发器,保持外设的中断请求信号保持外设的中断请求信号,直到CPU响应该中断后才清除它。中断接口电路应设置中断屏蔽寄存器中断屏蔽寄存器,CPU可通过对其进行设置,使得某些中断源的中断请求不能提交到CPU。92.中断判优中断判优由于同一时刻可能会有多个中断源同时请求中断服务,因此接口电路需对这些中断源进行优先级判别优先级判别和优先级排队优先级排队。这个
6、过程称为中断判优。CPU按照优先级的高低循序来响应中断。103.中断响应中断响应收到中断请求后,若CPU满足响应条件,则进入中断响应周期。CPU响应中断的条件如下:CPU当前指令执行结束。没有更高级的中断请求在执行。CPU处于开中断状态(IF=1)。可用指令改变IF的状态:STI开中断;CLI关中断。中断响应周期需完成的操作(CPU硬件自动完成硬件自动完成)清除中断允许标志位IF和单步陷阱标志位TF,以免在响应过响应过程中程中被新的中断源中断,破坏了当前中断处理的现场。将标志寄存器FLGAS和中断断点(CS、IP)压栈保存。查找中断向量表,获得ISR的入口地址,执行ISR。114.中断服务中断
7、服务CPU转入中断服务程序后,需做以下几件事情:保护现场保护现场:ISR将要用到的寄存器压栈,以免其数据破坏。开中断开中断:以便在执行ISR时,能响应更高级的中断请求。中断处理中断处理:处理中断请求所要求的操作。关中断关中断:保证在恢复现场时不被新的中断打断。恢复现场恢复现场:在ISR结束前,执行出栈操作,恢复各寄存器的内容,以便主程序正确执行。开中断开中断:保证返回主程序后仍能响应中断。中断返回中断返回:ISR的最后一条指令为IRET,它将IP、CS和FLAGS的内容依次弹出,以便恢复到主程序的断点处。1213中断响应及处理过程示意图中断响应及处理过程示意图(3)中断管理 中断管理包括中断源
8、识别、优先级排队和中断嵌套。1.中断源识别中断源识别PC机内有多个中断源,CPU收到中断请求后,需识别是哪一个中断源发出了中断请求信号,以便执行相应的中断服务程序。中断源识别的两种方法:软件查询软件查询:CPU逐个查询各中断源的状态,从而确定是哪个设备发出了中断请求。硬件处理硬件处理:中断接口电路将要响应的中断类型号中断类型号送给CPU。142.中断的优先级排队中断的优先级排队当有多个中断源同时请求中断时,由于CPU在同一时在同一时刻只能响应并处理一个中断请求刻只能响应并处理一个中断请求,因此,需根据中断的性质及轻重缓急对多个中断源进行优先级排队。CPU先响应优先级高的中断请求。高优先级的中断
9、请求可中断低优先级的中断服务。优先级排队的方法:软件查询法硬件菊花链排队法可编程中断控制器排队法15n软件查询法软件查询法16软件查询法的编程实现有2种方法:屏蔽法、移位法。屏蔽法屏蔽法17IN AL,20H ;读取中断请求触发器的内容TEST AL,80H JNE A_ISP ;外设A有请求,则转入A的服务程序TEST AL,40H JNE B_ISP ;外设B有请求,则转入B的服务程序TEST AL,20HJNE C_ISP ;外设C有请求,则转入C的服务程序移位法移位法18IN AL,20HSHL AL,1JC A_ISP ;外设A有请求,则转至A的服务程序SHL AL,1JC B_IS
10、P ;外设B有请求,则转至B的服务程序SHL AL,1JC C_ISP ;外设C有请求,则转至C的服务程序软件查询法的优缺点:l 优点:实现简单,节省硬件。l 缺点:中断源较多时,查询程序较长中断源较多时,查询程序较长,由查询转入相应的中断服务程序入口需要的时间较长。查询的先后顺序决定了中断的优先级顺序查询的先后顺序决定了中断的优先级顺序:先被查询的中断,优先级最高。19n硬件菊花链法硬件菊花链法 在每个外设的接口上接一个逻辑电路接一个逻辑电路,这些电路构成一个链来实现中断应答信号的控制中断应答信号的控制,称为菊花链。20(a)菊花链(b)菊花链逻辑电路 菊花链工作原理l中断请求中断请求:设备
11、A、B、C通过接口发出中断请求:1有请求,0无请求。只要有一个设备发出请求,则 INTR=1。l中断响应中断响应:若CPU允许中断,则发INTA中断响应信号。该信号先送给外设A的菊花链电路。若A没有请求,则它输出的INTA仍为0,继续往下传。若A有中断请求,则经过或门时,由于其中断请求为1,故输出的INTA为1,使得后继的中断得不到响应。21特点:越特点:越靠近靠近CPU的外设,优先级越高。的外设,优先级越高。n可编程控制器排队法可编程控制器排队法l早期的PC多采用软件查询或菊花链法。l目前的PC一般采用专用的可编程控制器芯片来完成中断优先级的排队管理,如8259A。223.中断嵌套中断嵌套C
12、PU正在处理某个中断的过程中,若出现了级别更高的中断请求,则CPU停止执行级别低的ISR,而转去处理级别更高的中断。等高级别的中断处理完后,再返回原来的低级中断继续执行,依次类推,直到返回主程序。这种方式称为多重中断多重中断或中断嵌套中断嵌套。23内容概要248259A的应用举例48086/8088 微机中断系统28259A可编程中断控制器3PC 机中的中断应用5中断技术概述1l 中断的常用术语:9个基本概念l 中断过程:申请、判优、响应、服务l 中断管理:判优、优先级、嵌套(1)中断的类型8086/8088用8位二进制数表示一个中断类型号,可区分256个中断源。8086/8088中断系统的结
13、构25n外部中断外部中断 由CPU外的硬件产生,又称硬件中断硬件中断。有以下2种:NMI(不可屏蔽中断)(不可屏蔽中断)上升沿触发,不受中断允许标志位不受中断允许标志位IF的控制的控制。无论IF如何,只要NMI信号有效,CPU在当前指令结束后,立刻响应该中断。(Sti 和 Cli 指令无效)中断类型号为中断类型号为2,CPU无需发中断响应即可立即进入2号中断服务程序执行。在外部中断中,NMI的优先级最高的优先级最高,用于电源掉电、时钟错误等紧急情况,一般用户不能使用用户不能使用。26 INTR(可屏蔽中断)(可屏蔽中断)高电平触发,必须保持到当前指令结束。受中断允许标志位受中断允许标志位IF控
14、制控制。Sti 指令允许中断,Cli 指令禁止中断。中断类型号为中断类型号为 080FH 和和 070H077H。当中断允许时,CPU发出中断响应信号INTA,并从8259A获得中断源的中断类型码。中断响应的条件:有中断请求信号系统处于开中断状态27n内部中断内部中断 由CPU执行指令产生的中断,又称软件中断软件中断。除法错除法错当除数为0,或对带符号数进行除法运算时所得结果超出规定的范围,则CPU自动产生该中断。中断类型号为0。28 单步中断单步中断CPU每执行一条指令,就进入一次单步中断。其ISR的功能是显示显示出CPU内部各寄存器的内容。单步中断在调试程序调试程序时非常有用。受标志寄存器
15、TF标志位控制。TF=1时,CPU自动产生单步中断。中断类型号为1。29 断点中断断点中断 INT单字节中断指令,默认中断类型号为3。调试时可在程序关键处程序关键处设置断点。当程序执行到该指令处,转去执行一个断点中断,其功能是显示CPU内部各寄存器的内容,并给出一些提示信息。30 溢出溢出中断中断 INTO单字节中断指令。CPU执行该指令时,产生类型号为4的内部中断。该指令总是跟在带符号数加、减法运算指令之后在带符号数加、减法运算指令之后。若标志寄存器的OF=1,执行溢出中断,其中断服务程序给出出错信息;若OF=0(无溢出),也进入该中断,但只对标志位进行测试,即返回原程序。用户定义的软件中断
16、用户定义的软件中断双字节中断指令INT n,由用户定义,类型号为n。软件中断不可被屏蔽。CPU不发响应信号,中断控制器不提供中断类型号。31n内、外中断的优先级次序内、外中断的优先级次序8086/8088系统中,除单步中断外,所有内部中断的优先内部中断的优先级均高于外部中断级均高于外部中断。除单步中断外,所有内部中断都不能被屏蔽。32中断名中断名中断类型号中断类型号优先级优先级除法出错类型0高低INT n类型nINTO类型4NMI类型2INTR外设送入单步类型1(2)中断向量表8086/8088系统支持256个中断源,各个中断源用不同的中断类型号中断类型号标识,即:0255。每个中断源都有相应
17、的中断服务程序,每个中断服务程序都有不同的入口地址入口地址(又称中断向量又称中断向量)。每个入口地址由4个字节标识:低2个字节:存放中断入口的偏移地址(偏移地址(IP)。高2个字节:存放中断入口的段基址(段基址(CS)。l系统各个中断入口地址的集合形成中断向量表中断向量表。共占1KB空间,地址范围 00000H003FFH。3334由于0255号中断的入口地址依次连续排列连续排列,故:已知某中断的类型号为n,可算出其对应的中断服务程序入口地址在中断向量表中存储的位置。方法方法:类型号 n4=中断向量在中断向量表中的首地址,然后顺序取出4个字节内存单元的内容,低2个字节送入偏移地址IP,高2个字
18、节送入段地址CS,即:(IP)(4n+1,4n)。(CS)(4n+3,4n+2)。l获得了中断的入口地址,即可转入相应的中断服务程序执行中断处理过程。35【例5-1】已知类型号为15H的中断,其中断服务子程序存放在内存的5678H:0100H 5678H:0123H单元。画出该中断的中断向量在中断向量表中的位置和内容。解:解:l中断服务程序的入口地址(起始地址)为5678H:0100H,其中偏移地址IP的内容为0100H,段地址的内容为5678H。l已知中断类型号为15H,n 4 =15H 4=0054H,故 0054H 和 0055H单元存放偏移地址0100H。0056H 和 0057H单元
19、存放段地址 5678H。由此可画出中断向量在中断向量表中的位置和内容。3637(3)中断向量的设置与修改中断向量表建立中断类型号中断类型号与中断向量中断向量(即中断服务程序)之间的对应关系。中断类型号固定不变,但其对应的中断向量(即存储单元中存储的内容)可以修改修改和变化。(注:系统中的一些专用中断专用中断不允许修改)设置或修改中断向量前,要关闭中断,避免在设置或修改过程中被中断。设置设置中断向量的2种方法:直接写入法利用DOS功能调用38 直接写入法直接写入法 直接使用数据传送指令数据传送指令或串操作指令串操作指令把中断向量写入向量表对应的单元中。【例5-2】设中断类型号为n,对应的中断服务
20、程序名为P1,则设置中断向量时需将P1程序的偏移地址偏移地址放到内存0000段的4n+1、4n单元中;将其段地址段地址放到 4n+3、4n+2单元中。3940CLI;关中断MOVAX,0MOVDS,AX;中断向量表段基址段基址为0MOVBX,n*4;中断类型号为nMOVAX,OFFSET P1MOVDS:BX,AX;偏移地址放入4n,4n+1单元MOV AX,SEG P1MOV DS:BX+2,AX;段地址写入4n+2,4n+3单元STI;开中断【例5-3】某外设的中断服务程序名为P1,中断类型号为5。请使用直接写入法设置其中断向量。41CLI ;关中断MOVAX,0MOVDS,AX ;中断向
21、量表段基址段基址为0MOVAX,OFFSET P1MOV0014H,AX ;4*5=0014HMOV AX,SEG P1MOV 0016H,AX ;段地址写入0016H,0017H单元STI ;开中断 DOS 功能调用写入法功能调用写入法 使用INT 21H中断的25H号功能调用号功能调用,设置中断向量。功能号:AH=25H 入口参数:DS=中断服务程序入口地址的段基址段基址 DX=中断服务程序入口地址的偏移量偏移量 AL=中断类型号中断类型号42【例5-4】某外设的中断服务程序名为P1,中断类型号为5。请使用DOS功能调用法设置其中断向量。43PUSH DS ;原 DS 入栈MOVAX,SE
22、G P1 ;段基址存入DS中MOVDS,AXMOV AX,OFFSET P1MOV DX,AX ;偏移地址存入DX中MOV AL,5 ;中断类型号在AL中MOV AH,25H ;DOS调用功能号INT 21HPOP DS ;DS出栈中断向量的修改中断向量的修改 中断类型号不变,但是其指向的中断服务程序(入口地址)改变,即中断向量改变。修改中断向量的步骤:1.利用35H号功能,获取原中断向量获取原中断向量,并保存。2.利用25H号功能,设置新的中断向量设置新的中断向量。3.新的中断服务程序服务完毕,利用25H号功能恢复恢复原中断向量原中断向量。4435H号功能号功能读取中断向量读取中断向量 入口
23、参数:AH=35H,AL=中断号 出口参数:ES=中断服务程序入口地址的段基址段基址 BX=中断服务程序入口地址的偏移地址偏移地址25H号功能号功能设置新的中断向量设置新的中断向量 入口参数:AH=25H,AL=中断号 DS=中断服务程序入口地址的段基址 DX=中断服务程序入口地址的偏移地址 出口参数:无45【例5-5】修改类型号为n的中断向量,使得新中断服务程序入口地址的段基址为SEG_INTR,偏移地址为OFFSET_INTR。对应的程序段为:46MOVAH,35H ;获取获取原中断向量MOVAL,nINT 21H ;保存在 ES:BX中MOV OLD_OFF,BX ;保存保存原中断向量的
24、偏移量MOV BX,ESMOV OLD_SEG,BX ;保存原中断向量的段基址47MOVAH,25H ;设置设置新的中断向量MOVAL,nMOV DX,SEG_INTRMOV DS,DX;DS=段基址MOV DX,OFFSET_INTR;DX=偏移地址INT 21HMOVAH,25H ;恢复恢复原中断向量MOVAL,nMOV DX,OLD_SEGMOV DS,DX;DS=段基址MOV DX,OLD_OFF;DX=偏移地址INT 21H内容概要488259A的应用举例48086/8088 微机中断系统28259A可编程中断控制器3PC 机中的中断应用5中断技术概述1l 中断的类型:外部中断与内部
25、中断l 中断向量表:中断入口地址的排列l 中断向量表的设置与修改 6.3 8259A可编程中断控制器Intel 8259A是一种可编程中断控制器,可协助CPU对系统的中断进行管理管理。8259A的功能:接受和扩充外设的中断请求中断优先级排队提供中断类型号屏蔽或打开中断接受CPU命令或返回当前工作状态一片8259A可直接管理8级中断,通过级联可扩展至64级中断。通过对8259A进行编程,可设置多种工作方式,以满足不同中断系统的需要。49(1)8259A 的内部结构501.数据总线缓冲器数据总线缓冲器8位的双向三态缓冲器,用来连接8259A与系统的数据总线。8259A通过它与CPU进行命令、状态和
26、数据信息的传送。2.读读/写控制逻辑写控制逻辑接收CPU的读写命令,完成对8259A内部端口的读写操作。具体操作内容由CS、RD、WR 和 A0 信号来决定。513.级联缓冲级联缓冲/比较器比较器CAS0 CAS2 用于多块8259A的级联。4.中断请求寄存器中断请求寄存器(IRR)8位寄存器,通过引脚 IR0 IR7 与8个中断源相连。若IRi=1,则 IRR寄存器相应的第 i 位置1,表明该中断源有中断请求。5.中断屏蔽寄存器中断屏蔽寄存器(IMR)8位寄存器,第 i 位为1,表示屏蔽 IRi 的请求。其值可通过软件设置或改变。526.中断优先权判别电路中断优先权判别电路 PR对已进入IR
27、R且未被IMR屏蔽的各中断请求进行优先权判别,确定一个优先级最高的中断,向CPU发送中断请求信号INT。若CPU响应该中断,则在中断服务寄存器ISR中相应位置1,表示CPU目前正在为该中断服务。若8259A正在为某一中断服务时,又出现了新的中断请求,则PR判断新的中断请求新的中断请求优先级是否更高。若是,则进入中断嵌套中断嵌套。537.中断服务寄存器中断服务寄存器(ISR)8位寄存器,用来记录CPU当前正在为哪个或哪几个中断源服务。当CPU响应 IRi 请求时,ISR中相应的位置1。当ISR中有多个1时,表明CPU处于中断嵌套中。当某个中断处理完毕,ISR相应的位复位。548.控制逻辑控制逻辑
28、作用:根据IRR、IMR和PR的状态,通过INT信号向CPU发送中断请求。接受来自CPU的中断响应信号INTA,使ISR相应的位置1,且使IRR相应的位清0,避免该中断源的一次请求产生多次中断。内部包含7个寄存器:ICW1 ICW4 存放初始化命令字,用来设置8259A的工作方式和工作条件工作方式和工作条件等。OCW1 OCW3 存放操作命令字,用来对中断处理过程进行动态控制动态控制。55几个缩写字母的含义几个缩写字母的含义IRR:中断请求寄存器(Interrupt Request Register)IMR:中断屏蔽寄存器(Interrupt Mask Register)ISR:中断服务寄存器
29、(In Service Register)PR:优先级裁决器(Priority Resolver)ICW:初始化命令字(Initialization Command Word)OCW:操作命令字(Operation Command Word)56(2)8259A 外部引脚57D7 D0:双向三态数据线,可与系统数据总线相连,用于在8259A与CPU间传送命令、状态等信息。A0:用于选择8259A内部寄存器的端口地址。8259A内有2个端口地址:A0=0对应的端口称为“偶端口偶端口”,A0=1对应的端口称为“奇端口奇端口”。WR、RD、CS:写、读、片选信号。INT:中断请求信号,高有效。向CP
30、U发中断请求。INTA:中断响应信号,为2个负脉冲。第一个负脉冲作为中断应答信号,CPU发发LOCK信号信号,防止其它处理器或DMA控制器占用总线。第二个负脉冲到来时,8259A告知告知CPU中断类型号中断类型号。58IR7 IR0:中断请求输入信号,高电平或上升沿有效。CAS2 CAS0:级联信号线,双向。主片8259A的 CAS2 CAS0 为输出。从片8259A的 CAS2 CAS0 为输入。SP/EN:主从片设定/允许缓冲信号,双向双功能。缓冲方式下,为输出信号,EN信号控制缓冲器。非缓冲方式下,作为输入信号,表示8259A是主片(SP=1)还是从片(SP=0)。59(3)8259A
31、工作方式1.8259A 的工作过程的工作过程 单片8259A工作时,每次中断处理过程如下:当 IR7 IR0 上有中断请求,则 IRR 中相应的位置1。对于已进入IRR且未被IMR屏蔽的中断请求,PR电路进行优先级判定,得到最高级的中断请求。控制逻辑接收中断请求,向CPU发 INT 信号。若CPU允许中断,则在当前指令结束后连续发出2个中断应答信号INTA,进行中断响应。每个信号持续2个时钟周期。60CPU发第一个 INTA 时,输出总线锁定信号 LOCK,防止其它处理器或DMA控制器占用总线。8259A收到第一个负脉冲后,将优先级最高的中断ISR相应位置1,同时使IRR相应位清0。61CPU
32、发第二个 INTA 时,撤销总线锁存信号 LOCK,地址允许信号 ALE 无效,允许数据线工作。8259A收到第二个负脉冲后,将相应中断的类型号中断的类型号送到数据线上。CPU读取中断类型号,查找中断向量表查找中断向量表得到中断向量,转而进入中断服务程序。若系统为自动结束中断方式(AEOI),则8259A会在第二个脉冲结束时,自动自动将ISR的相应位复位;若是非自动结束中断方式(EOI),则ISR相应位的“1”一直保持,直到CPU发EOI(中断结束)命令时才将其复位。622.8259A 的级联方式的级联方式单片8259A最多可管理8级中断。当中断源多于8个时,需将多个8259A芯片级联构成主从
33、模式主从模式。系统最多支持8个8259A芯片级联,即:最多可支持64个中断源。每个从片的IR7 IR0可直接与8个中断源相连,经过优先级判优后主片发送INT信号。主片对所有从片发来的INT进行判优后,最终向CPU发INT信号。6364SP/EN 引脚用于区分8259A是主片还是从片。高电平为主片,低电平为从片。主从片通过CAS2CAS0 互连。主片的CAS2CAS0为输出信号,从片的CAS2CAS0 为输入信号。当CPU发出第一个INTA时,主片使ISR相应的位置1,使IRR的相应位清0;并通过CAS2CAS0 输出一组从片的编码从片的编码 ID2ID0。从片收到该编码后,与自身存储在 ICW
34、3 中的 D2D0 编码进行比较比较。若相同,则在第二个INTA信号到来时,将从片的中断类型号送到数据总线。653.8259A的中断触发方式的中断触发方式电平触发电平触发:IRi 端出现高电平时,有中断请求。边沿触发边沿触发:IRi 端出现上升沿时,有中断请求。66注意注意:当该中断请求得到响应后(ISR相应位置1),必须及时撤销其高电平,否则可能会再次触发中断。优点优点:IRi 端可一直保持高电平,而不会被误判为又一次中断请求。4.8259A的中断屏蔽方式的中断屏蔽方式普通屏蔽方式普通屏蔽方式中断屏蔽寄存器IMR的某位为1,则禁止相应的中断请求;若为0,则允许相应的中断请求。由于优先权判别器
35、PR的作用,只有级别高的中断级别高的中断源才允许中断。若CPU执行主程序时不希望某些中断源申请中断,或者在处理某中断时不希望比该中断级别低的中断源申请中断,可采用该方法。67特殊屏蔽方式特殊屏蔽方式在处理某中断时,若想开放级别较低的中断请求级别较低的中断请求,则要将IMR中本级中断的相应位置1,使得本级中断被屏本级中断被屏蔽蔽,为开放级别较低的中断提供可能。此外,还应将本级中断本级中断ISR的相应位复位的相应位复位,才能够允许级别较低的中断请求。即:设置特殊屏蔽方式后,IMR的某位置1,同时使ISR 的对应位复位。这样既可屏蔽本级中断,又可真正开放级别较低的中断。68与普通屏蔽的区别区别:特殊
36、屏蔽方式除了在IMR中屏蔽本级中断源外,还需使当前ISR的相应位复位。5.8259A的中断优先权管理方式的中断优先权管理方式固定优先级固定优先级 各中断源的优先级由 IRi 端引脚的编号所决定。n普通全嵌套方式普通全嵌套方式简称全嵌套方式,是8259A最基本、最常用的方式。IR0 优先级最高,IR7 最低。一个中断被响应时,只有更高级的中断请求才会被响应。69n特殊全嵌套方式特殊全嵌套方式一般用于级联级联场合。不但响应更高级别的中断,还可响应同级别的中断。级联时从片的 INT端连接主片的 IRi 端。从片上不同级别的中断请求,主片视之为同一级别。采用普通全嵌套,则无法再次响应第二次高级别的中断
37、。而采用特殊全嵌套方式,则可正常响应。70l单片8259A时,通常采用普通全嵌套方式即可。l多片级联时,从片可采用普通全嵌套方式,而主片主片必须采用特殊全嵌套必须采用特殊全嵌套,以便响应“同级”中断。循环优先级(轮转)循环优先级(轮转)某中断接收服务后,其优先权自动降为最低,而相邻中断源的优先级升为最高。n优先权优先权自动自动循环方式循环方式初始时,IR0 优先级最高,IR7 优先级最低。n优先权优先权特殊特殊循环方式循环方式该方式下,由用户编程来指定指定初始时哪个中断源的优先级最低。例:初始时规定 IR5 最低,则优先级顺序为:IR6 IR7 IR0 IR4 IR5。716.8259A的中断
38、结束方式的中断结束方式当某个中断请求得到响应时,其ISR的相应位置1。当其中断服务结束时,其ISR中的相应位必须清0。中断结束方式是指使指使ISR相应位复位的方式相应位复位的方式。8259A有2种中断结束方式自动结束方式(AEOI)非自动结束方式(EOI)72自动结束方式(自动结束方式(AEOI)该方式下,ISR中的相应位复位由8259A硬件自动完成。(硬件自动复位硬件自动复位)当CPU响应某中断时,8259A第二个第二个INTA信号信号的下降沿自动将ISR的相应位复位。注意:此时中断服务程序并未结束。该方式只适用于单片8259A芯片、且不会发生中断嵌套的场合。因为第二个INTA信号自动将IS
39、R的相应位复位,但此时中断服务程序并未结束,却会响响应级别较低应级别较低的中断请求,则高级的中断请求高级的中断请求反而可能得不到及时处理。73非自动结束方式(非自动结束方式(EOI)该方式下,由CPU发EOI命令来使ISR的相应位复位。n普通中断结束方式普通中断结束方式CPU向8259A发送中断结束命令EOI,使当前 ISR 中级别最高级别最高的位复位。该方式只适用于全嵌套方式全嵌套方式,不能用于循环优先级方式。因为只有在全嵌套方式下,当前 ISR 中级别最高的位对应的才是当前正在处理的中断。74n特殊中断结束方式特殊中断结束方式CPU向8259A发送EOI命令,该命令字指定指定了要结束哪一级
40、中断源,从而使ISR相应的位复位。多片8259A级联时,在中断结束前,必须检查刚结束的中断是否是该从片的唯一中断。要等该从片的中断服务全部结束后,才能给主片发中断结束命令。757.8259A 连接系统总线的方式连接系统总线的方式缓冲方式缓冲方式多片8259A级联时,8259A 通过总线驱动器总线驱动器与数据总线相连。此时8259A的 SP/EN 端输出一个低电平(EN=0)作为总线驱动器的启动信号。即:SP/EN 信号与总线驱动器的允许端相连。7677输出输出信号信号缓冲器缓冲器非缓冲方式非缓冲方式当系统中只有单片或少数几片 8259A 时,8259A 可直接直接与数据总线相连。此时,8259
41、A的SP/EN端作为输入信号。单片8259A时,SP=1。多片8259A 级联时,主片的 SP=1,从片的 SP=0。7879(3)8259A 编程80CPU向8259A发送的命令字分为以下2种:l初始化命令字初始化命令字 ICW包含ICW1 ICW4 四个命令字,在系统启动时启动时由初始化程序设置。一旦设定后,在系统工作过程中一般不再改变不再改变。l操作命令字操作命令字 OCW包含OCW1OCW3,由应用程序设定,用来对中断处理过程进行动态控制动态控制,如:中断屏蔽、中断结束、优先权设定、中断状态的查询等。可多次设置多次设置。818259A 只有一根输入地址线只有一根输入地址线 A0,如何区
42、分,如何区分7个寄存器?个寄存器?ICW1:20H A0=0,D4=1ICW2:21H A0=1ICW3:21H A0=1,ICW1中的 SNGL(D1)=0ICW4:21H A0=1,ICW1中的 IC4(D0)=1OCW1:21H A0=1OCW2:20H A0=0,D3D4=00OCW3:20H A0=0,D3D4=1082采用特征位法特征位法、时序法时序法及读写分时法读写分时法解决端口冲突。(一)初始化命令字 ICW1.ICW1:设置中断请求方式、是否级联等。:设置中断请求方式、是否级联等。83不用。任意值不用。任意值表表 ICW1 要要写入偶端口写入偶端口特征位特征位1LTIMADI
43、SNGLIC4D7D6D5D4D3D2D1D00A0中断请求方式中断请求方式1:电平触发:电平触发0:边沿触发:边沿触发8086/8088中不用中不用是否级联是否级联1:单片:单片0:级联:级联1:需要:需要ICW40:不需要:不需要84lD0(ICW4)的设置:8086/8088系统必须必须设置 D0=1,即:需要 ICW4。l写入ICW1后,8259A内部有一个初始化过程初始化过程,相当于Reset 功能,其作用作用:指示8259A顺序逻辑复位,即它准备按 ICW2、ICW3、ICW4 的顺序接受其余初始化命令字。清除 IMR、ISR。指定优先级方式为全嵌套方式、普通屏蔽方式、非自动中断结
44、束方式。85【例5-6】若 8259A 采用电平触发,单片使用,需要 ICW4,请写出 ICW1 的初始化程序段。1LTIMADISNGLIC4D7D6D5D4D3D2D1D00A0MOVAL,1BH;ICW1=0001 1011OUT20H,AL;偶端口2.ICW2:设置类型码。:设置类型码。86高高5位由用户编程设定位由用户编程设定表表 ICW2 要要写入奇端口写入奇端口T7T6T5T4T3D7D6D5D4D3D2D1D01A0低低3位由位由 IR7 IR0自动生成自动生成l中断类型号=高5位(ICW2)+低3位(IRi 的编码)。lICW2 紧随 ICW1 之后。CPU响应中断发第2个I
45、NTA时,8259A 将ICW2的内容(中断类型号)送到数据总线。87【例6-7】在PC微机中断系统中,硬盘中断类型号的高5位是08H,它的中断线连接到 8259A 的 IR5 上,请写出设置 ICW2 的程序段。MOVAL,08H;高5位OUT21H,AL;奇端口 CPU响应硬盘中断后,8259A把IR5的编码101作为低3位,与ICW2中设置的高5位合一起,构成完整的8位中断类型号0DH,经数据总线提供给CPU。T7T6T5T4T3D7D6D5D4D3D2D1D01A03.ICW3:设置级联方式。:设置级联方式。l仅当级联模式下(即 ICW1 的 SNGL=0 时)才需设置ICW3。这时需
46、分别对主片主片和从片从片进行设置。l主片主片ICW3:说明主片 IR7 IR0 的哪些引脚上连有从片。88S7S6S5S4S3S2S1S0D7D6D5D4D3D2D1D01A01:IRi 上接有从片上接有从片0:IRi 上未接从片上未接从片表表 ICW3 要要写入奇端口写入奇端口l从片从片ICW3:ID2ID0的编码值说明该从片的INT信号连接至主片 IR7 IR0 的哪个引脚。89ID2ID1ID0D7D6D5D4D3D2D1D01A0任意任意表表 ICW3 要要写入奇端口写入奇端口000:连至主片的:连至主片的 IR0 111:连至主片的:连至主片的 IR7例:从片的 INT 连接至主片的
47、 IR5,则 ID2ID0=101。4.ICW4:设置缓冲方式、中断结束方式等。:设置缓冲方式、中断结束方式等。当 ICW1 的 IC4=1时,需设置ICW4。90000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0表表 ICW4 要要写入奇端口写入奇端口1:缓冲方式:缓冲方式0:非缓冲方式:非缓冲方式1:特殊全嵌套:特殊全嵌套0:普通全嵌套:普通全嵌套1:主片:主片0:从片:从片1:AEOI0:EOI1:8086/80880:8080/8085特征位特征位当 buf=0时 M/S位不起作用91【例5-8】PC机中,单片8259A与系统总线之间采用缓冲器连接,非自动结
48、束方式,正常完全嵌套。请写出设置 ICW4 的程序段。MOVAL,0DH;0000 1101BOUT21H,AL;奇端口000SFNMBUFM/SAEOIuPMD7D6D5D4D3D2D1D01A0(二)8259A 初始化编程要使中断系统正常工作,CPU必须对系统中的每片8259A 进行初始化编程,即:顺序顺序将ICW1 ICW4 写入各个8259A芯片。单片8259A时,需依次写入ICW1、ICW2 和 ICW4。多片8259A时,需依次写入ICW1 ICW4。929394【例5-9】IBM PC/XT机中,仅用单片8259A,中断请求采用边沿触发,中断类型号为08H 0FH,普通全嵌套,缓
49、冲方式,非自动中断结束方式。8259A的端口地址为20H和21H。请按上述要求对8259A进行初始化编程。MOV AL,00010011B ;ICW1:边沿触发,单片,需ICW4OUT 20H,ALMOV AL,00001000B ;ICW2:08H0FH 的高5位OUT 21H,ALMOV AL,00001101B ;ICW4:全嵌套,缓冲,EOI方式OUT 21H,AL95【例5-10】IBM PC/AT机中,使用两片8259A构成主从中断系统。从片的 INT 与主片的IRQ2相连。主片的中断类型号为08H 0FH,端口地址为20H和21H。从片的中断类型号为70H 77H,端口地址为0A
50、0H和 0A1H。主片、从片均采用边沿触发、缓冲、非自动中断结束方式。请按照上述要求对8259A进行初始化编程。96主片编程:MOV AL,00010001B ;ICW1:边沿触发、级联、需 ICW4OUT 20H,ALMOV AL,00001000B ;ICW2:08H0FH 的高5位OUT 21H,ALMOV AL,00000100B ;ICW3:主片 IRQ2 接有从片OUT 21H,ALMOV AL,00011101B ;ICW4:特殊全嵌套、缓冲方式、OUT 21H,AL ;主片、EOI方式97从片编程:MOV AL,00010001B ;ICW1:边沿触发、级联、需 ICW4OUT
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。