第7章中断控制器7.18259A概述7.28259A的引脚信号、编程结构和工作原理7.38259A的工作方式7.48259A的初始化命令字和操作命令字7.58259A使用举例中断申请管理接口INT中断申请接口1网络接口2硬盘接口3软盘接口4打印机CPUINTRIF7.18259A概述一、中断控制器的功能1.向CPU的引脚INTR发中断申请信号当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。2.送中断类型号在CPU中断响应周期,针对不同外设的中断请求,向CPU传送不同的中断类型号,使CPU执行相应的中断子程。1、一片8259A可管理8级中断。可用9片8259A芯片级连,构成64级中断系统。2、可编程3、只需一组5V电源二、8259A的工作特点7.28259A的引脚信号、编程结构和工作原理引脚信号1、D7~D0:数据线。2、INT:中断请求线。3、:中断应答信号。INTA4、:片选信号。CS5、A0:端口选择信号。和系统总线的A1相连。习惯上,把A0=0所对应的端口称为“偶端口”,A0=1所对应的端口称为“奇端口”。9、CAS2~CAS0:级连方式下指出具体从片。10、:主从片选择和驱动信号,双向信号。ENSP/8、IR7~IR0:中断请求接收线。用于启动数据总线驱动器1:8259为主片0:8259为从片8259采用非缓冲方式工作,输入。6、:读信号。RD7、:写信号。WR8259采用缓冲方式工作,输出。一、8259A的内部结构双向三态缓冲器,8259与系统数据总线的接口。1.接收片选信号;2.接收内部端口选择信号。3.接收读/写控制命令;在级联方式主/从结构中,控制8259A的级联。锁存中断请求信号当IRi=1时,IRRi=1设置中断请求的屏蔽信号当IMRi=1时,IRi被屏蔽。记录当前正在被服务的中断请求,包括尚未服务完而中途被更高优先级打断的中断。识别中断请求信号的优先级。一般处理原则:允许高级中断打断低级中断,不允许低级中断打断高级中断,也不允许同级中断互相打断。1.根据IRR和PR的判定结果,向CPU发中断请求信号;2.接收来自CPU的中断响应信号,控制8259A进入中断服务状态。二、8259A的编程结构和工作原理1、编程结构处理部分控制部分外部中断请求IRR接收,对应位置1,锁存。IMR对应位=0IMR对应位=1,屏蔽。PR裁决与ISR中对应位比较优先级高优先级低INT=1IF=0IF=1CPU往INTA发两个负脉冲第一个负脉冲第二个负脉冲1)IRR锁存失效,不接收中断请求信号;2)ISR对应位置1;3)IRR相应位清0。1)8259A发中断类型码;2)中断自动结束方式下,ISR对应位清0。2、工作原理7.38259A的工作方式一、设置优先级的方式二、屏蔽中断源的方式三、结束中断处理的方式四、连接系统总线的方式五、引入中断请求的方式7.38259A的工作方式一、设置优先级的方式按照优先级设置方法来分,8259A有如下几种工作方式:1、全嵌套方式全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式特点:IR0优先权最高,IR7最低。8259A默认工作方式。不允许同级中断嵌套2、特殊全嵌套方式特点:可实现同级中断请求的特殊嵌套。一般用于8259A级联的情况下。系统中只有单片8259A时,通常采用全嵌套方式。系统中有多片8259A时,主片必须采用特殊全嵌套方式,从片可采用全嵌套方式。IR0IR1IR7INTIR0IR1IR7INT……3、优先级自动循环方式特点:1.某一中断源受到中断服务后,其优先权自动降为最低,而与之相邻的优先级升为最高;2.该方式初始优先级队列:IR0、IR1…IR6、IR7。例:当前IR0优先权最高,IR7最低。当IR4、IR6同时有请求时,首先响应IR4。在IR4被服务后,IR4的优先权降为最低,而IR5升为最高。以下依次为IR6、IR7、IR0、IR1、IR2、IR3。4、优先级特殊循环方式与优先级自动循环方式的不同:优先级自动循环方式:初始最高优先权固定为IR0;优先级特殊循环方式:编程确定初始最低优先级。例:编程时确定IR6为最低优先权,则IR7具有最高优先级。二、屏蔽中断源的方式1、普通屏蔽方式特点:通过设置操作命令字(OCW1)设置IMR各位的状态,从而达到屏蔽或开放对应中断的目的。若写入某位为“1”,对应的中断请求被屏蔽;为“0”则开放。按照对中断源的屏蔽方式来分,8259A有如下两种工作方式:2、特殊屏蔽方式适用场合:用于允许低级中断打断高级中断的场合。特点:用屏蔽字对IMR中某一位置“1”时,会同时使ISR中对应位清“0”,这样就不但屏蔽了当前被服务的中断,同时真正开放了其他优先权较低的中断级。三、结束中断处理的方式1、中断自动结束方式中断服务完成时,必须给8259A一个命令,使ISR中的相应位清“0”,表示该中断处理已经结束。特点:系统一旦进入中断响应,8259A在第二个中断响应脉冲到来后,自动将ISR中的对应位清“0”。适用场合:系统中只有一个8259A,且多个中断不会嵌套的情况。按照对中断处理的结束方法来分,8259A有两种工作方式:自动方式和非自动结束方式(又包含2种):2、一般的中断结束方式特点:发结束命令时,指令内不指定清除ISR中的哪一位,由8259A自动将最高优先级对应的ISR中非零位复位,结束当前正在处理的中断。用于全嵌套方式。3、特殊的中断结束方式特点:在指令内指明要清除ISR中的某一位。注意:在非自动中断结束方式下,如果在程序里不将ISR对应位清零,那么一般情况下,8259A将不再响应同级中断以及比它级别低的中断请求。四、连接系统总线的方式1、缓冲方式特点:8259A通过总线驱动器和系统总线相连。该方式用于8259A的级连系统。该方式下,8259A输出状态字或中断类型码的同时,从SP/EN输出低电平,用于启动数据总线驱动器。2、非缓冲方式特点:8259A直接和系统总线相连。该方式适于单片8259A或几片8259A级连的小系统。单片8259A或8259A为主片,SP/EN接高电平;8259A为从片,SP/EN接低电平。按照8259A和系统总线的连接来分,有如下两种工作方式:五、引入中断请求的方式1、边沿触发方式特点:将中断请求输入端出现的上升沿作为中断请求信号。2、电平触发方式特点:将中断请求输入端出现的高电平作为中断请求信号。按照中断请求的引入方法来分,8259A有如下工作方式:3、中断查询方式特点:1.外设通过向8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号。2.CPU内部的中断允许触发器复位。3.CPU使用软件查询来确认中断源。外设8259A中断请求CPU8259A查询命令CPU查询字7.48259A的初始化命令字和操作命令字一、8259A的初始化命令字(ICW)1、ICW1:芯片控制初始化命令字A00D7D6D5D4D3D2D1D0×××1LTIM×SNGLIC4是否设置ICW41:设置ICW40:不设ICW4规定单片或级连方式1:单片方式0:级连方式中断触发方式1:电平触发方式0:边沿触发方式标识位D4用于区分ICW1、OCW2、OCW3。(均为偶地址)2、ICW2:设置中断类型码初始化命令字ICW2高五位与中断类型码的高五位相同。注:该命令字必须写入“奇地址”端口,即A0=1。3、ICW3:标志主/从片初始化命令字注:该命令字必须写入“奇地址”端口,即A0=1。从片8259D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2/ID2IR1/ID1IR0/ID0主片8259IRi=1:对应IRi接有从片IRi=0:对应IRi没有连接从片D7~D3=0~0D2~D0:说明从片INT引脚接到主片哪个IR引脚上。4、ICW4:方式控制初始化命令字D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIuPMA01标识位1:中断自动结束0:中断非自动结束D3=1D3=0,无作用1:主片0:从片1:缓冲方式0:非缓冲方式1:非8位系统0:8位系统1:特殊全嵌套方式0:非特殊全嵌套方式二、初始化流程设置ICW1设置ICW2是否级联?是否主片?Y设置主片ICW3Y需设ICW4?Y设置ICW4N设置从片ICW3NN是否级连请求信号格式是否ICW4设中断类型码是否为8位系统是否特殊全嵌套方式是否缓冲方式是否中断自动结束方式对初始化流程的几点说明①ICW1写入偶端口,ICW2~ICW4写入“奇”端口②ICW1~ICW4的设置次序固定③ICW1和ICW2必须设置,ICW3和ICW4根据实际情况④在级联时,主片和从片各设置ICW3例:在含单片8259A的系统中,8259A的工作方式是:边沿触发,普通全嵌套方式,非缓冲方式,非中断自动结束方式,中断类型码18H~1FH。端口地址80H,82H。编写8259A的初始化程序。×××1LTIM×SNGLIC4uPMAEOIM/SBUFSFNM00010×0000011×01×××解:1、确定初始化命令字1)ICW1D7D6D5D4D3D2D1D0×××110002)ICW23)ICW42、初始化程序MOVAL,13H;×××10×11BOUT80H,AL;设置ICW1MOVAL,18H;00011000B~00011111BOUT82H,AL;设置ICW2MOVAL,01H;00000001BOUT82H,AL;设置ICW4三、8259A的操作命令字1、OCW1:中断屏蔽操作命令字D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0A01Mi=1:对应于该位的中断请求被屏蔽Mi=0:对应于该位的中断请求得到允许例:如果OCW1=01H,则引脚IR0上的中断请求被屏蔽。2、OCW2:设置优先级自动循环方式和中断结束方式操作命令字D7D6D5D4D3D2D1D0RSLEOI00L2L1L0A00SL=1时有效特殊中断结束命令:指出清除ISR中哪一位。特殊优先级循环方式:哪个中断优先级最低。标识位中断结束命令位。1:使ISRn复位1:L2、L1、L0有效0:L2、L1、L0无效1:采用优先级循环方式0:采用优先级非循环方式R、SL、EOI组合产生的工作方式:(1)R、SL、EOI=001一般的中断结束命令。清除当前中断处理子程序对应的ISR位,使系统工作于优先级非循环方式下。该命令常用于全嵌套方式。例:设8259地址为80H和82H,一般中断结束命令:MOVAL,20H;00100000BOUT80H,ALD7D6D5D4D3D2D1D0RSLEOI00L2L1L0(2)R、SL、EOI=011特殊的中断结束命令。在非全嵌套方式下,无法确定哪一级中断最后被响应,用L2L1L0指出清除ISR的哪一位。设清除ISR4,则:MOVAL,64H;01100100BOUT80H,ALD7D6D5D4D3D2D1D0RSLEOI00L2L1L0(3)R、SL、EOI=101自动循环中断结束命令。清除当前中断处理子程序对应的ISR位,使系统按优先级循环方式工作,但当前优先级顺序左移一位。MOVAL,0A0H;10100000BOUT80H,AL设当前最高级为IR5,程序执行后,清除ISR5,优先级顺序为:IR6IR7IR0…IR5。D7D6D5D4D3D2D1D0RSLEOI00L2L1L0(4)R、SL、EOI=111设置一般中断结束和优先级特殊循环命令。清除当前中断处理子程序对应的ISR位,使系统最低优先级为L2L1L0所指定的值。MOVAL,0E2H;11100010BOUT80H,AL设当前最高级为IR5,程序执行后,清除ISR5,优先级顺序为:IR3…IR7IR0…IR2。D7D6D5D4D3D2D1D0RSLEOI00L2L1L0(5)R、SL、EOI=100设置中断优先级自动循环方式。MOVAL,80H;10000000BOUT80H,AL(6)R、SL、EO