第七章中断控制器8259A_第1页
第七章中断控制器8259A_第2页
第七章中断控制器8259A_第3页
第七章中断控制器8259A_第4页
第七章中断控制器8259A_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 微机的中断系统中断源:引起程序中断的事件称中断源。中断源有外部中断和内部中断。中断请求、中断响应、中断返回:中断请求何时发生是随机的。CPU在每条指令的最后一个周期去检测INTR引脚,CPU一旦检测到有中断请求,在满足中断响应的条件下(IF=1),CPU响应中断,向外设发中断响应信号。并保护断点(当前CS、IP和PSW值入栈),然后转向中断服务程序。中断服务程序执行完毕,CPU返回原执行程序的中断处,继续向下执行,称为中断返回。中断向量表:CPU响应中断后,必须由中断源提供地址信息,引导程序进入中断服务子程序,这些中断服务程序的入口地址存放在中断向量表中。内存中专门开辟了一个区域,存放中断向量表(也称中断矢量表)。中断优先级、中断嵌套:当有多个中断源请求中断时,中断系统判别中断申请的优先级,CPU响应优先级高的中断,挂起优先级低的中断。当CPU在运行中断服务子程序时,又有新的更高优先级的中断申请进入,CPU要挂起原中断进入更高级的中断服务子程序,实现中断嵌套功能。中断屏蔽:当中断源申请中断时,CPU可以由软件设置,使之不能响应,称为中断屏蔽。中断意义:分时处理;响应速度快;可处理随机事件。

什么是中断?2023/2/61共98页中断系统应具有以下功能:(1)能实现中断响应、中断服务、中断返回、中断屏蔽;(2)能实现中断优先级排队;(3)能实现中断嵌套——优先级高的中断能中断低级的中断处理。2023/2/62共98页中断分类边沿触发、两个时钟周期高电平高电平触发、维持到CPU响应中断才结束2023/2/63共98页可屏蔽中断处理的过程一般分成几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。CPU响应可屏蔽中断要有三个条件:外设提出中断申请中断允许(IF=1,开中断)本中断屏蔽位未被屏蔽

可屏蔽中断处理过程2023/2/64共98页开中断关中断可屏蔽中断的工作流程2023/2/65共98页中断响应过程(以可屏蔽中断为例)1、外设通过INTR向CPU发出中断请求;2、CPU在执行完现行指令后,响应该中断请求(IF=1);3、外设向CPU提供中断类型号;4、CPU将PSW、CS、IP压入堆栈;5、清除IF、TF(默认情况下为不允许中断嵌套);6、从中断向量表中取出中断向量,置入IP、CS;7、执行中断例程;8、在中断例程中,如果允许中断嵌套,则开中断(STI);9、执行IRET,从堆栈中弹出IP、CS、PSW。2023/2/66共98页微机中断处理流程图有些情况要再执行完下一条指令才响应外部中断:1、正在执行封锁指令;2、向段寄存器传送数据(MOV、POP);遇到等待指令和串操作指令时,在当前指令一个基本操作完成后即可进入中断响应。2023/2/67共98页例:软件中断执行的过程中断向量表2023/2/68共98页微机中断管理控制器管理的中断注意:系统使用的中断类型,不允许用户使用和更改:中断向量不能修改;在RAM中的中断服务程序代码不能修改。2023/2/69共98页如何编写用户自己的中断服务程序?(对软中断而言)(1)确定中断类型号,设置中断向量;(2)使用INTi8指令调用软件中断服务程序。主程序(1)保护现场(保存某些寄存器的内容)。(2)若允许外部可屏蔽中断嵌套,则开中断(STI)。(3)处理中断服务。(4)关中断。(5)恢复现场。(6)返回被中断的程序(IRET)。中断服务程序2023/2/610共98页中断向量的设置:1、一种方法用指令来设置;2、利用DOS功能调用来设置。[例]用指令来设置中断服务程序的入口地址到中断类型号n所对应的中断向量表中。

MOV AX,0 ;主程序中设置中断向量

MOV ES,AX MOV DI,N*4 ;中断类型号N*4

MOV AX,OFFSETINTR_PROG CLD STOSW ;偏移地址送[4n],[4n+1]单元

MOV AX,CS STOSW ;段地址送[4n+2],[4n+3]单元 ……2023/2/611共98页INTR_PROG: ;中断服务子程序 PUSH AX STI …… CLIPOP AX IRET ……假设中断服务程序和主程序在同一个代码段:2023/2/612共98页 ……

MOV AX,0 MOV ES,AX MOV BX,N*4 MOV AX,OFFSETINTRP MOV ES:WORDPTR[BX],AX ;设置偏移地址

MOV AX,SEGINTRP MOV ES:WORDPTR[BX+2],AX ;设置段地址

……INTRP: …… IRET ……中断向量的设置2023/2/613共98页实际上,我们在设置或检查任何中断向量时,总是避免直接使用中断向量的绝对地址,而是利用DOS功能调用INT2lH设置中断向量和取出中断向量。此外要注意,在设置自己的中断向量时,应先保存原中断向量,再设置新的中断向量,在程序结束前恢复原中断向量。中断向量的设置(DOS功能调用INT21H)功能号:AH=25H入口参数: AL=中断类型号,DS:DX中断向量(段地址:偏移地址)出口参数:无获取某个中断类型的中断向量(DOS功能调用INT21H)功能号:AH=35H入口参数:AL=中断类型号出口参数:ES:BX中断向量(段地址:偏移地址)2023/2/614共98页[例]利用DOS功能调用设置中断向量和获取中断向量。DATASEGMENTINTOFFDW?;用于保存原中断服务程序的偏移地址

