1、7.5 可编程中断控制器 8259An8259A的的功能功能n8259的引脚与功能结构的引脚与功能结构n8259A的中断工作过程的中断工作过程n8259A的工作方式的工作方式n8259A的编程的编程n8259A在在IBMPC/XT中的应用举例中的应用举例17.5 可编程中断控制器 8259A一、功能一、功能nIntel 8259A是可编程中断控制器,配合是可编程中断控制器,配合80X86CPU管理可屏蔽中断管理可屏蔽中断n中断优先权的管理中断优先权的管理n中断屏蔽的管理中断屏蔽的管理n中断结束的管理中断结束的管理28259An8259A8259A具体功能具体功能:n1片片8259A可以管理可以
2、管理8级中断,经级连最多可扩展至级中断,经级连最多可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在中断响应周期,在中断响应周期,可提供可提供中断向量号(配合中断向量号(配合I8086/88/286/386),或或相应的调用指令(配合相应的调用指令(配合 I8080/85)。)。n8259A有多种工作方式,可通过初始化编程进行设置。有多种工作方式,可通过初始化编程进行设置。3二、8259的引脚与功能结构D7D0INTAINT中断请求寄存器中断请求寄存器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲
3、器比较器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路优先权判别电路中断服务寄存器中断服务寄存器控制逻辑控制逻辑48259的内部结构1。中断请求寄存器。中断请求寄存器IRRn保存保存8条外界中断请求信号条外界中断请求信号IR0IR7的请求状态的请求状态nDi位为位为1表示表示IRi引脚有中断请求;引脚有中断请求;为为0表示无请求表示无请求2、中断服务寄存器、中断服务寄存器ISRn保存正在被保存正在被8259A8259A服务着的中断源服务着的中断源 (或已进入中断处理程(或已进入中断处理程序)。序)。nDiDi位为位为1 1表示表示IRiIRi中断正在服务中;为中断正在服
4、务中;为0 0表示没有被服务表示没有被服务3、中断屏蔽寄存器、中断屏蔽寄存器IMRn保存对中断请求信号保存对中断请求信号IRi的屏蔽状态的屏蔽状态nDi位为位为1表示表示IRi中断被屏蔽(禁止);为中断被屏蔽(禁止);为0表示允许表示允许8259占用两个端口地址占用两个端口地址A0=1、0(奇地址、偶地址)奇地址、偶地址)。见见P252 图图8-13 8259A与系统总线的连接与系统总线的连接55.控制逻辑控制逻辑 控制逻辑电路中,有一组初始化命令字Reg:ICW1ICW4 一组操作命令字Reg:OCW1OCW3。系统刚开始时,初始化命令字送8259A,以后过程中将保持不变,操作命令则用来在过
5、程中控制中断操作。控制逻辑按编程设定方式管理控制逻辑按编程设定方式管理8259A的全部工作。的全部工作。4.优先权判别电路优先权判别电路 用来识别和管理各中断请求信号的优先级别。6.数据总线缓冲器数据总线缓冲器 三态缓冲器。8259A与CPU的数据总线接口67.读读/写控制逻辑写控制逻辑 完成来自CPU的读写命令,及与片选信号与片选信号CS与与A0(0或或1)决定访问片内某个)决定访问片内某个Reg。通过OUT指令指令WR有效,把命令字写入ICW和OCW.通过IN指令指令RD有效,将IRR、ISR或IMR内容通过数据总线读入CPU。8.级联缓冲器级联缓冲器/比较器比较器(用于多片用于多片825
6、9之间的连接之间的连接)主从结构中,作为主设的8259A,CAS2CAS0是输出线,作为从设的8259A,CAS2CAS0是输入线,两者互连。SP/EN从片编程从片编程/缓冲器允许缓冲器允许信号线,是个双功能引脚。缓冲器方式缓冲器方式,输出信号,控制缓冲器传送方向。非缓冲器方式非缓冲器方式,它是输入信号,用于规定8259A是主(SP=1)还是从(SP=0)。在只有一片8259A的系统中,SP/EN接高电平。7三、8259A的中断工作过程 0010000000000000ISRIRRD0D7D0D70 0 0 0 0 0 0 0IMR优先权电路INTINTACPUINTRINTAD2111 08
7、2.当外设发出中断请求后,其对外部中断请求的处理过程如下:若有若有IRi=1,则,则IRR中相应位中相应位置置1。若对应若对应IMR中的相应位为中的相应位为0,则,则8259A向向CPUINTR。若若IF=1,则,则CPU在执行完当前指令后,发第一在执行完当前指令后,发第一 个个 INTA8259A ISR中对应当前最高优先权的位为中对应当前最高优先权的位为1,且,且IRR中相应位中相应位清清0。CPU发第二个发第二个INTA8259A,8259ADB上送上送8位的向量号位的向量号N (即即中断类型号,中断类型号,初始化初始化8259A时已设定好时已设定好)。CPU做:做:N4 从中断向量表中
8、取出中断服务程序的入口地址。从中断向量表中取出中断服务程序的入口地址。若若8259A为为AEOI(自动结束中断),自动结束中断),则在第二个则在第二个INTA尾,尾,ISR中相应的位中相应的位复位复位。否则否则,至中断服务程序结束至中断服务程序结束,发出发出EOI命令使命令使ISR中相应位复位中相应位复位。8259A8259A的工作过程的工作过程1.上电后,由CPU执行一段程序对8259初始化(通过输入初始化通过输入初始化命令字实现命令字实现)。完成初始化后,8259A处于 就绪状态。CPU 进入进入响应中断的过程响应中断的过程,继而执行中断子程序继而执行中断子程序。98259A的中断过程CA
9、S0CAS2D0D7SP/ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第第1个总线周期个总线周期T1 T2 T3 T4ALECLK 第第2个总线周期个总线周期T1 T2 T3 T4第第1个个-INTA前保持高电平前保持高电平 INTALOCK中断向量主片输出级联信号从片接收10四、8259A的工作方式普通全嵌套方式普通全嵌套方式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权固定方式优先权固定方式优先权循环方式优先权循环方式 设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自
10、动中断结束方式非自动中断结束方式非自动中断结束方式 结束中断方式结束中断方式 中断屏蔽方式中断屏蔽方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式 中断触发方式中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式 数据线连接方式数据线连接方式缓冲方式缓冲方式非缓冲方式非缓冲方式 与与CPU配合方式配合方式与与8080/8085 CPU配合配合与与8086/8088 CPU配合配合 级连方式级连方式级连级连不级连不级连111.设置优先权方式n普通全嵌套方式普通全嵌套方式n8259A的中断的中断优先权顺序固定不变优先权顺序固定不变,从高到低依次为,从高到低依次为:IR0、IR1、IR2
11、、IR7n中断请求后,中断请求后,8259A对对当前请求中断中优先权最高的中断当前请求中断中优先权最高的中断 IRi 予以予以响应响应,将其向量号送上数据总线,对应,将其向量号送上数据总线,对应ISR的的 Di位置位,直到中断位置位,直到中断结束(结束(ISR的的 Di 位位复位)复位)n在在ISR的的 Di 位置位期间,位置位期间,禁止再发生同级和低级优先权的中断禁止再发生同级和低级优先权的中断,但,但允许高级优先权中断的嵌套允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式允许同级中断嵌套(用于级连主片)允许同级中断嵌套(用于级连主片)n优先权自动循环方式优先权自动循环方式最高优先权自
12、动转移到相邻的低优先级最高优先权自动转移到相邻的低优先级中断源中断源(P332),如如IR3被响应后,被响应后,IR3最低,最低,IR4最高。最高。n优先权特殊循环方式优先权特殊循环方式优先权由优先权由OCW2设置哪个设置哪个IR最低,其他最低,其他的随之确定。的随之确定。12 特殊全嵌套方式特殊全嵌套方式(适用于8259级联级联的情况的情况)级联时,主片 须采用特殊的全嵌套方式。普通全嵌套方式普通全嵌套方式常用方式,又称全嵌套方式,适用于单片单片 8259的情况。特点特点:和全嵌套方式基本相同和全嵌套方式基本相同,不同的是不同的是:在处理某以及中断时在处理某以及中断时,可响应同级中可响应同级
13、中断断,从而实现对同从而实现对同 级中断请求的特殊嵌套级中断请求的特殊嵌套.13 主片编程为特殊全嵌套方式:当处理一级中断时,如果有同级的中断请求,也会给予响应当处理一级中断时,如果有同级的中断请求,也会给予响应。否则:当从片8259IR2有中断请求,若主片是普通全嵌套方式,则会屏蔽从片上的IR0、IR1(比IR2优先级高)中断请求。因为从片上的因为从片上的8个个IRi变成了主片的同一级。变成了主片的同一级。而特殊全嵌套方式,对来自同一从片的较高优先级请求不会屏蔽。EOI从从从从ISR是是否全为否全为0 EOI主主NYIRET 在从片的中断处理程序快结束时,应给 8259A发EOI(中断结束)
14、命令,方法是:(a)向从片发EOI;(b)读从片的ISR内容:若为若为0,表示从片只有一个中断源申请中断,再向主片发一个EOI命令。若不为若不为0,表示从片存在两个以上的中断源在申请中断,则不应发EOI给主片。14(3)优先权循环方式优先权循环方式 一个系统的优先权比较复杂,所以一个系统的优先权比较复杂,所以不能总规定不能总规定IR0高高 IR7低低。8259A设计了两种改变优先权的方法。设计了两种改变优先权的方法。特殊循环方式特殊循环方式适用于中断源的优先级需要任意改变的情况适用于中断源的优先级需要任意改变的情况 通过OCW2命令字设置当前的最低优先级最低优先级IR5,使得有:IR6 IR7
15、 IR0 IR5。自动循环方式自动循环方式 适用于设备的优先权相等情况适用于设备的优先权相等情况 当一个设备受到中断服务后,它的优先级自动降到最低,其相邻的中断请求变成最高的。例如例如:IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 初始 高高 低低 若IR4有中断请求,处理IR4后,IR5成为最高优先级,优先级次序为:IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR4左循环至最低优先级。左循环至最低优先级。152.2.结束中断处理方式结束中断处理方式 在中断请求得到响应时,ISR中相应位置1,中断服务结束时,必须使这个位复位为0以标识中断处理结束。这个中
16、断结束是指8259结束中断,而不是CPU结束执行中断服务程序。非自动中断结束方式非自动中断结束方式 普通中断结束方式(普通中断结束方式(EOIEOI)适用于全嵌套方式适用于全嵌套方式 当8259A工作在全嵌套方式时,则当前服务过的中断源就是中断优先权最高的源,可以用非特殊(普通)的EOI使它在ISR中的相应位清0。这个命令加在中断服务程序的末尾处。这个命令加在中断服务程序的末尾处。自动中断结束方式自动中断结束方式(AEOI)只能用于不要求中断嵌套的情况只能用于不要求中断嵌套的情况 在第二个INTA的后沿,8259A自动把ISR的对应位清0。用于系统中只有一片用于系统中只有一片8259A,多个中
17、断不会嵌套的情形。,多个中断不会嵌套的情形。系统一进入中断处理,就将当前中断服务寄存器系统一进入中断处理,就将当前中断服务寄存器ISR的对的对应位清除。对应位清除。对8259A来说,好像已经结束了当前中断。来说,好像已经结束了当前中断。在命令字在命令字ICW4中将中将AEOI(D1)位置)位置“1”。16不管是普通、还是特殊的中断结束方式,级联系统中的中断结不管是普通、还是特殊的中断结束方式,级联系统中的中断结束必须发送两次束必须发送两次EOI:一次给从片,一次给主片。一次给从片,一次给主片。(向从片发(向从片发EOI后,须检查从片中的所有申请中断的源是否全服务过。后,须检查从片中的所有申请中
18、断的源是否全服务过。只有都服务过了,才能向主只有都服务过了,才能向主8259送另一个送另一个EOI命令)。命令)。特殊结束中断方式特殊结束中断方式非全嵌套方式下非全嵌套方式下 当8259A工作在非全嵌套模式时,8259A可能不能确定刚服务的源的等级,需要用特殊的EOI命令,指出要清除哪个ISR位。17中断结束字n什么是什么是8259A的的中断结束字中断结束字(EOI)?)?n8259A判断中断服务寄存器判断中断服务寄存器ISR的状态:的状态:n若某位为若某位为1,表示该中断源正在得到服务;一般情况下,表示该中断源正在得到服务;一般情况下,将不再响应同级或低级的中断(采用特殊屏蔽方式时,将不再响
19、应同级或低级的中断(采用特殊屏蔽方式时,可响应低级别的中断)可响应低级别的中断)n若某位为若某位为0,表示该中断服务已结束,可响应低级级别,表示该中断服务已结束,可响应低级级别中断。中断。n用指令向用指令向8259A送中断结束字,可以使送中断结束字,可以使ISR的某位清的某位清0183.3.屏蔽中断源方式屏蔽中断源方式 通过通过IMRIMR编程可允许或禁止中断编程可允许或禁止中断 普通屏蔽方式普通屏蔽方式 通过命令字OCW1设置IMR某位或某几位为1,则屏蔽其中断请求。置0则允许该级中断。特殊屏蔽方式特殊屏蔽方式用于开放较低级中断请求用于开放较低级中断请求 在8259中,当一个中断请求被响应时
20、,ISR对应位置1。在该位未复位时,8259A会禁止所有优先级比它低的中断。用特殊屏蔽方式可以做到:屏蔽当前中断级(IMR对应位为1);ISR中相应位复位,则较本级低的中断源申请可以得到响应。191.屏蔽中断源方式 P331n普通屏蔽方式普通屏蔽方式n将将 IMR的的 Di 位置位置1,对应的中断,对应的中断 IRi 将被屏蔽将被屏蔽,该中断请求将不能从该中断请求将不能从8259A送到送到CPUn如果将如果将 IMR 的的 Di位置位置0,则允许,则允许对应的对应的中断产生中断产生n特殊屏蔽方式特殊屏蔽方式允许发生低级的中断嵌套,允许发生低级的中断嵌套,用于级连时的主片。用于级连时的主片。n将
21、将IMR的的 Di 位置位置1,中断,中断IRi被屏蔽;同时,被屏蔽;同时,ISR的的Di位将置位将置0,允许发生低级的中断。允许发生低级的中断。204.与CPU的配合方式n与与8086/8088 CPU配合配合中断响应时,中断响应时,INTA信号信号2个总线周期个总线周期有效有效,8259A送送相应的相应的中断向中断向量号量号(1个字节)到数据总线。个字节)到数据总线。8086/88CPU8259A中断向量号中断向量号INTAINTR211.5.级连方式n不级连不级连只用只用1片,如片,如 PC/XTn级连级连使用使用29片,如片,如 PC/AT(2片)片)主片从片-INTAINTRIR0I
22、R7IR7IR0CAS0CAS2=010INTINTD0D722中断级连n8259A可以可以级连级连,1个个主片主片最多可以级连最多可以级连8个个从片从片n级连时,级连时,主片主片的级连线的级连线CAS0CAS2连至每个从连至每个从片的片的CAS0CAS2,输出被选中的从片编号输出被选中的从片编号,n每个每个从片从片的中断请求信号的中断请求信号 INT,连至主连至主8259A的的一个中断请求输入端一个中断请求输入端IRi;主主片片的的 INT 线连至线连至CPU的中断请求输入端的中断请求输入端INTRn在非缓冲方式下,引脚在非缓冲方式下,引脚SP/EN,通过接地指定该通过接地指定该片充当从片(
23、片充当从片(-SP0););反之若接高电平则该片反之若接高电平则该片充当主片(充当主片(-SP1)。)。236.数据线连接方式n缓冲方式缓冲方式n对对8259A的数据线(输出中断向量)加的数据线(输出中断向量)加缓冲器缓冲器予以予以隔离和驱动隔离和驱动nSP/EN引脚作为引脚作为输出端输出端,输出允许信号,用以关闭,输出允许信号,用以关闭或开启缓冲器或开启缓冲器n非缓冲方式非缓冲方式nSP/EN引脚作为引脚作为输入端输入端n在在8259A级连时,用它选择该芯片充当主片或从片级连时,用它选择该芯片充当主片或从片 24CAS0 IR0CAS1 IR1CAS2 IR2 IR3INTA IR4 IR5
24、INT IR6 IR7SP/EN CAS0INTA CAS1 CAS2INT IR0 IR1SP/EN IR7CAS0 IR0CAS1 IR1CAS2 IR2 IR3INTA IR4 IR5INT IR6 IR7SP/ENINTAINTR+5V8259级联非缓冲工作示意图级联非缓冲工作示意图8259A的级连输出得到响应输出得到响应的从片编号的从片编号257.中断触发方式n边沿触发方式边沿触发方式n中断请求输入端出现中断请求输入端出现上升沿上升沿为为有效的中断请求信号有效的中断请求信号n电平触发方式电平触发方式n中断请求端出现中断请求端出现高电平高电平为有效为有效的中断请求信号的中断请求信号26
25、 8259A是可编程中断控制器,对其编程可以分为两部分:初始化编程初始化编程:由CPU向8259A送24个字节的初始化命令字 ICW(Initialization Command Word)。工作方式编程:工作方式编程:由CPU向8259A送三个字节的操作命令字 OCW(Operation Command Word)。8259A必须必须通过ICW初始化,则处于全嵌套工作方式,在8259A工作期间,OCW规定或设置其工作方式,动态地控制动态地控制CPU处理中断的过程。处理中断的过程。五、8259A的编程27n初始化编程初始化编程n8259A开始工作前写入。开始工作前写入。n用户必须用户必须对对8
26、259A进行初始化编程。通过写入进行初始化编程。通过写入初始化命令初始化命令字字ICW对对8259A进行初始化。共有进行初始化。共有ICW1-ICW4。n工作方式编程工作方式编程n在在8259A工作期间写入,共有工作期间写入,共有OCW1OCW3。n可以随时向可以随时向8259A写入写入工作命令字工作命令字OCW,使之按用户设使之按用户设置的新的工作方式进行工作置的新的工作方式进行工作n用户还可以通过写用户还可以通过写工作命令字工作命令字OCW通知通知8259A,下面的下面的操作要读取操作要读取8259A中的状态信息,以便了解其工作情况中的状态信息,以便了解其工作情况281.初始化命令字ICW
27、n8259A在开始工作前必须写入初始化命令字在开始工作前必须写入初始化命令字n初始化命令字初始化命令字ICW最多可以有最多可以有4个:个:ICW1ICW4n必须按照以下顺序必须按照以下顺序依次依次写入写入n其中其中 ICW1 和和 ICW2 是必须的是必须的nICW3和和ICW4是否需要,由具体的工作方式是否需要,由具体的工作方式(在在ICW1中的设中的设置置)决定。决定。29ICW1 写入偶地址,A0=01LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意表示可以任意,为为1为为0都可以(建议为都可以(建议为0)1只能为只能为1,作为标志,表示写的为,作为标志,表示写的为IC
28、W1D3 中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边沿触发方式,边沿触发方式 D1 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式 ,且后边要写且后边要写ICW3D0 是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为0特征:特征:A0=0,ICW1中中D4=1 ICW1启动了启动了8259A中的初始化顺序,中的初始化顺序,自动发生一系列事件自动发生一系列事件30ICW1启动了启动了8259A中的初始化顺序,自动发生中的初始化
29、顺序,自动发生一系列事件一系列事件n 对中断请求信号边沿检测电路复位;n 清IMR、ISR;n 指定IR0优先级最高;n 设定为普通屏蔽方式;n 设定为非自动结束中断方式。31ICW2 写入奇地址 A0=1T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号设置中断向量号 T7T3为中断向量号的高为中断向量号的高5位位 低低3位由位由8259A自动确定:自动确定:IR0为为000、IR1为为001、IR7为为11132ICW3 写入奇地址 A0=1S7S6S5S4S3S2ID2S1ID1S0ID0D7D6D5D4D3D2D1D0针对从片针对从片针对主片针对主片级连命令字级连命令字
30、主片主片:Si1,说明其对应引脚,说明其对应引脚IRi 上连接有上连接有从片;否则引脚从片;否则引脚IRi上没有连接从片上没有连接从片从片从片:ID0ID2 编码说明该从片的编码说明该从片的INT引引脚接到了主片上的哪个脚接到了主片上的哪个IRi引脚引脚33ICW4 写入奇地址 A0=1000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0SFNM 嵌套方式:嵌套方式:特殊全嵌套方式(特殊全嵌套方式(SFNM1)普通全嵌套方式(普通全嵌套方式(SFNM0)BUF 数据线的缓冲方式:数据线的缓冲方式:缓冲方式(缓冲方式(BUF1)非缓冲方式(非缓冲方式(BUF0)M/S:主片主片
31、/从片选择:从片选择:主片(主片(M/S=1)从片(从片(M/S=0)AEOI 中断结束方式:中断结束方式:自动中断结束(自动中断结束(AEOI1)非自动中断结束(非自动中断结束(AEOI0)微)微PM处理器类型:处理器类型:16位位80 x86(PM1)8位位8080/8085(PM0)34写写ICW1 A0=0,D4=1写写ICW2 A0=1SNGL=1 IC4=1写写ICW3 A0=1写写ICW4 A0=1是是否否是是否否按顺序对按顺序对A0=1端端口写入命令字口写入命令字8259A芯片的初始化流程35初始化主片8259Amov al,11h;写入写入ICW1out 20h,alintr
32、1:mov al,08h;写入写入ICW2out 21h,alintr2:mov al,04h;写入写入ICW3out 21h,alintr3:mov al,1h;写入写入ICW4out 21h,al中断控制器的初始化程序段PC机上机上8259地址:地址:20h-21h36初始化从片8259Amov al,11h;写入写入ICW1out 0a0h,alintr5:mov al,70h;写入写入ICW2out 0a1h,alintr6:mov al,02h;写入写入ICW3out 0a1h,alintr7:mov al,01h;写入写入ICW4out 0a1h,al中断控制器的初始化程序段该题中
33、该题中8259的两个地址:的两个地址:0a0h、0a1h372.工作命令字OCWn8259A工作期间,可以随时接受工作命令字工作期间,可以随时接受工作命令字OCWnOCW共有共有3个:个:OCW1OCW3n写入时没有顺序要求,需要哪个写入时没有顺序要求,需要哪个OCW就写入就写入那个那个OCW 在写入在写入ICW1ICW4后,后,8259A就绪,可接收中断请求信号,就绪,可接收中断请求信号,若不再写入若不再写入OCW,则处于则处于全嵌套中断工作方式全嵌套中断工作方式。若需改变上述若需改变上述8259A8259A的中断控制方式,或为了屏蔽某些中断,的中断控制方式,或为了屏蔽某些中断,以及读出以及
34、读出8259A8259A的一些状态信息,如的一些状态信息,如IRRIRR、ISRISR、IMRIMR的内容,则的内容,则必须写入操作命令字必须写入操作命令字OCWOCW。38OCW1 写入奇地址M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字屏蔽命令字其内容将写入中断屏蔽寄存器其内容将写入中断屏蔽寄存器IMR Mi=1,则禁止对应,则禁止对应IRi中断;中断;Mi=0,则允许对应,则允许对应IRi中断。中断。各位互相独立。各位互相独立。nOCW1可可放置于程序的任何地方,实现对某些中断的屏蔽或开放,也就实现了对优先权的改变。39OCW2 写入偶地址RSLEOI00L2
35、L1L0D7D6D5D4D3D2D1D0L2L0的的3位编码位编码指定指定IR引脚引脚 R、SL和和EOI配合使用配合使用产生中断结束产生中断结束EOI命令和改变命令和改变优先权顺序优先权顺序OCW2标志标志发中断结束命令字发中断结束命令字控制中断优先权的循环控制中断优先权的循环OCW2标志标志40OCW2(中断结束和优先权循环控制字)中断结束和优先权循环控制字)设置优先级是否循环,循环的方式,中断结束的方式。L0 L1 L2 0 0EOI SL R 0A0D7 D6 D5 D4 D3 D2 D1 D0偶地址偶地址8259A的几种的几种不同工作方式不同工作方式OCW2标志位标志位0 0 00
36、0 11 1 01 1 1 系统中最系统中最低优先级的低优先级的编码编码SL1时,时,要清除要清除ISR中中的哪一位。的哪一位。中断优先方式:中断优先方式:1 按左循环方式按左循环方式0 非循环方式非循环方式 IR0(高高)IR7(低低)决定决定L2L1L0是否有效:是否有效:1 有效,指出最低优先级有效,指出最低优先级0 无效,当前被服务的中无效,当前被服务的中 断源左循环到最低优先断源左循环到最低优先 级级。中断结束命令位:中断结束命令位:1 ISR中相应位复位中相应位复位0 在在ICW4中给出中给出 AEOI4142OCW3 写入偶地址0ESMMSMM01PRRRISD7D6D5D4D3
37、D2D1D0ESMM、SMM设置中断屏蔽方式设置中断屏蔽方式P、RR和和RIS规定随后读取的状态字含义规定随后读取的状态字含义OCW3标志标志43RIS RR P 1 0SMMESMM 0 0A0D7 D6 D5 D4 D3 D2 D1 D0偶地址偶地址未定义,未定义,常取常取0OCW3标志标志是否工作是否工作于特殊屏蔽于特殊屏蔽模式模式1 中断查询命令中断查询命令0 非查询命令非查询命令 在下一个在下一个RD脉冲脉冲1 0 读读IRR(从(从A001 1 读读ISR 端口)端口)决定下一个决定下一个操作是否是操作是否是读操作读操作1 0 复位复位1 1 置置 特殊屏蔽特殊屏蔽OCW3(屏蔽和
38、读状态控制字)屏蔽和读状态控制字)设置和撤消特殊屏蔽方式设置和撤消特殊屏蔽方式 D6 D5 1 0 复位为普通屏蔽方式复位为普通屏蔽方式 1 1 置为特殊屏蔽方式置为特殊屏蔽方式 设置中断查询方式设置中断查询方式 查询外部事件是否有中断请求查询外部事件是否有中断请求.i)写)写OCW38259A,其中其中D2=1 ii)读查询字(对同一地址)读查询字(对同一地址)442。查询字:在OCW3的D2位P为1后的下一个读命令,查询为外设服务iW2W1W0D7D6D5D4D3D2D1D0中断位中断位I位为位为1,有外设请求中断有外设请求中断 W2W0的编码的编码 当前中断请求的最高优先级当前中断请求的
39、最高优先级CPU内部禁止中断时,或不想用INT 引脚向CPU 申请中断时,可通过查询字获得外设中断请求情况。453.读取状态字nCPU可随时读出可随时读出IRR、ISR、IMR和和查查询字询字nA0为低(偶地址)时为低(偶地址)时n由由OCW3中中RR和和RIS位编码决定读取的是位编码决定读取的是IRR或或ISR,n由由OCW3中中P=0位决定下面读取的是位决定下面读取的是nA0为高(奇地址)时,读取的是为高(奇地址)时,读取的是IMR468259A的端口 CS A0 RD WR功能功能 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 写入写入ICW1、OCW2
40、和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态474.命令字和状态字的区别方法 利用利用读写信号读写信号区别写入的控制寄存器和读出的区别写入的控制寄存器和读出的状态寄存器状态寄存器 利用利用地址信号地址信号区别不同区别不同I/O地址的寄存器地址的寄存器 由由控制字中的控制字中的标志位标志位说明是哪个寄存器说明是哪个寄存器 由芯片内由芯片内顺序控制逻辑顺序控制逻辑按一定顺序识别不同的按一定顺序识别不同的寄存器寄存器 由前面的控制字(由前面的控制字(引导字引导字)决定后续操作的寄)
41、决定后续操作的寄存器存器接口电路中常用的方法接口电路中常用的方法488087协处理器中断请求协处理器中断请求RAM奇偶错奇偶错I/O通道检查错通道检查错 NMI屏蔽寄存器屏蔽控制屏蔽寄存器屏蔽控制定时器(主板上)定时器(主板上)键盘(主板上)键盘(主板上)NMIINTR01234567优优先先级级I/O通通道道IBM PC/XT机中的外中断管理未用未用异步通信卡(辅)异步通信卡(辅)异步通信卡(主)异步通信卡(主)硬盘硬盘软盘软盘并行打印机并行打印机在在8086系统中,系统中,CPU和和8259A的所有数据传送的所有数据传送都在数据总线的低都在数据总线的低8位上位上进行。地址总线的进行。地址总
42、线的A1与与8259A的的A0相连,以保相连,以保证数传都在总线的低证数传都在总线的低8位位中进行。中进行。498259A在IBM PC/AT上的应用CAS02CAS02+5V主主8259A80286 CPUINTRD0D7SP/ENINTD0D7日时钟日时钟键盘键盘串行口串行口2串行口串行口1并行口并行口2软盘软盘并行口并行口1A0-INTR1 CS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 A0 CS 从从8259AD0D7INTSP/EN实时钟实时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0-INTR2 CS
43、IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B25B24B23B22B21系统总线系统总线B4D3D4D5D6D7INTARDWRINTAIORIOWINTARDWR-S0-S28228850PC机中8259A应用注意事项n利用利用上升沿上升沿做为中断请求做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7中断向量号依次为中断向量号依次为08H0FHnIRQ8IRQ15中断向量号依次为中断向量号依次为70H77H(PC/AT机)机)n采用普通全嵌套优先权方式,中断优先权从高到低顺序为采用普通全嵌套优先权方式,中断优先
44、权从高到低顺序为IRQ0IRQ2、IRQ8IRQ15(级连从片级连从片)、IRQ3IRQ7,且不能改变且不能改变n采用普通中断结束采用普通中断结束EOI方式,需在中断服务程序最后发送方式,需在中断服务程序最后发送普通普通EOI命令命令n一般采用普通屏蔽方式,通过写一般采用普通屏蔽方式,通过写IMR相应位为相应位为0允许中断,允许中断,应注意不要破坏原屏蔽状态。应注意不要破坏原屏蔽状态。51外部中断服务程序n编写外部可屏蔽中断服务程序,需注意:编写外部可屏蔽中断服务程序,需注意:n中断服务结束时应向中断服务结束时应向8259发送发送中断结束命令中断结束命令EOI(OCW2)n一般只能采用一般只能
45、采用存储单元存储单元来来传递参数传递参数n不能使用不能使用DOS系统功能调用系统功能调用(DOS为为单用户单单用户单任务操作系统,不能重入)任务操作系统,不能重入)n中断服务程序要尽量中断服务程序要尽量短小短小,以免影响系统的,以免影响系统的实实时性时性52外部中断服务程序(续)n编写主程序,需注意:编写主程序,需注意:n修改中断向量修改中断向量n控制控制CPU的中断允许标志的中断允许标志n设置设置8259A的中断屏蔽寄存器的中断屏蔽寄存器53例题:可屏蔽中断服务程序n在在PC机中:机中:n8259A的的IRQ0(向量号为向量号为08H)中断请求来自中断请求来自定时器定时器8253,每隔,每隔
46、55ms产生一次定时中断产生一次定时中断n该例的该例的 08H 号中断服务程序将显示一个字符串,号中断服务程序将显示一个字符串,10次中断共显示次中断共显示10个字符串个字符串n用内存单元(用内存单元(共享变量共享变量)在主程序与外部中断)在主程序与外部中断服务程序之间传递参数:服务程序之间传递参数:中断发生的次数中断发生的次数n显示信息安排在共同的数据段中显示信息安排在共同的数据段中54数据段intmsgdb A 8259A Interrupt!db 0dh,0ah,0counterdb 0例7.255保存中断向量mov ax,35 08hint 21hpush bx;保存偏移地址保存偏移地
47、址push es;保存段基地址保存段基地址例7.256设置中断向量clipush ds ;保护保护dsmov dx,offset new08h ;中断入口地址中断入口地址mov ax,seg new08hmov ds,axmov ax,25 08hint 21hpop ds ;恢复恢复ds例7.257设置中断寄存器in al,21h ;读读IMRpush axand al,0feh ;允许允许IRQ0(接(接8253)out 21h,almov counter,0 ;设置中断次数初值设置中断次数初值sti ;开中断开中断例7.258循环等待中断start1:cmp counter,10jb s
48、tart1;中断中断10次退出次退出例7.2就在主程序循环当中就在主程序循环当中59new08hprocsti;开中断开中断push ax;保护寄存器保护寄存器push bxpush dsmov ax,datamov ds,ax;设置数据段设置数据段DS例7.2进入中断服务程序60中断处理inc countermov si,offset intmsg;显示信息显示信息call dpstri例7.261显示字符串dpstriproc;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsb;取一字符取一字符cmp al,0;判是否结束标志判是否结束标志jz dps2例7.
49、262显示字符串(续)mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp例7.263退出中断服务程序mov al,20h ;送中断结束字送中断结束字out 20h,alpop ds ;恢复寄存器恢复寄存器pop bxpop axiret ;中断返回中断返回new08hendp例7.264主程序结束clipop axout 21h,alpop dxpop dsmov ax,25 08hint 21hstimov ax,4c00hint 21h例7.2A 8259A Interrupt!A 8259A Interrupt!
50、A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!65驻留中断服务程序n内存驻留内存驻留TSR(Terminate and Stay Resident)程序程序n应用程序运行后仍然应用程序运行后仍然保存保存在在主存主存中,可以被中,可以被其他程序调用其他程序调用n利用利用DOS功能调用功能调用 31H 代替代替 4CH 终止程序终止程序n小型驻留程序常编写成小