1、8.1 中断技术概述中断技术概述8.2 8086/8088中断系统中断系统8.3 可编程中断控制器可编程中断控制器8259A8.4 8259A的应用的应用 中断是微型计算机系统中非常重要的一项技术中断是微型计算机系统中非常重要的一项技术是对微处理器功能的有效扩展是对微处理器功能的有效扩展 中断技术是微型计算机系统的核心技术之一中断技术是微型计算机系统的核心技术之一在当代计算机中具有重要作用在当代计算机中具有重要作用是用以提高计算机工作效率的一项重要技术是用以提高计算机工作效率的一项重要技术 一、中断的基本概念一、中断的基本概念 1.中断及中断源中断及中断源 中断中断是指是指CPU正在运行程序时
2、,由于某些事件或状态的出正在运行程序时,由于某些事件或状态的出现,使现,使CPU暂时停止正在运行的程序,转到为这些事情或状暂时停止正在运行的程序,转到为这些事情或状态服务的程序中去,服务完毕后,再返回被打断的程序继续态服务的程序中去,服务完毕后,再返回被打断的程序继续执行。执行。引起中断的事件或状态称为引起中断的事件或状态称为中断源中断源 2.中断服务程序中断服务程序 CPU在处理中断事件时必须针对不同中断源的要求给以不同在处理中断事件时必须针对不同中断源的要求给以不同的解决方案,这需要有一个中断处理程序的解决方案,这需要有一个中断处理程序(中断服务程序中断服务程序)来解来解决。决。从程序的逻
3、辑关系来看,中断的实质就是程序的转移。从程序的逻辑关系来看,中断的实质就是程序的转移。一个中断过程包含两次转移一个中断过程包含两次转移 响应响应 返回返回3.中断系统中断系统 微机的中断系统是由微处理器及其外围支持芯片中断控制微机的中断系统是由微处理器及其外围支持芯片中断控制器及相关程序组成器及相关程序组成 1)微处理器应有处理中断请求的机制与相关硬件电路)微处理器应有处理中断请求的机制与相关硬件电路 接收请求、响应请求、保护现场、转向中断服务程接收请求、响应请求、保护现场、转向中断服务程序以及中断处理完毕后的返回等机制序以及中断处理完毕后的返回等机制。2)微处理器的外围电路)微处理器的外围电
4、路中断控制器中断控制器 管理多个中断源,进行优先级排队,屏蔽中断源以管理多个中断源,进行优先级排队,屏蔽中断源以及提供中断信息等功能。及提供中断信息等功能。3)中断处理程序)中断处理程序 二、中断的基本原理与概念二、中断的基本原理与概念 1.中断屏蔽中断屏蔽 中断分为两大类:中断分为两大类:不可屏蔽中断不可屏蔽中断(NMI)可屏蔽中断(可屏蔽中断(INTR )IF:STI、CLI 2.中断优先级中断优先级 系统根据引起中断事件的重要性和紧迫程度,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先硬件将中断源分为若干个级别,称作中断优先级级。CPU按照由高到低的顺序
5、响应。高级中断可以按照由高到低的顺序响应。高级中断可以打断低级中断处理程序的运行,优先执行高级中打断低级中断处理程序的运行,优先执行高级中断处理程序。断处理程序。3.中断嵌套中断嵌套优先级更高的中断打断当前正在执行的级别较低的中断优先级更高的中断打断当前正在执行的级别较低的中断 三、中断的过程三、中断的过程 中断是一个软硬件协调工作的过程,整个工作过中断是一个软硬件协调工作的过程,整个工作过程可分为中断请求、中断响应和中断处理。程可分为中断请求、中断响应和中断处理。1.中断请求中断请求 中断请求是由中断源发出并送给中断请求是由中断源发出并送给CPU的控制信的控制信号,由中断源设备通过置号,由中
6、断源设备通过置1设置在接口卡上的设置在接口卡上的中中断触发器断触发器完成。完成。中断源的中断屏蔽触发器可以设置是否发出中断源的中断屏蔽触发器可以设置是否发出这一请求这一请求 2.中断响应中断响应响应中断请求的条件:响应中断请求的条件:这一请求的中断优先级最高;这一请求的中断优先级最高;CPU允许中断允许中断 且且CPU执行完当前指令执行完当前指令这一请求没有被中断管理机构屏蔽这一请求没有被中断管理机构屏蔽这一请求没有超过系统允许嵌套的层数这一请求没有超过系统允许嵌套的层数响应时系统的操作:响应时系统的操作:执行中断隐指令执行中断隐指令 保存程序计数器保存程序计数器PC和标志寄存器内容和标志寄存
7、器内容 3.中断处理中断处理用户编程完成的操作:用户编程完成的操作:1)关中断、保护现场关中断、保护现场2)开中断)开中断允许嵌套允许嵌套3)中断服务)中断服务4)关中断)关中断恢复断点和现场时不被中断恢复断点和现场时不被中断 5)恢复现场、中断结束)恢复现场、中断结束6)中断返回)中断返回8086/8088系统的中断类型可以有系统的中断类型可以有256个,个,用一个用一个8位二进制码表示。位二进制码表示。划分为划分为硬件中断(外部中断)硬件中断(外部中断)软件中断(内部中断)软件中断(内部中断)两类两类外部中断又有外部中断又有不可屏蔽中断不可屏蔽中断和和可屏蔽中断可屏蔽中断请求,请求,分别通
8、过分别通过NMI引脚和引脚和INTR引脚输入到引脚输入到CPU。图8-1 8086/88系统的中断分类一、中断类型一、中断类型 1.硬件中断硬件中断可屏蔽中断可屏蔽中断 不可屏蔽中断不可屏蔽中断 2.软件中断软件中断二、中断优先级二、中断优先级 为了使系统的各类中断有序地进行,需对中断划分优先级为了使系统的各类中断有序地进行,需对中断划分优先级 内部中断内部中断的优先级别最高(单步中断除外),其次是的优先级别最高(单步中断除外),其次是不可屏不可屏蔽中断蔽中断(NMI)和)和可屏蔽中断可屏蔽中断,单步中断单步中断的优先级别最低。的优先级别最低。三、中断向量表三、中断向量表 1.中断向量与中断向
9、量表中断向量与中断向量表 如何根据不同的中断源进入相应的中断服务子程如何根据不同的中断源进入相应的中断服务子程序,每一个中断服务程序都有一个唯一确定的入口序,每一个中断服务程序都有一个唯一确定的入口地址。地址。中断向量:中断向量:中断服务程序入口地址的段基地址和段中断服务程序入口地址的段基地址和段内偏移地址,内偏移地址,CS:IP。中断向量中断向量存储时占用存储时占用4个字节个字节 中断类型号中断类型号:系统为每个中断源指定的一个编号系统为每个中断源指定的一个编号一个中断类型号与一个中断服务子程序(中断向量)相对应一个中断类型号与一个中断服务子程序(中断向量)相对应 中断向量表:中断向量表:所
10、有中断向量按类型号集中存放在存所有中断向量按类型号集中存放在存储器的某个区域内,形成中断向量表。储器的某个区域内,形成中断向量表。图8-2 8086/88的中断向量表8086/8088 中断系统有中断系统有256个中断,个中断,每个中断向量占每个中断向量占四个存储单元四个存储单元,共需占用,共需占用1K字节的存储空间来存放字节的存储空间来存放中断向量。中断向量。PC系列微机把中断向量表存入系列微机把中断向量表存入存储器的存储器的最低端最低端1K字节,即从字节,即从00000H003FFH的存储空间的存储空间中。中。中断类型号中断类型号n4 查表,从低到高地址取连续查表,从低到高地址取连续4个字
11、节个字节 从高到底的这从高到底的这4个字节即为个字节即为CS:IP 中断号中断号名名 称称XT型向量型向量AT型向量型向量控制权控制权8日时钟中断日时钟中断0BA9:00AB0BF7:00ABDOS-STACKS9键盘中断键盘中断0BA9:01250BF7:0125DOS-STACKS0A保留保留/从片中断从片中断F000:FF23F000:EF6FROM-BIOS0B串口串口2中断中断F000:FF23F000:EF6FROM-BIOS0C串口串口1中断中断F000:FF23F000:EF6FROM-BIOS0D硬盘硬盘/并口并口2中断中断 0BA9:03B2 F000:EF6FROM-BI
12、OS0E软盘中断软盘中断0BA9:043A 0BF7:043ADOS-STACKS0F打印机打印机/并口并口1中中断断0070:075C0070:075CROM-BIOS外部硬中断外部硬中断 2.中断向量的装入中断向量的装入系统系统设置的中断服务程序,其中断向量由设置的中断服务程序,其中断向量由系统负责装入。系统负责装入。用户用户开发的中断系统,在编写中断服务程序开发的中断系统,在编写中断服务程序时,其中断向量由用户负责装入。时,其中断向量由用户负责装入。用户程序三种方式装入中断向量用户程序三种方式装入中断向量:1)使用)使用MOV指令直接装入指令直接装入 MOVAX,0 ;中断向量表的段基址
13、为;中断向量表的段基址为0000HMOVDS,AXMOVBX,60H*4 ;60H号中断向量在向量表中存放的单号中断向量在向量表中存放的单;元地址;元地址MOVAX,OFFSET INT_PROMOVBX,AX ;装入;装入INT_PRO子程序的偏移地址子程序的偏移地址MOVAX,SEG INT_PROMOVBX+2,AX ;装入;装入INT_PRO子程序的段地址子程序的段地址2)使用串存指令直接装入)使用串存指令直接装入 CLDCLD ;方向标志置方向标志置DF=0DF=0,串操作时,修改地址指针,串操作时,修改地址指针 ;增量增量MOVMOVAX,0 ;AX,0 ;中断向量表的段基址为中断
14、向量表的段基址为0000H0000HMOVMOVES,AXES,AXMOVMOVDI,60HDI,60H*4 4 ;60H60H号中断向量在向量表中存放的单元地址号中断向量在向量表中存放的单元地址MOVMOVAX,OFFSET AX,OFFSET INT_PROINT_PROSTOSW STOSW ;装入;装入INT_PROINT_PRO子程序的偏移地址子程序的偏移地址MOVMOVAX,SET AX,SET INT_PROINT_PROSTOSW ;STOSW ;装入装入INT_PROINT_PRO子程序的段地址子程序的段地址3)使用)使用DOS系统功能调用装入系统功能调用装入 INT 21H
15、的的25H/35H号功能也提供了号功能也提供了装入装入/保存中断向量的功能。保存中断向量的功能。PUSH DSMOV AX,SEG INT_PRO ;取;取INT_PRO子程序的段基址子程序的段基址MOV DS,AXMOV DX,OFFSET INT_PRO ;取;取INT_PRO子程序的偏移地址子程序的偏移地址MOV AL,60H ;中断类型号;中断类型号MOV AH,25H ;25H号号DOS功能调用功能调用 INT21HPOPDS3中断向量的修改中断向量的修改用户利用系统中断资源来开发可屏蔽中断服务程序的常用方法用户利用系统中断资源来开发可屏蔽中断服务程序的常用方法 用户编程实现把系统提
16、供的中断服务程序入口地址用户编程实现把系统提供的中断服务程序入口地址指向自己开发的中断服务程序。指向自己开发的中断服务程序。方法:用户中断服务程序的方法:用户中断服务程序的 CS:IP加入中断向量表加入中断向量表 PC采用中断控制器采用中断控制器8259A协助协助CPU完完成对外部硬件中断的管理成对外部硬件中断的管理 工作工作 具有三个主要方面的功能:具有三个主要方面的功能:1)接收外部设备的中断请求接收外部设备的中断请求 2)实现优先级排队管理实现优先级排队管理 3)提供中断类型号提供中断类型号 一、一、8259A内部结构和引脚功能内部结构和引脚功能 控 制 逻 辑数据总线缓冲器读/写控制电
17、路级联缓冲/比较器中 断服 务寄存器(ISR)优先权判 决电 路中断请求寄存器(IRR)中断屏蔽寄存器(IMR)IR0IR1IR2IR3IR4IR5IR6IR7D7D0RDWRCS0ACAS0CAS1CAS2EN/SPINTAINT图8-3 8259A的内部结构 1)数据总线缓冲器)数据总线缓冲器 2)读)读/写控制逻辑写控制逻辑 3)级联缓冲)级联缓冲/比较器比较器 4)中断控制逻辑)中断控制逻辑 5)中断请求寄存器()中断请求寄存器(IRR)6)中断服务寄存器()中断服务寄存器(ISR)7)中断屏蔽寄存器()中断屏蔽寄存器(IMR)8)优先权判决器()优先权判决器(PR)图8-6 8259
18、A引脚图D0D7 RDWRCSA0 SP/ENINT INTACAS2CAS0 IR7IR0 VCC GND 8259ACSWRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDINTAIR7INTCAS2A0VCCIR6IR5IR4IR3IR2IR1IR0EN/SP28272625242322212019171815161234567891012111413 二、二、8259A的中断管理方式的中断管理方式 1中断优先权方式中断优先权方式 1)固定优先权方式)固定优先权方式 8259A的中断管理功能很强,单片可以管理的中断管理功能很强,单片可以管理8级外部级外部中断,还可以多片级联使用
19、。具有中断优先权设置、中断,还可以多片级联使用。具有中断优先权设置、中断嵌套、中断屏蔽和中断结束等多种中断管理方式。中断嵌套、中断屏蔽和中断结束等多种中断管理方式。固定优先权方式和自动循环优先权方式固定优先权方式和自动循环优先权方式 由高到低的优先级顺序是:由高到低的优先级顺序是:IR0,IR1,IR2,IR7 2)自动循环优先权方式)自动循环优先权方式 IR0IR7的优先权级别可以改变的优先权级别可以改变 2中断嵌套方式中断嵌套方式 一般完全嵌套和特殊完全嵌套一般完全嵌套和特殊完全嵌套 1)一般完全嵌套方式)一般完全嵌套方式中断优先权管理为固定方式,中断优先权管理为固定方式,即即IR0优先权
20、最高,优先权最高,IR7优先权最低优先权最低 不利于多片级联不利于多片级联2)特殊完全嵌套方式)特殊完全嵌套方式 在在CPU中断服务期间,除了允许高级中断请求进中断服务期间,除了允许高级中断请求进入外,还允许同级中断请求进入,从而实现了对同入外,还允许同级中断请求进入,从而实现了对同级中断请求的特殊嵌套。级中断请求的特殊嵌套。用于多片级联用于多片级联8259的多片级联的多片级联CAS0CAS1CAS2INTIR0IR7IR0IR7CAS0CAS1CAS2INTEN/SPEN/SPEN/SPINT5 VINTA8259ACPUINTAINTA8259A8259ACAS0CAS1CAS2IR0IR
21、1IR2IR3IR4IR5IR6IR7主控主控8259A向向CPU申请申请从控从控8259的的INT输出端接输出端接到主控制器的到主控制器的IR输入端。输入端。如果某一从属如果某一从属8259A的的中断请求被中断请求被CPU响应,在响应,在中断响应周期里,主控中断响应周期里,主控8259A将其对应将其对应IR输入端的输入端的编码作为对从属编码作为对从属8259A进行进行识别的地址,送到识别的地址,送到CAS2 CAS0级联线上,被选中的级联线上,被选中的从属从属8259A将接收将接收INTA信信号,并把其中断向量送上号,并把其中断向量送上数据总线。数据总线。在中断服务结束时,若不是自动在中断服
22、务结束时,若不是自动EOI方式必须发出两个方式必须发出两个EOI命令,一个给从片,命令,一个给从片,一个给主片一个给主片,清除各自的清除各自的ISR位。位。3中断屏蔽方式中断屏蔽方式 普通屏蔽方式和特殊(特定)屏蔽方式普通屏蔽方式和特殊(特定)屏蔽方式 1)普通屏蔽方式)普通屏蔽方式 通过通过8259A的中断屏蔽寄存器(的中断屏蔽寄存器(IMR)来实现对中断请求来实现对中断请求IRi的屏蔽。的屏蔽。2)特殊屏蔽方式)特殊屏蔽方式(SMM)由由OCW1 设置设置实现低优先级中断请求中断正在服务的高优先级中断实现低优先级中断请求中断正在服务的高优先级中断 通过通过OCW3来设置或取消来设置或取消
23、4中断结束方式中断结束方式 CPU为某个中断请求服务,中断对应的为某个中断请求服务,中断对应的ISR中的中的Di位被置位被置1,使比它优先级低的中断请求,使比它优先级低的中断请求无法得到响应。中断结束时,应及时清除中无法得到响应。中断结束时,应及时清除中断服务标志位。断服务标志位。三种中断结束方式三种中断结束方式 1)自动结束方式)自动结束方式 在中断响应过程中由硬件自动完成在中断响应过程中由硬件自动完成ISR中为中为“1”位位的清除的清除,所以这不是中断服务子程序的真正结束所以这不是中断服务子程序的真正结束。只适合用在没有中断嵌套的场合只适合用在没有中断嵌套的场合 2)普通结束方式)普通结束
24、方式 在中断服务子程序中编程写入操作命令字在中断服务子程序中编程写入操作命令字OCW2,向向8259A传送一个普通传送一个普通EOI命令(不指定被复位的命令(不指定被复位的中断的级号)来清除中断的级号)来清除ISR中当前优先级别中当前优先级别最高位最高位。适合用在一般完全嵌套方式下的中断结束。因为适合用在一般完全嵌套方式下的中断结束。因为在完全嵌套方式下,中断优先级是固定的在完全嵌套方式下,中断优先级是固定的。常常 用用3)特殊(特定)结束方式)特殊(特定)结束方式 发特殊发特殊EOI命令明确指出了复位命令明确指出了复位ISR中的哪一位中的哪一位 适用于优先级发生改变的情况,嵌套结构在中适用于
25、优先级发生改变的情况,嵌套结构在中断响应后发生了变化。断响应后发生了变化。常常 用用5中断触发方式中断触发方式 中断请求信号:电平触发和边沿触发中断请求信号:电平触发和边沿触发 由初始化命令字由初始化命令字ICW1中的中的LTIM位来设定位来设定 IRi端有高电平时产生中断。要求触发电平必须保持到中断响应信号端有高电平时产生中断。要求触发电平必须保持到中断响应信号有效为止,并且在有效为止,并且在CPU响应中断后,应及时撤销该请求信号,响应中断后,应及时撤销该请求信号,以防止以防止CPU再次响应。再次响应。INTA6总线连接方式总线连接方式 缓冲方式和非缓冲方式两种缓冲方式和非缓冲方式两种 1)
26、缓冲方式)缓冲方式 8259A通过通过总线驱动器总线驱动器和系统数据总线连接和系统数据总线连接 2)非缓冲方式)非缓冲方式 8259A数据线与系统数据总线直接相连数据线与系统数据总线直接相连 SP/EN作为总线驱动器的启动信号输出中断类型号作为总线驱动器的启动信号输出中断类型号 7查询中断方式查询中断方式 8259A也可以用查询方式来检查请求中断的设备。当也可以用查询方式来检查请求中断的设备。当CPU关中断时,中断输入信号将不起作用,那么对设备的关中断时,中断输入信号将不起作用,那么对设备的服务就可通过软件查询来实现。服务就可通过软件查询来实现。查询中断的命令是通过查询中断的命令是通过OCW3
27、中中P=1发出的,发出的,8259A接接到查询命令后,把随后的一次到查询命令后,把随后的一次CPU读操作当作中断响应信读操作当作中断响应信号,如果有中断请求,就把号,如果有中断请求,就把ISR相应的位置位,并读出查相应的位置位,并读出查询字,从而判断该中断级别,并编程实现中断服务程序的询字,从而判断该中断级别,并编程实现中断服务程序的转移。转移。三、三、8259A的命令字的命令字 初始化命令字初始化命令字ICW1ICW4 操作命令字操作命令字OCW1OCW3 1初始化命令字初始化命令字 1)ICW1 D7D6D5D4D3D2D1D08086/8088系统未用特征位特征位=1LTIM中断的触发中
28、断的触发方式方式1=电平触发电平触发0=边沿触发边沿触发ADI8086/8088系系统未用统未用SNGL是否是级联是否是级联1=单片使用单片使用0=级联使用级联使用是否写是否写ICW41=写写ICW40=不写不写ICW4ICW1=00011011B=1BH例如:8259A采用电平触发,单片使用,需要ICW4决定:触发方式,几片使用,是否需要ICW4 2)ICW2 用于设置中断类型号 D7D6D5D4D3D2D1D0中断类型号的高5位无效D0D2:由:由8259A根据当前被响应的中断源所连接的根据当前被响应的中断源所连接的IR端,端,自动获得编码自动获得编码。在初始化时设置为在初始化时设置为0
29、例如,在例如,在PC机的中断系统中,硬件中断类型号高机的中断系统中,硬件中断类型号高5位是位是00001B 中断源类型中断类型号高5位低3位中断号日时钟08HIR0(0)08H键盘08HIR1(1)09H保留08HIR2(2)0AH串行口208HIR3(3)0BH串行口108HIR4(4)0CH硬盘08HIR5(5)0DH软盘08HIR6(6)0EH打印机08HIR7(7)0FHPC/XT 8级中断源的中断号级中断源的中断号 3)ICW3 与级联方式有关,级联下需要写入与级联方式有关,级联下需要写入 对于主片对于主片 D7D6D5D4D3D2D1D0IR7IR6IR5IR4IR3IR2IR1I
30、R0若主片若主片IRi引脚上连接从片,则引脚上连接从片,则Di1,否则,否则Di0。例如,当主片例如,当主片IR7和和IR0引脚上接有从片,引脚上接有从片,则主片的则主片的ICW3=10000001B=81H。对于从片对于从片 D7D6D5D4D3D2D1D000000ID2ID1ID0ID2ID0是从片接到主片是从片接到主片IRi(i07)上的标识码)上的标识码 在中断响应时,主片通过级联信号线在中断响应时,主片通过级联信号线CAS2 CAS0送出送出被允许中断的从片的标识码,各从片用自己的被允许中断的从片的标识码,各从片用自己的ICW3和和CAS2 CAS0进行比较,二者一致的从片被确定为
31、当前进行比较,二者一致的从片被确定为当前中断源,可以发送该从片的中断类型码。中断源,可以发送该从片的中断类型码。例如:从片例如:从片A和和B的中断请求的中断请求INT分别连到主片的分别连到主片的IR5和和IR3上,上,则从片则从片A的的ICW3=05H,从片,从片B的的ICW3=03H。4)ICW4 D7D6D5D4D3D2D1D0000SFNMBUFM/SAEOIPM用于设定用于设定8259A的工作方式的工作方式 D0:指定:指定CPU类型类型 1=8259A工作在工作在8086/8088系统中系统中0=8259A工作在工作在8080/8085系统中系统中 D1:指定:指定8259A的中断结
32、束方式的中断结束方式 1=自动结束方式自动结束方式0=非自动结束方式非自动结束方式 D2:缓冲级联方式下的主片与从片:缓冲级联方式下的主片与从片 1=主片;主片;0=从片从片 D3:设置缓冲方式:设置缓冲方式 1=缓冲方式;缓冲方式;0=非缓冲方式非缓冲方式 D4:设置特殊完全嵌套方式:设置特殊完全嵌套方式 1=特殊完全嵌套方式特殊完全嵌套方式0=普通完全嵌套方式普通完全嵌套方式 例如:例如:PC机中机中CPU为为8088,若,若8259A与系统总线之与系统总线之间采用缓冲器连接,非自动结束方式,采用一般完间采用缓冲器连接,非自动结束方式,采用一般完全嵌套方式,只用全嵌套方式,只用1片片825
33、9A。则其则其ICW4=00001101B=0DH 8259A的初始化流程图:8259A的初始化编程需要写入初始化命令字ICW1ICW4。由于由于8259A只有一根地址线,只有一根地址线,因此对各个控制字的操作是因此对各个控制字的操作是按照一定的顺序并结合某些按照一定的顺序并结合某些数据位来进行寻址设置。数据位来进行寻址设置。ICW1用A00的端口,ICW2ICW4使用A01的端口 2操作命令字操作命令字OCW8259初始化后进入工作状态,用户可以根据初始化后进入工作状态,用户可以根据程序需要对程序需要对8259发出相应的操作命令字发出相应的操作命令字OCW。OCW1写入奇地址(写入奇地址(A
34、0=1),),OCW2和和OCW3写入偶地址写入偶地址(A0=0)。操作命令字有操作命令字有3个:个:OCW1OCW3,控制,控制8259A的的方式操作。这方式操作。这3个控制字分别有各自独立的功能。个控制字分别有各自独立的功能。1)OCW1 设置中断屏蔽字(设置中断屏蔽字(IMR)D7D6D5D4D3D2D1D0M7M6M5M4M3M2M1M0Mi=1,则对应的,则对应的IRi请求被禁止;请求被禁止;Mi=0,则对应的,则对应的IRi请求被允许。请求被允许。在工作期间可根据需要随时写入或读出在工作期间可根据需要随时写入或读出 例如例如:使中断源使中断源IR3和和IR6开放,其余均被屏蔽。开放
35、,其余均被屏蔽。MOVAL,0B7H;OCW1内容(内容(10110111B)OUT21H,AL ;写入;写入IMRIMR寄存器内容的读出:寄存器内容的读出:INAL,21H ;读;读IMRANDAL,80H ;设置;设置D7=1(屏蔽)(屏蔽)OUT21H,AL ;写回;写回OCW1口口2)OCW2 设置中断优先级方式和中断结束方式设置中断优先级方式和中断结束方式 D7D6D5D4D3D2D1D0RSLEOI00L2L1L0D0D2:指定中断类型码的低指定中断类型码的低3位。(循环位。(循环/结束)结束)D3、D4:OCW2特征标志位特征标志位。D5:EOI中断结束命令。1=指定中断结束 0
36、=自动结束方式自动结束方式 D6:操作目标选择位,或称特定目标位。用来决定L2L0是否有效。D7:设置优先权循环方式位。设置优先权循环方式位。1=优先权自动循环方式;优先权自动循环方式;0=优先权固定方式。优先权固定方式。D7D6D5功功 能能000自动中断结束方式下,设置为全嵌套优先级自动中断结束方式下,设置为全嵌套优先级001在全嵌套方式下,设置为普通中断结束方式时的中断结束在全嵌套方式下,设置为普通中断结束方式时的中断结束*010无意义无意义011在全嵌套方式下,设置特殊中断结束方式时的中断结束位在全嵌套方式下,设置特殊中断结束方式时的中断结束位(L2L0)*100在自动中断结束方式下,
37、设置为自动优先级循环在自动中断结束方式下,设置为自动优先级循环101在优先级自动循环方式下,设置为普通中断结束方式时的中断在优先级自动循环方式下,设置为普通中断结束方式时的中断结束结束110在优先级特殊循环方式下,设置起始最低优先级位(在优先级特殊循环方式下,设置起始最低优先级位(L2L0)111在优先级特殊循环方式下,设置中断结束位(在优先级特殊循环方式下,设置中断结束位(L2L0)D7D5(R,SL,EOI)3位的组合功能 OCW2的功能总结:的功能总结:一是决定一是决定8259A是否采用优先循环方式是否采用优先循环方式 一个是中断结束方式一个是中断结束方式 例如:例如:MOV AL,11
38、100100BOUT 20H,AL对对IR4中断源发出特殊中断结束命令,中断源发出特殊中断结束命令,并且设置以并且设置以IR4为最低的中断优先级特殊循环优先级方式为最低的中断优先级特殊循环优先级方式。又如:又如:MOV AL,20HOUT 20H,AL*不指定的中断结束方式不指定的中断结束方式 3)OCW3 特殊屏蔽方式、查询中断和读取寄存器的状态特殊屏蔽方式、查询中断和读取寄存器的状态 D7D6D5D4D3D2D1D00ESMMSMM01PRRRISD0:读寄存器选择位。:读寄存器选择位。0=读取读取IRR;1=读取读取ISR。先写入读命令先写入读命令OCW3,读取地址都是,读取地址都是20
39、H。D1:读寄存器允许位。(:读寄存器允许位。(=1有效,有效,D0决定读对象)决定读对象)D2:中断查询方式位。:中断查询方式位。1=8259A为中断查询方式。为中断查询方式。D4D3:标志位,为:标志位,为01。D6D5:11/10=设置或取消特殊屏蔽方式(设置或取消特殊屏蔽方式(SMM方式)。方式)。查询中断方式:查询中断方式:发发OCW3中的中的D2位为位为1的命令的命令 读取查询字判断中断是否发生,以及哪级中断发生。读取查询字判断中断是否发生,以及哪级中断发生。查询字从偶地址端口读入,格式如下:查询字从偶地址端口读入,格式如下:D7D6D5D4D3D2D1D0IW2W1W0D7=1,
40、表示,表示8259A有中断请求有中断请求 W2W0:当前优先级最高的中断请求码:当前优先级最高的中断请求码 MOVAL,00001100BOUT20H,AL;发;发OCW3的查询中断命令字的查询中断命令字IN AL,20H ;读取查询字读取查询字MOV AH,ALXOR AL,87H ;判断是否为;判断是否为IR7JZ NUM7MOV AL,AHXOR AL,86H ;判断是否为;判断是否为IR6JZ NUM6.NUM7:.NUM6:.如:如:在中断服务子程序在中断服务子程序中用中断屏蔽命令中用中断屏蔽命令OCW3(D6D5=11设设置,置,10复位)来屏蔽复位)来屏蔽当前正在处理的中断,当前
41、正在处理的中断,同时可使同时可使ISR中的对中的对应当前中断的相应位应当前中断的相应位清清0,导致允许低级,导致允许低级中断的响应。中断的响应。特殊屏蔽方式(特殊屏蔽方式(SMM方式):方式):*可自行尝试编写出相关程序段。可自行尝试编写出相关程序段。端口地址及操作总结:端口地址及操作总结:初始化命令字初始化命令字ICWICW1ICW2ICW3ICW4地址地址A00111特征位特征位D4=1操作命令字操作命令字OCWOCW1OCW2OCW3地址地址A0100特征位特征位D4D3=00D4D3=01寄存器的读寄存器的读IMRISRIRR中断查询字中断查询字操作命令操作命令OCW1OCW3-D1D
42、0=11OCW3-D1D0=10OCW3-D2地址地址A01000例例 8-1 设设CPU为为8088,使用,使用一片一片8259A,中断申请信号采,中断申请信号采用电平触发,中断类型号为用电平触发,中断类型号为60H-67H采用特殊嵌套,采用特殊嵌套,非缓冲方式,中断自动结束方式,非缓冲方式,中断自动结束方式,8259A的端口地址的端口地址为为80H和和81H,试编写,试编写初始化程序初始化程序。MOVAL,1BHOUT 80H,ALMOV AL,60HOUT 81H,ALMOVAL,13HOUT 81H,AL例例8-2 某微机系统使用主、从某微机系统使用主、从两片两片8259A管理中断,从
43、管理中断,从片中断请求片中断请求INT与主片的与主片的IR2连接。设主片工作于特连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型殊完全嵌套、非缓冲和非自动结束方式,中断类型号为号为40H,端口地址为,端口地址为20H和和21H。从片工作于完全。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为,端口地址为80H和和81H。试编写主片和从片的。试编写主片和从片的初始化程序初始化程序。主片主片8259A的初始化程序:的初始化程序:MOVAL,00010001B;级联级联,边沿触发边沿触发,需要写需要写ICW4OUT2
44、0H,AL;写写ICW1MOV AL,01000000B ;中断类型号中断类型号40HOUT21H,AL;写写ICW2MOV AL,00000100B ;主片的主片的IR2引脚接从片引脚接从片OUT21H,AL;写写ICW3MOVAL,00010001B;特殊完全嵌套、非缓冲、自动结束特殊完全嵌套、非缓冲、自动结束OUT21H,AL ;写写ICW4从片从片8259A初始化程序:初始化程序:MOVAL,00010001B;级联级联,边沿触发边沿触发,需要写需要写ICW4OUT80H,AL;写写ICW1MOVAL,01110000B;中断类型号中断类型号70HOUT81H,AL ;写写ICW2MO
45、VAL,00000010B;接主片的接主片的IR2引脚引脚OUT81H,AL;写写ICW3MOVAL,00000001B ;完全嵌套、非缓冲、非自动结束完全嵌套、非缓冲、非自动结束OUT81H,AL ;写写ICW4例例8-3 某系统正在为某系统正在为IR2服务,在服务过程中,希望允许服务,在服务过程中,希望允许优先级比较低的中断得到响应。该系统中优先级比较低的中断得到响应。该系统中8259A的端的端口地址为口地址为0A20H,0A21H。试编制控制程序段。试编制控制程序段。分析:分析:这属于这属于SMM编程。先用编程。先用OCW1屏蔽屏蔽IR2,再用,再用OCW3设置设置8259A的特殊屏蔽方
46、式。的特殊屏蔽方式。程序如下:程序如下:CLIMOV AL,04HMOV DX,0A21HOUTDX,AL ;写;写OCW1,置屏蔽,置屏蔽IR2MOV AL,68HMOV DX,0A20HOUTDX,AL ;写;写OCW3,置,置SMMSTI ;响应低优先级中断;响应低优先级中断CLIMOV AL,48HMOV DX,0A20HOUTDX,AL ;写;写OCW3,清除,清除SMMMOV AL,00HMOV DX,0A21HOUTDX,AL ;写;写OCW1,清除,清除IR2屏蔽屏蔽STI例例 8-4 PC/AT机中机中8259A初始化设置初始化设置 PC机开机后固化在机开机后固化在BIOS中
47、的系统初始化程中的系统初始化程序对主序对主8259A和从和从8259A进行初始化设置进行初始化设置。主主8259A口地址为口地址为20H和和21H,从从8259A口地址为口地址为0A0H和和0A1H。系统连接:系统连接:初始化程序:初始化程序:主主8259A初始化程序:初始化程序:MOV AL,11H ;ICW1=00010001B,边沿触发,边沿触发OUT20H,AL ;ICW4,级联方式,级联方式JMPINTR1 ;少许延时;少许延时INTR1:MOV AL,08H ;ICW2,中断类型号起始值为,中断类型号起始值为08HOUT21H,AL JMPINTR2INTR2:MOV AL,04H
48、OUT21H,AL ;ICW3,从,从8259A与与IR2脚级联脚级联JMPINTR3INTR3:MOV AL,15H ;ICW4,特殊全嵌套、非缓冲、,特殊全嵌套、非缓冲、OUT21H,AL ;中断结束方式;中断结束方式从从8259A的初始化程序:的初始化程序:MOV AL,11H ;ICW1=00010001B,边沿触发,边沿触发OUT 0A0H,AL ;ICW4,级联方式,级联方式JMPINTR5 ;少许延时;少许延时INTR5:MOV AL,70H ;ICW2=01110000B,类型号,类型号70HOUT0A1H,ALJMPINTR6INTR6:MOV AL,02H ;ICW3,从,
49、从8259A与与IR2脚级联脚级联OUT0A1H,ALJMPINTR7INTR7:MOV AL,01H ;ICW4=00010101B,特殊全嵌,特殊全嵌 ;套、非缓冲、中断结束方式;套、非缓冲、中断结束方式 OUT0A1H,AL 例例8-5 设计一个中断处理程序。要求中断请求信号以跳变设计一个中断处理程序。要求中断请求信号以跳变方式由方式由IR2引入(可为任一定时脉冲信号),当引入(可为任一定时脉冲信号),当CPU响响应应IR2请求时,输出字符串请求时,输出字符串“8259A INTERRUPT!”,中断中断10次,程序退出(设次,程序退出(设8259A的端口地址为的端口地址为20H和和21
50、H,中断类型号为,中断类型号为40H)。)。中断处理程序如下:中断处理程序如下:DATASEGMENT MESSDB 8259A?INTERRUPT!,0AH,0DH,$COUNTDB 10;计数值为计数值为10DATAENDSSTACK SEGMENTSTACK STA DB100H DUP(?)TOP EQULENGTHSTASTACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKMAIN:CLIMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV AL,13H ;8259A初始化初始