INTSEGDW? ;用于保存原中断服务程序的段地址

INTMSGDB‘AINSTRUCTIONINTERRUPT!',‘$'DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX ;初始化数据段寄存器2023/2/615共98页

MOVAX,3580HINT21H ;获取系统原80H的中断向量

MOVINTOFF,BX ;保存偏移地址

MOVINTSEG,ES ;保存段地址

PUSHDSMOVDX,OFFSETNEW80HMOVAX,SEGNEW80HMOVDS,AX

MOVAX,2580H INT21H ;设置本程序的80H中断向量

POPDSINT80H ;调用自己的80H中断服务程序2023/2/616共98页

MOVDX,INTOFF MOVAX,INTSEG MOVDS,AX MOVAX,2580H;恢复系统原80H中断向量 ;注意:先设置DX,再设置DS。因为如果先改变DS, ;就不能准确获得INTOFF变量值。

INT21H MOVAX,4C00H INT21H2023/2/617共98页;80H类型中断服务程序:显示一个字符串。NEW80HPROCPUSHDX PUSHAX ;保护现场

STI ;开中断MOVDX,OFFSETINTMSGMOVAH,09HINT21HCLIPOPAXPOPDX ;恢复现场

STIIRET ;中断返回NEW80H ENDP ;中断服务程序结束CODE ENDS ENDSTART2023/2/618共98页中断优先级中断优先级(优先权)是指系统设计者事先根据轻重缓急,给每个中断源确定的优先服务的级别。微机系统需要根据中断优先级的高低确定先为那个中断源服务。IBMPC机中规定优先级从高到低的次序为:l

除法错,INTO,INTnl

不可屏蔽中断(NMI)l

可屏蔽中断(INTR)l

单步中断2023/2/619共98页可屏蔽中断优先级的确定方法:(1)软件查询的方法:

2023/2/620共98页可屏蔽中断优先级的确定方法:(1)软件查询的方法:

软件查询的方法的流程图2023/2/621共98页可屏蔽中断优先级的确定方法:(2)硬件查询优先方式——菊花链法(3)专用芯片的管理方式(Intel8259A)2023/2/622共98页中断嵌套是指在中断服务过程中,CPU又得到优先权更高的外部可屏蔽中断的请求,则当前的中断服务被打断,优先权更高的中断优先获得服务,待返回后,再继续执行被打断的中断服务。只要条件满足,可以发生多重嵌套,也被称为多重中断。对于软件中断指令和NMI中断,CPU必须立即无条件响应,对于外部可屏蔽中断请求,只有IF=1,CPU才能响应。因此,可屏蔽中断的嵌套发生的条件是:(1)IF=1;(2)在外部可屏蔽中断服务过程中,CPU又得到优先权更高的外部可屏蔽中断的请求。可屏蔽中断的嵌套2023/2/623共98页可屏蔽中断的嵌套对于8086系统中,什么原因使IF=0?(1)系统复位操作后;(2)任一中断响应后(包括内、外部所有的中断);(3)执行CLI指令后。因此,要实现可屏蔽中断的嵌套,必须在当前的中断服务程序中设置STI指令。IRET指令对IF的影响:中断服务程序最后执行中断返回指令IRET,将使IF恢复到进入该中断以前的状态。(PSW)2023/2/624共98页多个可屏蔽中断源中断流程图响应中断后自动设置防止中断重复嵌套由PIC控制允许响应优先级高的中断请求恢复现场的工作不希望被中断打断可屏蔽中断的嵌套2023/2/625共98页可屏蔽中断的嵌套2023/2/626共98页Intel8259A8259A是8086/8088系统的可编程中断控制器,它的主要功能是:每片具有8级优先级控制,通过级联(9片8259A)可以扩展到64级优先级控制。(2)每一级中断可由程序单独屏蔽或允许。(3)可提供中断类型号传送给CPU。(4)可以通过编程选择多种不同工作方式。D7~D0:双向数据线,三态,它直接或通过总线驱动器与系统的数据总线相连。IR7~IR0:外设的中断请求信号输入端,输入,中断请求信号可以是电平触发或边沿触发。中断级联时,连接8259A从片INT端。RD:读命令信号,输入,低电平有效,用来控制数据由8259A读到CPU。WR:写命令信号,输入,低电平有效,用来控制数据由CPU写到8259A。CS:片选信号,输入,通过译码电路与高位地址总线相连。A0:选择8259A的两个端口,输入,连低位地址线,用于选择内部端口。引脚信号2023/2/627共98页Intel8259AINT:向CPU发出的中断请求信号,输出,与CPU的INTR端相连。INTA:CPU给8259A的中断响应信号,输入。8259A要求两个负脉冲的中断响应信号,第一个是CPU响应中断的信号,第二个INTA结束后,CPU读取8259A送去的中断类型号。CAS2~CAS0:双向级联信号线。8259A作主片时,为输出线,作从片时,为输入线。与SP/EN配合实现8259A级联。SP/EN:编程/双向使能缓冲。采用非缓冲方式,决定本片8259A是主片还是从片:若SP=1,则为主片;若SP=O,则为从片。采用缓冲方式,启动8259A到CPU之间的数据总线驱动器,EN=O,表示允许8259A通过缓冲器输出,EN=1,表示写8259A

