资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
7.5 可编程中断控制器 8259An8259A的的功能功能n8259的引脚与功能结构的引脚与功能结构n8259A的中断工作过程的中断工作过程n8259A的工作方式的工作方式n8259A的编程的编程n8259A在在IBMPC/XT中的应用举例中的应用举例17.5 可编程中断控制器 8259A一、功能一、功能nIntel 8259A是是可可编编程程中中断断控控制制器器,配配合合80X86CPU管理可屏蔽中断管理可屏蔽中断n中断优先权的管理中断优先权的管理n中断屏蔽的管理中断屏蔽的管理n中断结束的管理中断结束的管理28259An8259A8259A具体功能具体功能: n1片片8259A可以管理可以管理8级中断,经级连最多可扩展至级中断,经级连最多可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在在中中断断响响应应周周期期,可可提提供供中中断断向向量量号号(配配合合I8086 /88 /286/ 386 ),或或相应的调用指令(配合相应的调用指令(配合 I8080/85)。)。n8259A有多种工作方式,可通过初始化编程进行设置。有多种工作方式,可通过初始化编程进行设置。3二、 8259的引脚与功能结构D7D0INTAINT中中断断请请求求寄寄存存器器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲器比较器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优优先先权权判判别别电电路路中中断断服服务务寄寄存存器器控制逻辑控制逻辑48259的内部结构1。中断请求寄存器。中断请求寄存器IRRn保存保存8条外界中断请求信号条外界中断请求信号IR0IR7的请求状态的请求状态nDi位为位为1表示表示IRi引脚有中断请求;引脚有中断请求;为为0表示无请求表示无请求2、中断服务寄存器、中断服务寄存器ISRn保保存存正正在在被被8259A8259A服服务务着着的的中中断断源源 (或或已已进进入入中中断断处处理理程程序)。序)。nDiDi位为位为1 1表示表示IRiIRi中断正在服务中;为中断正在服务中;为0 0表示没有被服务表示没有被服务3、中断屏蔽寄存器、中断屏蔽寄存器IMRn保存对中断请求信号保存对中断请求信号IRi的屏蔽状态的屏蔽状态nDi位为位为1表示表示IRi中断被屏蔽(禁止);为中断被屏蔽(禁止);为0表示允许表示允许8259占用两个端口地址占用两个端口地址A0=1、0(奇地址、偶地址)奇地址、偶地址)。见见P252 图图8-13 8259A与系统总线的连接与系统总线的连接55. 控制逻辑控制逻辑 控制逻辑电路中,有一组初始化命令字Reg : ICW1ICW4 一组操作命令字Reg: OCW1OCW3。 系统刚开始时,初始化命令字送8259A,以后过程中将保持不变, 操作命令则用来在过程中控制中断操作。 控制逻辑按编程设定方式管理控制逻辑按编程设定方式管理8259A的全部工作。的全部工作。4. 优先权判别电路优先权判别电路 用来识别和管理各中断请求信号的优先级别。6. 数据总线缓冲器数据总线缓冲器 三态缓冲器。8259A与CPU的数据总线接口67. 读读/写控制逻辑写控制逻辑 完成来自CPU的读写命令,及与片选信号与片选信号CS与与A0(0或或1)决定访问片内某个)决定访问片内某个Reg。 通过OUT指令指令WR有效,把命令字写入ICW和OCW. 通过IN指令指令RD有效,将IRR、ISR或IMR内容通过数据总线读入CPU。8. 级联缓冲器级联缓冲器/比较器比较器(用于多片用于多片8259之间的连接之间的连接) 主从结构中,作为主设的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 082. 当外设发出中断请求后,其对外部中断请求的处理过程如下: 若有若有IRi=1,则,则IRR中相应位中相应位置置1。 若对应若对应IMR中的相应位为中的相应位为0,则,则8259A向向CPUINTR。 若若IF=1,则,则CPU在执行完当前指令后,发第一在执行完当前指令后,发第一 个个 INTA8259A ISR中对应当前最高优先权的位为中对应当前最高优先权的位为1,且,且IRR中相应位中相应位清清0。 CPU发第二个发第二个INTA8259A,8259ADB上送上送8位的向量号位的向量号N (即即中断类型号,中断类型号,初始化初始化8259A时已设定好时已设定好)。 CPU做:做:N4 从中断向量表中取出中断服务程序的入口地址。从中断向量表中取出中断服务程序的入口地址。 若若8259A为为AEOI(自动结束中断),自动结束中断), 则在第二个则在第二个INTA尾,尾,ISR中相应的位中相应的位复位复位。 否则否则,至中断服务程序结束至中断服务程序结束,发出发出EOI命令使命令使ISR中相应位复位中相应位复位。8259A8259A的工作过程的工作过程1. 上电后,由CPU执行一段程序对8259初始化(通过输入初始化通过输入初始化命令字实现命令字实现)。完成初始化后,8259A处于 就绪状态 。CPU 进入进入响应中断的过程响应中断的过程,继而执行中断子程序继而执行中断子程序。98259A的中断过程CAS0CAS2D0D7SP/ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第第1个总线周期个总线周期T1 T2 T3 T4ALECLK 第第2个总线周期个总线周期T1 T2 T3 T4第第1个个-INTA前保持高电平前保持高电平 INTALOCK中断向量主片输出级联信号从片接收10四、8259A的工作方式普通全嵌套方式普通全嵌套方式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权固定方式优先权固定方式优先权循环方式优先权循环方式设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自动中断结束方式非自动中断结束方式非自动中断结束方式结束中断方式结束中断方式中断屏蔽方式中断屏蔽方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式中断触发方式中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式数据线连接方式数据线连接方式缓冲方式缓冲方式非缓冲方式非缓冲方式与与CPU配合方式配合方式与与8080/8085 CPU配合配合与与8086/8088 CPU配合配合级连方式级连方式级连级连不级连不级连111. 设置优先权方式n普通全嵌套方式普通全嵌套方式n8259A的中断的中断优先权顺序固定不变优先权顺序固定不变,从高到低依次为,从高到低依次为:IR0、IR1、IR2、IR7n中中断断请请求求后后,8259A对对当当前前请请求求中中断断中中优优先先权权最最高高的的中中断断 IRi 予予以以响响应应,将将其其向向量量号号送送上上数数据据总总线线,对对应应ISR的的 Di位位置置位位,直直到到中中断断结束(结束(ISR的的 Di 位位复位)复位)n在在ISR的的 Di 位位置置位位期期间间,禁禁止止再再发发生生同同级级和和低低级级优优先先权权的的中中断断,但但允许高级优先权中断的嵌套允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式允许同级中断嵌套(用于级连主片)允许同级中断嵌套(用于级连主片)n优优先先权权自自动动循循环环方方式式最最高高优优先先权权自自动动转转移移到到相相邻邻的的低低优优先先级级中断源中断源(P332),如如IR3被响应后,被响应后,IR3最低,最低,IR4最高。最高。n优优先先权权特特殊殊循循环环方方式式优优先先权权由由OCW2设设置置哪哪个个IR最最低低,其其他他的随之确定。的随之确定。12 特殊全嵌套方式特殊全嵌套方式(适用于8259级联级联的情况的情况) 级联时,主片 须采用特殊的全嵌套方式。CPUCPU主主主主8259A8259AINTINT从从从从8259A8259AIRIR0 0IRIR1 1IRIR7 7IRIR0 0IRIR1 1IRIR7 7特殊全嵌套特殊全嵌套特殊全嵌套特殊全嵌套普通全嵌套普通全嵌套普通全嵌套普通全嵌套 普通全嵌套方式普通全嵌套方式常用方式,又称全嵌套方式,适用于单片单片 8259的情况。特特特特点点点点: : 和和和和全全全全嵌嵌嵌嵌套套套套方方方方式式式式基基基基本本本本相相相相同同同同,不不不不同同同同的的的的是是是是:在在在在处处处处理理理理某某某某以以以以及及及及中中中中断断断断时时时时,可可可可响响响响应应应应同同同同级级级级中中中中断断断断,从而实现对同从而实现对同从而实现对同从而实现对同 级中断请求的特殊嵌套级中断请求的特殊嵌套级中断请求的特殊嵌套级中断请求的特殊嵌套.13 主片编程为特殊全嵌套方式: 当处理一级中断时,如果有同级的中断请求,也会给予响应当处理一级中断时,如果有同级的中断请求,也会给予响应。 否则:当从片8259IR2有中断请求,若主片是普通全嵌套方式,则会屏蔽从片上的IR0、IR1(比IR2优先级高)中断请求。 因为从片上的因为从片上的8个个IRi变成了主片的同一级。变成了主片的同一级。 而特殊全嵌套方式,对来自同一从片的较高优先级请求不会屏蔽。 EOI从从从从ISR是是否全为否全为0 EOI主主NYIRET 在从片的中断处理程序快结束时,应给 8259A发EOI(中断结束)命令,方法是: (a) 向从片发EOI; (b) 读从片的ISR内容: 若为若为0,表示从片只有一个中断源申请中断,再向主片发一个EOI命令。 若不为若不为0,表示从片存在两个以上的中断源在申请中断,则不应发EOI给主片。14(3) 优先权循环方式优先权循环方式 一个系统的优先权比较复杂,所以一个系统的优先权比较复杂,所以不能总规定不能总规定IR0高高 IR7低低。 8259A设计了两种改变优先权的方法。设计了两种改变优先权的方法。 特殊循环方式特殊循环方式适用于中断源的优先级需要任意改变的情况适用于中断源的优先级需要任意改变的情况 通过OCW2命令字设置当前的最低优先级最低优先级IR5,使得有: IR6 IR7 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以标识中断处理结束。 这个中断结束是指8259结束中断,而不是CPU结束执行中断服务程序。 非自动中断结束方式非自动中断结束方式 普通中断结束方式(普通中断结束方式(EOIEOI) 适用于全嵌套方式适用于全嵌套方式 当8259A工作在全嵌套方式时,则当前服务过的中断源就是中断优先权最高的源,可以用非特殊(普通)的EOI使它在ISR中的相应位清0。 这个命令加在中断服务程序的末尾处。这个命令加在中断服务程序的末尾处。 自动中断结束方式自动中断结束方式(AEOI)只能用于不要求中断嵌套的情况只能用于不要求中断嵌套的情况 在第二个INTA的后沿,8259A自动把ISR的对应位清0。用用用用于于于于系系系系统统统统中中中中只只只只有有有有一一一一片片片片8259A8259A,多多多多个个个个中中中中断断断断不不不不会会会会嵌嵌嵌嵌套套套套的的的的情情情情形形形形。系系系系统统统统一一一一进进进进入入入入中中中中断断断断处处处处理理理理,就就就就将将将将当当当当前前前前中中中中断断断断服服服服务务务务寄寄寄寄存存存存器器器器ISRISR的的的的对对对对应位清除。对应位清除。对应位清除。对应位清除。对8259A8259A来说,好像已经结束了当前中断。来说,好像已经结束了当前中断。来说,好像已经结束了当前中断。来说,好像已经结束了当前中断。 在命令字在命令字在命令字在命令字ICW4ICW4中将中将中将中将AEOIAEOI(D1D1)位置)位置)位置)位置“1”1”。16 不管是普通、还是特殊的中断结束方式,级联系统中的中断结不管是普通、还是特殊的中断结束方式,级联系统中的中断结束必须发送两次束必须发送两次EOI: 一次给从片,一次给主片。一次给从片,一次给主片。 (向从片发(向从片发EOI后,须检查从片中的所有申请中断的源是否全服务过。后,须检查从片中的所有申请中断的源是否全服务过。只有都服务过了,才能向主只有都服务过了,才能向主8259送另一个送另一个EOI命令)。命令)。 特殊结束中断方式特殊结束中断方式非全嵌套方式下非全嵌套方式下 当8259A工作在非全嵌套模式时,8259A可能不能确定刚服务的源的等级,需要用特殊的EOI命令,指出要清除哪个ISR位。17中断结束字n什么是什么是8259A的的中断结束字中断结束字(EOI)?)?n8259A判断中断服务寄存器判断中断服务寄存器ISR的状态:的状态:n若若某某位位为为1,表表示示该该中中断断源源正正在在得得到到服服务务;一一般般情情况况下下,将将不不再再响响应应同同级级或或低低级级的的中中断断(采采用用特特殊殊屏屏蔽蔽方方式式时时,可响应低级别的中断)可响应低级别的中断)n若若某某位位为为0,表表示示该该中中断断服服务务已已结结束束,可可响响应应低低级级级级别别中断。中断。n用指令向用指令向8259A送中断结束字,可以使送中断结束字,可以使ISR的某位清的某位清0183. 3. 屏蔽中断源方式屏蔽中断源方式 通过通过IMRIMR编程可允许或禁止中断编程可允许或禁止中断 普通屏蔽方式普通屏蔽方式 通过命令字OCW1设置IMR某位或某几位为1,则屏蔽其中断请求。置0则允许该级中断。 特殊屏蔽方式特殊屏蔽方式用于开放较低级中断请求用于开放较低级中断请求 在8259中,当一个中断请求被响应时,ISR对应位置1。在该位未复位时,8259A会禁止所有优先级比它低的中断。 用特殊屏蔽方式可以做到: 屏蔽当前中断级(IMR对应位为1); ISR中相应位复位,则较本级低的中断源申请可以得到响应。191.屏蔽中断源方式 P331n普通屏蔽方式普通屏蔽方式n将将 IMR的的 Di 位位置置1,对对应应的的中中断断 IRi 将将被被屏屏蔽蔽,该中断请求将不能从该中断请求将不能从8259A送到送到CPUn如果将如果将 IMR 的的 Di位置位置0,则允许,则允许对应的对应的中断产生中断产生n特特殊殊屏屏蔽蔽方方式式允允许许发发生生低低级级的的中中断断嵌嵌套套,用于级连时的主片。用于级连时的主片。n将将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片)片)主片从片-INTAINTRIR0IR7IR7IR0CAS0CAS2=010INTINTD0D722中断级连n8259A可以可以级连级连,1个个主片主片最多可以级连最多可以级连8个个从片从片n级级连连时时,主主片片的的级级连连线线CAS0CAS2连连至至每每个个从从片的片的CAS0CAS2,输出被选中的从片编号输出被选中的从片编号,n每每个个从从片片的的中中断断请请求求信信号号 INT,连连至至主主8259A的的一一个个中中断断请请求求输输入入端端IRi;主主片片的的 INT 线线连连至至CPU的中断请求输入端的中断请求输入端INTRn在在非非缓缓冲冲方方式式下下,引引脚脚SP/EN,通通过过接接地地指指定定该该片片充充当当从从片片(-SP0);反反之之若若接接高高电电平平则则该该片片充当主片(充当主片(-SP1)。)。236. 数据线连接方式n缓冲方式缓冲方式n对对8259A的的数数据据线线(输输出出中中断断向向量量)加加缓缓冲冲器器予予以以隔离和驱动隔离和驱动nSP/EN引引脚脚作作为为输输出出端端,输输出出允允许许信信号号,用用以以关关闭闭或开启缓冲器或开启缓冲器n非缓冲方式非缓冲方式nSP/EN引脚作为引脚作为输入端输入端n在在8259A级连时,用它选择该芯片充当主片或从片级连时,用它选择该芯片充当主片或从片 247. 中断触发方式n边沿触发方式边沿触发方式n中中断断请请求求输输入入端端出出现现上上升升沿沿为为有有效的中断请求信号效的中断请求信号n电平触发方式电平触发方式n中中断断请请求求端端出出现现高高电电平平为为有有效效的的中断请求信号中断请求信号26 8259A是可编程中断控制器,对其编程可以分为两部分: 初始化编程初始化编程:由CPU向8259A送24个字节的初始化命令字 ICW(Initialization Command Word)。 工作方式编程:工作方式编程:由CPU向8259A送三个字节的操作命令字 OCW( Operation Command Word)。 8259A必须必须通过ICW初始化,则处于全嵌套工作方式,在8259A工作期间,OCW规定或设置其工作方式,动态地控制动态地控制CPU处理中断的过程。处理中断的过程。五、8259A的编程27n初始化编程初始化编程n8259A开始工作前写入。开始工作前写入。n用用户户必必须须对对8259A进进行行初初始始化化编编程程。通通过过写写入入初初始始化化命命令令字字ICW对对8259A进行初始化。共有进行初始化。共有ICW1-ICW4。 n工作方式编程工作方式编程n在在8259A工作期间写入,共有工作期间写入,共有OCW1OCW3。n可可以以随随时时向向8259A写写入入工工作作命命令令字字OCW,使使之之按按用用户户设设置的新的工作方式进行工作置的新的工作方式进行工作n用用户户还还可可以以通通过过写写工工作作命命令令字字OCW通通知知8259A,下下面面的的操作要读取操作要读取8259A中的状态信息,以便了解其工作情况中的状态信息,以便了解其工作情况281. 初始化命令字ICWn8259A在开始工作前必须写入初始化命令字在开始工作前必须写入初始化命令字n初始化命令字初始化命令字ICW最多可以有最多可以有4个:个:ICW1ICW4n必须按照以下顺序必须按照以下顺序依次依次写入写入n其中其中 ICW1 和和 ICW2 是必须的是必须的nICW3和和ICW4是是否否需需要要,由由具具体体的的工工作作方方式式(在在ICW1中中的的设设置置)决定。决定。29ICW1 写入偶地址,A0=01LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意表示可以任意,为为1为为0都可以(建议为都可以(建议为0) 1只能为只能为1,作为标志,表示写的为,作为标志,表示写的为ICW1D3 中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边沿触发方式,边沿触发方式 D1 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式 ,且后边要写且后边要写ICW3D0 是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为0特征:特征:特征:特征:A0=0A0=0,ICW1ICW1中中中中D4=1D4=1 ICW1ICW1启动了启动了启动了启动了8259A8259A中的初始化顺序,中的初始化顺序,中的初始化顺序,中的初始化顺序,自动发生一系列事件自动发生一系列事件自动发生一系列事件自动发生一系列事件30ICW1启动了启动了8259A中的初始化顺序,自动发生中的初始化顺序,自动发生一系列事件一系列事件n 对中断请求信号边沿检测电路复位;n 清IMR、ISR;n 指定IR0优先级最高;n 设定为普通屏蔽方式; n 设定为非自动结束中断方式。31ICW2 写入奇地址 A0=1T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号设置中断向量号 T7T3为中断向量号的高为中断向量号的高5位位 低低3位由位由8259A自动确定:自动确定: IR0为为000、IR1为为001、IR7为为11132ICW3 写入奇地址 A0=1S7S6S5S4S3S2ID2S1ID1S0ID0D7D6D5D4D3D2D1D0针对从片针对从片针对主片针对主片级连命令字级连命令字主片主片:Si1,说明其对应引脚,说明其对应引脚IRi 上连接有上连接有从片;否则引脚从片;否则引脚IRi上没有连接从片上没有连接从片从片从片:ID0ID2 编码说明该从片的编码说明该从片的INT引引脚接到了主片上的哪个脚接到了主片上的哪个IRi引脚引脚33ICW4 写入奇地址 A0=1000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0SFNM 嵌套方式:嵌套方式:特殊全嵌套方式(特殊全嵌套方式(SFNM1)普通全嵌套方式(普通全嵌套方式(SFNM0)BUF 数据线的缓冲方式:数据线的缓冲方式:缓冲方式(缓冲方式(BUF1)非缓冲方式(非缓冲方式(BUF0)M/S :主片主片/从片选择:从片选择:主片(主片(M/S=1)从片(从片(M/S=0)AEOI 中断结束方式:中断结束方式:自动中断结束(自动中断结束(AEOI1)非自动中断结束(非自动中断结束(AEOI0)微)微PM处理器类型:处理器类型:16位位80x86( 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,alintr1: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中断控制器的初始化程序段该题中该题中8259的两个地址:的两个地址:0a0h、0a1h372. 工作命令字OCWn8259A工工作作期期间间,可可以以随随时时接接受受工工作作命命令令字字OCWnOCW共有共有3个:个:OCW1OCW3n写写入入时时没没有有顺顺序序要要求求,需需要要哪哪个个OCW就就写写入入那个那个OCW 在写入在写入ICW1ICW4后,后,8259A就绪,可接收中断请求信号,就绪,可接收中断请求信号,若不再写入若不再写入OCW,则处于则处于全嵌套中断工作方式全嵌套中断工作方式。 若需改变上述若需改变上述8259A8259A的中断控制方式,或为了屏蔽某些中断,的中断控制方式,或为了屏蔽某些中断,以及读出以及读出8259A8259A的一些状态信息,如的一些状态信息,如IRRIRR、ISRISR、IMRIMR的内容,则的内容,则必须写入操作命令字必须写入操作命令字OCWOCW。38OCW1 写入奇地址M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字屏蔽命令字其内容将写入中断屏蔽寄存器其内容将写入中断屏蔽寄存器IMR Mi=1,则禁止对应,则禁止对应IRi中断;中断; Mi=0,则允许对应,则允许对应IRi中断。中断。 各位互相独立。各位互相独立。nnOCW1OCW1可可可可放放置置于于程程序序的的任任何何地地方方,实实现现对对某某些些中中断断的的屏屏蔽蔽或开放,也就实现了对优先权的改变。或开放,也就实现了对优先权的改变。39OCW2 写入偶地址RSLEOI00L2L1L0D7D6D5D4D3D2D1D0L2L0的的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 0 11 1 01 1 1 系统中最系统中最低优先级的低优先级的编码编码SL1时,时,要清除要清除ISR中中的哪一位。的哪一位。中断优先方式:中断优先方式:1 按左循环方式按左循环方式0 非循环方式非循环方式 IR0(高高) IR7(低低)决定决定L2L1L0是否有效:是否有效:1 有效,指出最低优先级有效,指出最低优先级0 无效,当前被服务的中无效,当前被服务的中 断源左循环到最低优先断源左循环到最低优先 级级 。 中断结束命令位:中断结束命令位:1 ISR中相应位复位中相应位复位0 在在ICW4中给出中给出 AEOI4142OCW3 写入偶地址0ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、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(屏蔽和读状态控制字)屏蔽和读状态控制字) 设置和撤消特殊屏蔽方式设置和撤消特殊屏蔽方式 D6 D5 1 0 复位为普通屏蔽方式复位为普通屏蔽方式 1 1 置为特殊屏蔽方式置为特殊屏蔽方式 设置中断查询方式设置中断查询方式 查询外部事件是否有中断请求查询外部事件是否有中断请求. i)写)写OCW38259A,其中其中D2=1 ii) 读查询字(对同一地址)读查询字(对同一地址)442。查询字: 在OCW3的D2位P为1后的下一个读命令,查询为外设服务iW2W1W0D7D6D5D4D3D2D1D0中断位中断位I位为位为1,有外设请求中断有外设请求中断 W2W0的编码的编码 当前中断请求的最高优先级当前中断请求的最高优先级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和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态474. 命令字和状态字的区别方法 利利用用读读写写信信号号区区别别写写入入的的控控制制寄寄存存器器和和读读出出的的状态寄存器状态寄存器 利用利用地址信号地址信号区别不同区别不同I/O地址的寄存器地址的寄存器 由由控制字中的控制字中的标志位标志位说明是哪个寄存器说明是哪个寄存器 由由芯芯片片内内顺顺序序控控制制逻逻辑辑按按一一定定顺顺序序识识别别不不同同的的寄存器寄存器 由由前前面面的的控控制制字字(引引导导字字)决决定定后后续续操操作作的的寄寄存器存器接口电路中常用的方法接口电路中常用的方法488259A在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 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B25B24B23B22B21系统总线系统总线B4D3D4D5D6D7INTARDWRINTAIORIOWINTARDWR-S0 -S28228850PC机中8259A应用注意事项n利用利用上升沿上升沿做为中断请求做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7中断向量号依次为中断向量号依次为08H0FHnIRQ8IRQ15中断向量号依次为中断向量号依次为70H77H( PC/AT机)机)n采采用用普普通通全全嵌嵌套套优优先先权权方方式式,中中断断优优先先权权从从高高到到低低顺顺序序为为IRQ0IRQ2、IRQ8IRQ15(级级连连从从片片)、IRQ3IRQ7,且不能改变且不能改变n采采用用普普通通中中断断结结束束EOI方方式式,需需在在中中断断服服务务程程序序最最后后发发送送普通普通EOI命令命令n一一般般采采用用普普通通屏屏蔽蔽方方式式,通通过过写写IMR相相应应位位为为0允允许许中中断断,应注意不要破坏原屏蔽状态。应注意不要破坏原屏蔽状态。51外部中断服务程序n编写外部可屏蔽中断服务程序,需注意:编写外部可屏蔽中断服务程序,需注意:n中中断断服服务务结结束束时时应应向向8259发发送送中中断断结结束束命命令令EOI(OCW2)n一般只能采用一般只能采用存储单元存储单元来来传递参数传递参数n不不能能使使用用DOS系系统统功功能能调调用用(DOS为为单单用用户户单单任务操作系统,不能重入)任务操作系统,不能重入)n中中断断服服务务程程序序要要尽尽量量短短小小,以以免免影影响响系系统统的的实实时性时性52外部中断服务程序(续)n编写主程序,需注意:编写主程序,需注意:n修改中断向量修改中断向量n控制控制CPU的中断允许标志的中断允许标志n设置设置8259A的中断屏蔽寄存器的中断屏蔽寄存器53例题: 可屏蔽中断服务程序n在在PC机中:机中:n8259A的的IRQ0(向向量量号号为为08H)中中断断请请求求来来自自定时器定时器8253,每隔,每隔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;保存偏移地址保存偏移地址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 start1;中断中断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.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 ! 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小小型型驻驻留留程程序序常常编编写写成成.COM程程序序,但但驻驻留留程程序序也可编成也可编成.EXE程序程序n需需要要驻驻留留内内存存的的程程序序段段要要书书写写在在其其他他代代码码的的前前面面66例题: 报时中断驻留服务程序n在在PC机中机中n系统系统 08H 号中断服务程序调用号中断服务程序调用 INT 1CH 指令中断指令中断n每每隔隔55ms调调用用这这个个报报时时中中断断,中中断断65543次次就就是是时时间间过过了了1小时小时n该该例例编编写写驻驻留留内内存存的的 INT 1CH 中中断断服服务务程程序序用用于于整整点点报时,程序功能是每过报时,程序功能是每过1小时显示小时显示1条信息条信息n执行此程序后,该报时中断服务程序将驻留内存执行此程序后,该报时中断服务程序将驻留内存注意:因注意:因 65543=65536+7,假定用,假定用2个字来记个字来记录中断发生的次数,则每经过录中断发生的次数,则每经过1小时有:小时有:高字高字=高字高字+1低字低字=低字低字+7 低字能被低字能被7整除时表示时间为整点整除时表示时间为整点67new1chprocsti ;开中断开中断push si ;保护寄存器保护寄存器push dsmov si,cs ;com程序程序数据和代码共段数据和代码共段mov ds,si ;设置数据段设置数据段DSadd countl,1 ;处理低字处理低字adc counth,0 ;处理高字处理高字例7.3进入中断服务程序68中断处理cmp countl,7 ;低字为低字为7否否jnz n1ch1cmp counth,1 ;高字为高字为1否否jnz n1ch1mov countl,0 ;计满计满1小时小时mov counth,0mov si,offset intmsgcall dpstri例7.365543=65536+7=高字高字1H / 低字低字7H69退出中断服务程序n1ch1:pop ds;恢复寄存器恢复寄存器pop siiret;中断返回中断返回countldw 0 ;数据数据counthdw 0intmsgdb One Hour Has Passed ! db 0dh,0ah,0new1chendp例7.3One Hour Has Passed !One Hour Has Passed ! 70显示字符串dpstriproc ;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2例7.371显示字符串(续)mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp例7.372主程序开始start:mov ax,csmov ds,axmov dx,offset new1chclimov ax,25 1chint 21hstimov dx,offset tsrmsgmov ah,09hint 21h例7.373主程序结束mov dx,offset start ;计算驻留内存的边界计算驻留内存的边界add dx,15 ;以以“节节”(16B)为单位处理为单位处理mov cl,4shr dx,cladd dx,10h ;加程序段前缀开销加程序段前缀开销256Bmov ax,31 00h ;程序驻留程序驻留int 21htsrmsgdb INT 1CH Program Installed !db 0dh,0ah,$end start例7.3INT 1CH Program Installed ! 74第8章教学要求1. 掌掌握握中中断断的的基基本本概概念念。(中中断断、CPU响响应应中中断断的的条条件件、CPU响响应应中中断断的的过过程程、中中断断优优先先权权)。表表2. 掌掌握握8088的的中中断断类类型型、中中断断响响应应过过程程、中中断断向向量表。量表。3. 掌掌握握8259的的功功能能、特特点点。理理解解8259A的的内内部部结结构、寄存器作用、中断过程、命令字。构、寄存器作用、中断过程、命令字。4. 掌掌握握8259A的的普普通通全全嵌嵌套套优优先先权权、普普通通中中断断结结束、边沿触发方式束、边沿触发方式5、熟悉内部、外部中断服务程序的编写。、熟悉内部、外部中断服务程序的编写。75
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号