。引脚信号2023/2/628共98页Intel8259A8259A内部结构框图2023/2/629共98页Intel8259A1、数据总线缓冲器数据总线缓冲器是8位双向三态缓冲器,是8259A与系统数据总线接口,通常连接低8位数据总线D7~D0。2、读写控制电路读写控制电路接收CPU送来的读/写命令、片选信号CS及端口选择信号A0。高位地址译码后送作片选信号。A0连地址总线A0或A1,用来选择8259A的两个I/O端口,一个为奇地址,另一个偶地址。在IBMPC/XT机中用A9~A1译码来产生信号,组合为00001××××b,产生I/O端口地址为20H~3FH,共32个。而8259A只需要两个I/O端口地址,IBMPC/XT取20H(A0=0)、21H(A0=1)两个地址在编程时使用。但其它30个地址为影象地址,不可能再分配给其它I/O设备使用。当8位I/O接口芯片与8086CPU的l6位数据总线相连接时,8259A的D7~D0与CPU数据总线低8位相连。为了保证CPU与8259A用低8位传输数据,CPU的A1连8259A的A0。这样对CPU来说A0=0,A1可以为1或为0,CPU读写始终是用偶地址。对8259A来说A1可以为1或为0,给8259A的端口分配了两个地址,一个奇地址,一个偶地址,符合了8259A的编程要求。

内部结构2023/2/630共98页2023/2/631共98页3、级联缓冲/比较器级联缓冲/比较器用于多片8259A级联使用,主从之间专用的总线。4、中断请求寄存器IRR(InterruptRequestRegister)中断请求寄存器是一个8位寄存器,存放外部输入的中断请求信号IR7~IR0。当某个IR端有中断请求时,IRR相应的某位置“1”。可以允许8个中断请求信号同时进入,此时IRR寄存器被置成全“1”。当中断请求被响应时,IRR的相应位复位。5、中断屏蔽寄存器IMR(InterruptMaskRegister)中断屏蔽寄存器是一个8位寄存器,用来存放对各级中断请求的屏蔽信息。可用软件编程设置IMR寄存器。当D5=1,表示由IR5引入的中断请求不允许进入中断优先级判别器。(与IF的设置恰恰相反)6、优先级判别器PR优先级判别器对保存在IRR寄存器中的中断请求进行优先级识别,送出最高优先级的中断请求到中断服务寄存器ISR中去。当出现多重中断时,PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。Intel8259A内部结构2023/2/632共98页7、中断服务寄存器ISR(InterruptServiceRegister)中断服务寄存器是一个8位寄存器,保存正在处理中的中断请求信号,某个IR端的中断请求被CPU响应后,当CPU发出第一个INTA信号时,ISR寄存器中的相应位置“1”,一直保持到该级中断处理结束为止。允许多重中断时,ISR多位同时被置成“1”。此寄存器可被CPU读出。中断处理结束前,要使用指令清除这一位。8、控制电路控制电路是8259A的内部控制器。根据中断请求寄存器IRR的置位情况和中断屏蔽寄存器IMR设置的情况,通过优先级判别器PR判定优先级,向8259A内部及其它部件发出控制信号。并向CPU发出中断请求信号INT和接收CPU的中断响应信号INTA,使中断服务寄存器ISR相应位置“1”,并使中断请求寄存器IRR相应位置“0”。当CPU第二个INTA信号到来,控制8259A送出中断类型号,使CPU转入中断服务子程序。如果命令字ICW4的中断自动结束位为“1”,则在第二个INTA脉冲结束时,将8259A中断服务寄存器ISR的相应位清“0”。Intel8259A内部结构2023/2/633共98页中断响应时序

最大模式T2和T32023/2/634共98页(1)8086要求中断请求信号INTR是一个电平信号,必须维持两个时钟周期的高电平。否则CPU执行完一条指令后,如果总线接口部件正在执行总线周期,则会使中断请求得不到响应而执行其他的总线周期。(2)8086工作在最大模式时,不从INTA引脚上发中断响应脉冲,而是由S2S1S0组合为000,通过总线控制器8288发出INTA中断响应信号。(3)8086不允许在两个INTA周期之间响应总线保持请求(通过HOLD请求),但如果同时出现中断请求和总线保持请求,则CPU先对总线保持请求服务。(4)外设的中断类型号一般通过16位数据总线的低8位传送给8086,提供中断向量的外设接口应该接在数据总线的低8位上。(5)在两个中断响应总线周期中,地址/数据/状态总线是浮空的,但是M/IO为低电平,而ALE在每个总线周期的T1状态输出一个高电平脉冲,作为地址锁存信号。(6)软件中断和非屏蔽中断不按照这种时序来响应中断。中断响应时序

2023/2/635共98页8259A中断管理方式1、8259A的编程结构优先级和结束方式

屏蔽和查询方式

2023/2/636共98页(1)中断管理方式是通过8259A初始化时写入初始化命令字和操作命令字来设置的。(2)初始化命令字写入寄存器ICW1~ICW4,它是由初始化程序设置的,初始化命令字一经设定,在系统工作过程中就不再改变。(3)操作命令字写入寄存器OCW1~OCW3,它是由应用程序设定的,用来对中断处理过程进行控制,在系统运行过程中,操作命令字可以重新设置。8259A中断管理方式1、8259A的编程结构2023/2/637共98页2、优先级设置方式8259A中断管理方式(1)完全嵌套方式若8259A初始化后没有设置其它优先级的方式,就自动进入完全嵌套方式。在这种方式下,中断优先级分配固定级别0~7级,IR0具有最高优先级,IR7优先级最低。也可用初始化命令字ICW4中SFNM=0,将8259A置成完全嵌套优先级方式。允许打断正在处理的中断,优先处理更高级的中断,实现中断嵌套,但禁止同级与低级中断请求进入。

有两种中断结束方式:普通EOI结束方式和自动AEOI结束方式。2023/2/638共98页(2)特殊全嵌套工作方式在级联时,还有一种特殊全嵌套工作方式,它与全嵌套工作方式基本相同。区别在于当处理某级中断时,有同级中断请求进入,8259A也会响应,从而实现了对同级中断请求的特殊嵌套。2、优先级设置方式8259A中断管理方式在级联方式中,主片编程为特殊全嵌套工作方式,从片为其它优先级方式(完全嵌套方式或优先级循环方式)。特殊全嵌套工作方式的设置是主片初始化时ICW4中的SFNM=1,同时将从片ICW4中AEOI位置“0”,设成非自动结束方式,通常用特殊EOI结束方式。2023/2/639共98页2、优先级设置方式8259A中断管理方式(3)优先级自动循环方式在优先级自动循环方式中,优先级别可以改变。初始优先级次序规定为IR0、IR1、…、IR7,当任何一级中断被处理完后,它的优先级别变为最低,将最高优先级赋给原来比它低一级的中断请求,其它依次类推。

用操作命令字OCW2中R、SL=10就可设置优先级自动循环方式。根据结束方式不同,有两种自动循环方式:普通EOI循环方式和自动EOI循环方式。2023/2/640共98页(4)优先级特殊循环方式优先级特殊循环方式和优先级自动循环方式相比,不同之处在于优先级特殊循环方式中,初始时最低优先级由程序规定,最高优先级也就确定了。例如初始时指定IR1为最低优先级,则IR2为最高优先级,其它依次类推。而优先级自动循环方式初始时最高优先级一定是IR0。用操作命令字OCW2中R、SL=11就可设置优先级特殊循环方式,结束方式通常用特殊EOI循环方式。2、优先级设置方式8259A中断管理方式2023/2/641共98页3、中断源屏蔽方式

8259A中断管理方式(1)普通屏蔽方式将中断屏蔽寄存器IMR中某一位或某几位置“1”,即可将对应位的中断请求屏蔽掉。普通屏蔽方式的设置通过设置操作命令字OCW1来实现。[例]屏蔽第2、3、5、6位进入的中断请求,假设8259A的端口地址为20H,21H。 MOVAL,01101100H ;屏蔽字 OUT21H,AL对OCW1的设置可以在主程序中,也可放在中断服务程序中,具体根据中断处理要求而定。2023/2/642共98页3、中断源屏蔽方式

8259A中断管理方式(2)特殊屏蔽方式此方式能对本级中断进行屏蔽,而允许优先级比它高或低的中断进入,特殊屏蔽方式总是在中断处理程序中使用,特殊屏蔽方式的设置是通过设置操作命令字OCW3中的ESMM、SMM=11来实现的,例如:当前正在执行IR3的中断服务程序,设置了特殊屏蔽方式后,再用OCW1对中断屏蔽寄存器中第3位置“1”时,就会同时使当前中断服务寄存器中对应位自动清“0”,这样可以既屏蔽了当前正在处理的中断,又开放了较低级别的中断。待中断服务程序结束时,应将IMR寄存器的第3位复位,并将SMM位复位,表示退出特殊屏蔽方式。2023/2/643共98页在固定优先级方式中,对中断结束的处理有自动AEOI结束方式和非自动结束方式,非自动结束方式又分普通EOI结束方式和特殊SEOI结束方式。为什么要进行中断结束处理?中断结束处理实际上就是对中断服务寄存器ISR中对应位的处理。当一个中断得到响应时,8259A使ISR寄存器中对应位置“1”,表明此对应外设正在服务,并为中断优先级判别器提供判别依据。中断结束时,必须使ISR寄存器中对应位置“0”,否则中断优先级判别会不正常。什么时刻使ISR中对应位置“0”,就产生不同的中断结束方式。8259A中断管理方式4、中断结束方式2023/2/644共98页(1)普通EOI结束方式在完全嵌套工作方式下,任何一级中断处理结束返回上一级程序前,CPU向8259A传送EOI结束命令字,8259A收到EOI结束命令后,自动将ISR寄存器中级别最高的置“1”位清“0”(此位对应当前正在处理的中断)。

EOI结束命令字必须放在返回指令IRET前,没有EOI结束命令,ISR寄存器中对应位仍为“1”,继续屏蔽同级或低级的中断请求。普通EOI结束命令字是设置OCW2中EOI位为1,即OCW2中R、SL、EOI组合为001。对IBMPC/XT机,发EOI结束命令字指令为:

MOV AL,20H OUT 20H,AL;ALOCW2

8259A中断管理方式4、中断结束方式2023/2/645共98页(2)特殊EOI结束方式在非全嵌套工作方式下,中断服务寄存器无法确定哪一级中断为最后响应和处理的,这时要采用特殊SE0I结束方式。CPU向8259A发特殊EOI结束命令字,命令字中将当前要清除的中断级别也传给8259A。此时,8259将ISR寄存器中指定级别的对应位清“0”,它在任何情况下均可使用。特殊EOI结束命令字是将OCW2中R、SL、EOI设置成011,而L2~L0三个位指明了中断结束的对应位。8259A中断管理方式4、中断结束方式2023/2/646共98页(3)自动EOI结束方式在AEOI方式中,任何一级中断被响应后,ISR寄存器对应位置“1”,但在CPU进入中断响应周期,发第二个INTA脉冲后,8259A自动将ISR寄存器中对应位清“O”。此时,尽管对某个外设正在进行中断服务,但对8259A来说,ISR寄存器中没有指示,好象已结束了中断处理一样。

通常在只有一片8259A,多个中断不会嵌套情况下使用。自动AEOI方式设置是在8259A初始化时,用初始化命令字ICW4中使AEOI=1的方法来实现的。在级联方式下,一般用非自动结束方式,无论用普通EOI结束方式,还是用特殊EOI结束方式,中断处理结束时,要发两次中断结束命令,一次是对主片发的,另一次是对从片发的。8259A中断管理方式4、中断结束方式2023/2/647共98页8259A中断管理方式5、循环优先级的循环方式(1)普通EOI循环方式在主程序或中断服务程序中设置操作命令字,当任何一级中断被处理完后,使CPU给8259A回送普通EOI循环命令,8259A收到EOI循环命令后,将ISR寄存器中,最高优先级的IRi置“1”位清“0”,并赋给它最低优先级,将最高优先级赋给它的下一级IRi+1,其它依次类推。

普通EOI循环方式命令字是设置OCW2。在非自动结束方式中,OCW2中的R、SL、EOI设置成101,L2~L0不起作用。2023/2/648共98页(2)特殊EOI循环方式特殊EOI循环方式即指定最低优先级循环方式,最低优先级由编程确定,最高优先级也相应而定,这样在当前中断服务程序结束前,使CPU给8259A回送特殊EOI结束命令,同时将当前就要结束的中断级别也传送给8259A,8259A收到此命令字后,将ISR中相应位清“0”。显然这种结束方式最为安全可靠。

8259A中断管理方式5、循环优先级的循环方式设定特殊EOI循环方式时,设置OCW2中R、SL、EOI=111,L2~L0指定了一个最低优先级。2023/2/649共98页(3)自动EOI循环方式在自动EOI循环方式中,任何一级中断被响应后,中断响应总线周期中第二个INTA信号的后沿自动将ISR寄存器中相应位清“0”,并立即改变各级中断的优先级别,改变方式与普通EOI循环方式相同。使用这种方式要小心,防止重复嵌套产生。自动EOI循环方式设置是OCW2中R、SL、EOI=100。8259A中断管理方式5、循环优先级的循环方式2023/2/650共98页(1)边沿触发方式在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号。中断请求输入端出现上升沿触发信号后,可以一直保持高电平。(2)电平触发方式在电平触发方式下,8259A将中断请求输入端出现的高电平作为中断请求信号。但当中断得到响应后,中断输入端必须及时撤出高电平,否则在CPU进入中断处理过程,并且开中断的情况下,原输入端的高电平会引起第二次中断的错误。(3)中断查询方式在中断查询方式下,外部设备向8259A发中断请求信号,中断请求可以是边沿触发,也可以是电平触发。但8259A不通过INT信号向CPU发中断请求信号,CPU要使用软件查询来确定中断源。8259A中断管理方式6、中断请求引入方式2023/2/651共98页2023/2/652共98页(1)中断源在IR0—IR7上产生中断请求;(2)中断请求被锁存在IRR中,经IMR”屏蔽”,送PR;(3)控制电路接收中断请求,向CPU输出INT信号(4)CPU接收8259A的INT信号,在IF=1下,发INTA;

(5)设置ISR中对应位;(6)若8259A作为主片。则在第一个INTA将级联地址从CAS0—CAS2送出;若8259A单独使用或是由CAS0—CAS2选择的从片,就在第二个INTA中将中断类型号输出到低8位数据总线上;(7)CPU读出该中断类型号,转到对应的中断服务程序;(8)中断处理结束前,中断处理程序向8259A发送一条EOI(中断结束)命令,使ISR相应位复位,本次中断结束;8259A中断管理方式7、工作过程2023/2/653共98页(1)固定优先级

各个中断源优先级由它所连接的引脚编号决定;1、全嵌套方式(常用的一种工作方式)若8259A初始化后没有设置其它优先级的方式,就自动进入全嵌套方式。IR0具有最高优先级,IR7优先级最低。2、特殊全嵌套方式(一般用于级联情况下)在级联方式中,从片上8个中断请求有着不同的优先级别,但从主片来看,属于同一级别。假设从片为全嵌套方式,先后收到两次中断请求,且第二次有较高的优先级,该从片就会两次通过INT向上一级申请中断,如果主片为全嵌套工作方式,则它不会响应来自同一个引脚的第二次中断请求,而主片处于特殊全嵌套工作方式时,就能响应请求。一般情况下:单片全嵌套方式;多片,主片特殊全嵌套方式,从片全嵌套方式。8259A中断管理方式优先权管理小结2023/2/654共98页(2)循环优先级方式

各个中断申请具有大体相同的优先级。1、优先级自动循环方式初始优先级次序规定为IR0、IR1、…、IR7,当任何一级中断被处理完后,它的优先级别变为最低,将最高优先级赋给原来比它低一级的中断请求,其它依次类推。2、优先级特殊循环方式初始时最低优先级由程序规定,最高优先级也就确定了。8259A中断管理方式优先权管理小结2023/2/655共98页中断结束方式中断服务完成时,必须给8259A一个命令,使这个中断级在ISR中对应位清“0”,表示该中断处理结束。(1)自动中断结束方式(AEOI) 系统一旦进入中断响应,8259A就在第二个INTA信号的后沿,自动将ISR中对应位清“0”。最简单一种中断结束方式;注意:它只能用在系统中只有一个8259A,且多个中断不会嵌套。(2)非自动中断结束方式(EOI)从中断服务程序返回前,必须在程序中向8259A输出一个中断结束命令(EOI),把对应于ISR中的位清“0”,具体由两种:1、一般自动中断结束方式。指令中不指定清除ISR中哪一位,由8259A自动选择优先权最高的位;2、特殊EOI结束方式。在指令中指明要清除ISR中某一位。注意:非自动中断结束方式如果在程序中没有将ISR中对应位清“0”,那么8259A在一般情况下将不再响应这个中断以及比他级别低的中断请求。8259A中断管理方式中断结束方式小结2023/2/656共98页8259A的编程方法对8259A的编程有两类命令字:初始化命令字ICW(InitializationCommandWord)和操作命令字OCW(OperationCommandWord)。系统复位后,初始化程序对8259A置入初始化命令字。初始化后可通过发出操作命令字OCW来定义8259A的操作方式,实现对8259A的状态、中断方式和优先级管理的控制。初始化命令字只发一次,操作命令字允许重置,以动态改变8259A的操作与控制方式。2023/2/657共98页初始化命令字ICW对8259A编程初始化命令字,共预置4个命令字:ICW1、ICW2、ICW3、ICW4。初始化命令字必须顺序填写,但并不是任何情况下都要预置4个命令字,用户根据具体使用情况而定。(1)ICW1——芯片控制初始化命令字注意:ICW1的D4位必须为1,用作ICW1的标志。2023/2/658共98页初始化命令字ICW2、ICW2——设置中断类型号的初始化命令字A0:A0=1,表示ICW2必须写到8259A的奇地址端口中。8259A中IR0端对应的中断类型号为中断类型号的基值,它是可以被8整除的正整数,ICW2用来设置这个中断类型号基值,由此提供外部中断的中断类型号。ICW2低3位为0,高5位由用户设定。当8259A收到CPU发来的第二个INTA信号,它向CPU发送中断类型号,其中高5位为ICW2的高5位,低3位根据IR0~IR7中响应哪级中断(对应为000~111b)来确定。2023/2/659共98页初始化命令字ICW3、ICW3——标识主片/从片的初始化命令字2023/2/660共98页初始化命令字ICW到CPU的INTR引脚2023/2/661共98页初始化命令字ICW4、ICW4——方式控制初始化命令字ICW1为1时,要求预置ICW4命令字,对8086/8088系统必须预置ICW4。2023/2/662共98页初始化命令字的设置有固定次序,端口地址也有明确规定,并不会因为只有两个端口输出命令而混淆。初始化命令字必须从ICW1开始设置,依次顺序进行设置,并分别根据ICW1中的SNGL位和IC4位决定是否设置ICW3和ICW4。级联时要设置ICW3,并且主片与从片的ICW3设置不同。在初始化命令字设置完成前,对A0=1的输出指令不可能是操作命令字。而初始化命令序列设置完成后,在操作命令字的设置中,不可能第二次初始化,因此不会混淆。初始化命令字ICW2023/2/663共98页初始化命令字ICW初始化命令字设置次序2023/2/664共98页初始化命令字ICW初始化命令字设置次序结束2023/2/665共98页[例]

在IBMPC/XT系统中,ROM-BIOS中的8259A初始化程序为:

…… MOV AL,13H ;单片、边沿触发、要设置ICW4

OUT 20H,AL ;写入ICW1

MOV AL,08H ;中断类型号基值为08H OUT 21H,AL ;写入ICW2

MOV AL,0DH ;缓冲方式、非自动EOI方式、 ;完全嵌套方式、 ;使用8086/8088微处理器。

OUT 21H,AL ;写入ICW48259A经初始化命令字ICW预置后已进入初始化状态,可接收来自IRi端的中断请求,自动进入操作命令状态,可以随时接受CPU写入8259A的操作命令字OCW。初始化命令字ICW2023/2/666共98页例:两片8259A进行级联,主片SP/EN连+5V,从片SP/EN接地,边沿触发,非缓冲方式,非自动中断结束,CAS0—CAS2互连,如前图所示。主片:MOVAL00010001B;ICW1:边沿触发,级联,设置

;ICW4OUT20H,ALMOVAL,00001000B;ICW2:中断类型08H—0FHOUT21H,ALMOVAL,00001000B;ICW3:IR3连有从片OUT21H,ALMOVAL,00010001B;ICW4:特殊全嵌套,非缓冲,;非自动中断结束,8086微处理器

OUT21H,AL2023/2/667共98页从片:MOVAL00010001B;ICW1:边沿触发,级联OUT0A0H,ALMOVAL,01110000B;ICW2:中断类型70H—77HOUT0A1H,ALMOVAL,00000011B;ICW3:INT接主片IR3OUT0A1H,ALMOVAL,00000001B;ICW4:全嵌套,非缓冲,非自动中断结束,8086微处理器

OUT0A1H,AL2023/2/668共98页操作命令字

操作命令字决定中断屏蔽、中断优先级次序、中断结束方式等。中断管理较复杂,包括:完全嵌套优先方式、特殊嵌套优先方式、自动循环优先方式、特殊循环优先方式、特殊屏蔽方式、查询方式等。它是由操作命令字的设置来实现的,设置时,次序上没有严格要求,但端口地址有严格规定,OCW1必须写入奇地址端口,OCW2和OCW3必须写入偶地址端口。

2023/2/669共98页操作命令字

(1)OCW1——中断屏蔽操作命令字A0:A0=1,OCW1命令字必须写入8259A奇地址端口。OCW1命令字的各位直接对应中断屏蔽寄存器IMR的各位,当OCW1中某位Mi为1,对应位的中断请求受到屏蔽,某位为0,对应位的中断请求得到允许。(对比IF的设置,正好相反。)2023/2/670共98页(2)OCW2——优先权循环方式和中断结束方式操作命令字操作命令字

2023/2/671共98页A0:A0=0,OCW2写入偶地址端口。D4、D3:OCW2的标志位,等于00,区别ICW1和OCW3。L2~L0:SL=1时,L2~L0有效。L2~L0有两个用途,一是当OCW2设置为特殊EOI结束命令时(011,111),L2~L0指出清除中断服务寄存器中的哪一位;二是当OCW2设置为特殊优先级循环方式时(110),L2~L0指出循环开始时设置的最低优先级。R、SL、EOI:组合起来指明优先级设置方式和中断结束方式,每位有各自的意义。R(Rotate):R=1,中断优先级是按循环方式设置的;R=0,设置为固定优先级。SL(SpecificLevel):指明L2~L0是否有效。EOI(EndOfInterrupt):指定中断结束方式。EOI=1,使用中断结束命令使中断服务寄存器中对应位复0;EOI=0,不需要执行结束操作命令。(ICW4的AEOI=1,OCW2中的EOI位应为0)。OCW2的功能包括两个方面,一方面是决定8259A是否采用优先级循环方式,另一个方面是中断结束采用普通的还是特殊的EOI结束方式。2023/2/672共98页RSLEOI功

能100设置自动EOI循环方式。在中断响应周期的第二个负脉冲信号结束时,将ISR寄存器中正在服务的相应位置0,本级赋予最低优先级,最高优先级赋给它的下一级,其它中断优先级依次循环赋给。000清除自动EOI循环。101设置普通EOI循环。一旦中断结束,8259A将中断服务寄存器ISR中当前级别最高的置1位清0,此级赋予最低优先级,最高优先级赋给它的下一级,其它中断优先级依次循环赋给。111设置特殊EOI循环。一旦中断结束,将中断服务寄存器ISR中由L2~L0字段给定级别的相应位清0,此级赋于最低优先级,最高优先级赋给它的下一级,其它中断优先级依次循环赋给。110置位优先级循环。8259A按L2~L0字段确定一个最低优先级,最高优先级赋给它的下一级,其它中断优先级依次循环赋给,系统工作在优先级特殊循环方式。001普通EOI结束方式。一旦中断处理结束,CPU向8259A发出EOI结束命令,将中断服务寄存器ISR中当前级别最高的置1位清0。一般用在完全嵌套(包括特殊全嵌套)工作方式。011特殊EOI结束方式。一旦中断处理结束,CPU向8259A发出EOI结束命令,8259A将中断服务寄存器ISR中,由L2~L0字段指定的中断级别的相应位清0。010OCW2无效。2023/2/673共98页操作命令字

(3)OCW3——特殊屏蔽方式和查询方式操作命令字OCW3功能有三个:设定特殊屏蔽方式,设置对8259A寄存器的读出及设置中断查询工作方式。INAL,20H(IRR,ISR)INAL,20H(P=1,查询字)INAL,21H(IMR)(任何时候)2023/2/674共98页A0D7D6D5D4D3D2D1D00IR××××W2W1W0ESMMSMM功

能10复位为普通屏蔽方式11置位为特殊屏蔽方式0×无效注意:通过OCW3设置P=1的查询命令字后,8259A不再通过INT引脚向CPU发中断请求;要取消查询方式,可以再次发送OCW3,并使P=0。

2023/2/675共98页操作控制字OCW1~OCW3的设置,安排在初始化命令字设置之后,用户根据需要可在程序的任何位置去设置。尽管8259A只有两个端口地址,但不会混淆4个初始化命令字和3个操作命令字。ICW2、ICW3、ICW4和OCW1写入8259A奇地址端口,初始化时ICW1后面紧跟ICW2、ICW3、ICW4,而OCW1是单独写入的,不会紧跟在ICW1后面。ICW1、OCW2、OCW3写入8259A偶地址端口,但一方面ICW1是在初始化时写入,另一方面可用D4位区分,D4=1为ICW1,D4=0为OCW;再用D3位区分,D3=0为OCW2,D3=1为OCW3。因此对8259A编程时写入的命令字是不会混淆的。从8259A能够读出的状态字有4个:IMR、IRR、ISR和查询字。A0=1,读出的一定是IMR;在OCW3的P、RR和RIS位的控制下,可相应读出IRR、ISR和查询字。2023/2/676共98页微机系统区别接口电路(或接口芯片)中不同的寄存器(或控制信息、状态信息等)的主要方法:

利用读/写控制信号区别写入的控制寄存器和读出的状态寄存器;

利用地址信号区别不同I/O端口地址的寄存器;

由命令字中的标志位说明是哪个寄存器;

由芯片内部顺序控制逻辑按一定顺序识别不同的寄存器;

由前面写入的命令字决定后续操作的寄存器。2023/2/677共98页8259A的中断级联一片8259A管理8级中断,当申请中断的外设多于8级时,可以将8259A级联使用,最简单的级联方式为两级,第一级为8259A主片,第二级为8259A从片,主片可接1~8片8259A从片,这样最多可管理64级中断源。

在级联系统中,主片和从片都要设置初始化命令字进行初始化,设置主片初始化命令字与无级联单片8259A初始化时不同之处有以下几点:(1)级联时,ICW1中SNGL=0;单片时,SNGL=1。(2)级联时,要求设置ICW3,若某个IRi引脚上连有从片,主片ICW3的对应位设为1,未连接从片的对应位设为0。单片不需要设置ICW3。(3)级联时,主片可设置为特殊全嵌套工作方式,ICW4中SFNM=1。

2023/2/678共98页8259A级联方式连接图

2023/2/679共98页8259A的中断级联设置从片初始化命令字时,要注意以下两点:(1)从片的ICW1中,SNGL=0。(2)从片必须设置ICW3,由ICW3中三个最低有效位ID2~ID0的组合来标记此从片连到主片哪个IRi引脚上。级联时中断优先级判别是由从片判别本片内最高优先级后,向8259A主片再申请中断,然后由主片判别当前最高优先级,向CPU发中断请求信号INT。注意当8259A主片设置为特殊全嵌套工作方式时,允许相同级别的中断请求通过。2023/2/680共98页例:一个8259A主片,连接2片8259A从片,从片分别经主片的IR3及IR5引脚接入,若主片设置为特殊全嵌套工作方式,从片设置为完全嵌套工作方式,则系统中优先级排列次序为:主片IR0、IR1、IR2

从片IR0、IR1、…、IR7

主片IR4

从片IR0、IR1、…、IR7

主片IR6、IR7中断处理结束时,CPU应发出两个EOI结束命令,一个送给主片8259A,另一个送给从片8259A,使8259A主片和从片的ISR寄存器相应位清“0”,这样一次中断处理过程结束。2023/2/681共98页例:特殊全嵌套工作方式:假设某微机系统的8086CPU工作在最小模式,中断系统有1片8259A主片,2片8259A从片构成级联工作方式。从片1#从8259A主片IR6端引入,从片2#从8259A主片IR3端引入,8259A主片的IR0及IR4引入2个中断请求信号。8259A从片1#由IR6端收到一个中断请求信号IRRD7D6D5D4D3D2D1D0(从片1#)01000000ISRD7D6D5D4D3D2D1D0(从片1#)01000000IRRD7D6D5D4D3D2D1D0(主片)01000000ISRD7D6D5D4D3D2D1D0(主片)01000000IRRD7D6D5D4D3D2D1D0(从片1#)00000010ISRD7D6D5D4D3D2D1D0(从片1#)01000010在CPU中断服务过程中,8259A从片1#收到IR1端来的中断请求

2023/2/682共98页例:某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连8259A主片的IR3端。若当前8259A主片从IR1、IR5端引入两个中断请求,中断类型号为31H、35H。中断服务程序的段基址为1000H,偏移地址分别为2000H及3000H。8259A从片由IR4、IR5端引入两个中断请求,中断类型号为44H和45H,中断服务程序段基址为2000H,偏移地址为3600H及4800H。2023/2/683共98页2023/2/684共98页2023/2/685共98页(1)中断向量表的设置:

MOV AX,1000H MOV DS,AX ;送入段地址

MOV DX,2000H ;送入偏移地址

MOV AX,2531H ;中断类型号31H INT 21H MOV DX,3000H MOV AL,35H ;中断类型号35H INT 21HMOV AX,2000H MOV DS,AX MOV DX,3600H MOV AX,2544H ;中断类型号44H INT 21H MOV DX,4800H MOV AL,45H ;中断类型号45H INT 21H2023/2/686共98页(2)主片8259A初始化编程:假设主片的端口地址为0FFC8H和0FFC9H。

MOV AL,11H ;定义ICW1:级联使用,边沿触发,要设置ICW4

MOV DX,0FFC8H OUT DX,AL MOVAL,30H ;定义ICW2:主片中断类型号为30H~37H MOVDX,0FFC9H OUT DX,AL MOV AL,08H ;定义ICW3:主片IR3连接从片的INT端

OUT DX,AL MOV AL,11H ;定义ICW4:特殊全嵌套方式,非缓冲方式, ;非自动EOI结束方式

OUT DX,AL MOV AL,0D5H ;定义OCW1:允许IR1、IR3、IR5中断,其余;中断请求输入端的中断请求被屏蔽

OUT DX,ALMOV AL,20H ;定义OCW2:普通EOI结束方式MOV DX,0FFC8HOUT DX,AL2023/2/687共98页(3)8259A从片初始化编程:假设从片的端口地址为0FFCAH和0FFCBH。

MOV AL,11H ;定义ICW1:级联使用,边沿触发,要设置ICW4

MOV DX,0FFCAH OUT DX,AL MOV AL,40H ;定义ICW2:从片中断类型号为40H~47H MOV DX,0FFCBH OUT DX,AL MOV AL,03H ;定义ICW3:从片的INT端连接主片IR3端

OUT DX,AL MOV AL,01H ;定义ICW4:完全嵌套方式,非缓冲方式, ;非自动EOI结束方式

OUT DX,AL MOV AL,0CFH ;定义OCW1:允许IR4、IR5中断,其余;中断请求输入端的中断请求被屏蔽

OUT DX,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论