第八章 中断控制器8259.讲义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八章中断控制技术和8259
第一节中断控制技术补充
一中断处理的隐操作及堆栈的使用
⒈隐操作
CPU响应中断转去执行中断服务程序之前,其状态标志和程序断点地址进栈,以及中断返回时,断点和标志信息的退栈,是由机器硬件安排自动完成的,无需外界干预,故称为中断处理的隐操作,这些操作都使用堆栈。

⒉堆栈
堆栈是一种专用的"后进先出"(LIFO)的存储区,用来保存断点、现场信息及传递子程序所需的参数,广泛用于中断处理、子程序调用及返回处理。

8088/8086的堆栈设置在存储器中,由SS堆栈段寄存器和SP堆栈指针来定位。

SS指向当前栈的段基址,是栈区的最低地址。

SP包含距段基址的偏移地址,也称为堆栈的深度,一个栈最大的深度只能占有64KB空间。

SP作为堆栈指针始终指向栈顶(TOS),栈顶在程序执行过程中,随着进栈(PUSH)与退栈(POP)操作而发生变化,有所谓向下生长和向上生长之分。

8088/8086的堆栈是向下生长型,即在进栈操作时,栈顶向下生长,使堆栈的地址单元号从大到小,递减2,趋向堆栈段基址SS;在退栈操作时,堆栈地址单元号从小到大,递增2,趋向栈底,空栈时,SP指向堆栈段的最高地址,即栈底。

栈底也就是SP的初值,栈底一经设定就固定不变。

⒊堆栈操作
①建栈操作
STACK1 SEGMENT STACK
BUFFER DB 30 DUP(0)
TOP_STACK LABEL WORD
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK1
START:

MOV AX,STACK1
MOV SS,AX ;将当前堆栈段基址送入SS
MOV SP,TOP_STACK ;将堆栈段偏移地址送入SP

②进栈操作
PUSH AX
PUSH BX
③弹栈操作
POP AX
POP BX
二中断向量的装入
中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。

BIOS程序负责0~1FH共32个中断向量的装入。

用户若想使用硬、软中断,则要将中断服务程序入口地址装入中断向量指针所指定的中断向量表中。

下面举例说明填写中断向量表所用的三种方式:
⒈用MOV指令填写中断向量表。

例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR(006DH)。

则填写中断向量表的程序段为:

CLI
CLD
MOV AX,0
MOV ES,AX
MOV DI,4*60H ;中断向量指针→DI
MOV AX,OFFSET_INTR ;中断服务程序偏移值→AX
STOSW ;AX→[DI][DI+1]中,然后DI+2
MOV AX, SEG_INTR ;中断服务程序的段基址→AX
STOSW ;AX→[DI+2][DI+3]
STI


⒉将中断服务程序的入口地址直接写入中断向量表,其程序段为:


MOV AX,00H
MOV ES,AX
MOV BX,60H*4 ;中断号*4→BX
MOV AX,006DH ;中断服务程序偏移地址
MOV ES:[BX],AX ;装入偏移地址
PUSH CS
POP AX ;中断服务程序段基址
MOV ES:[BX+2],AX ;装入段基址


⒊采用DOS功能调用"INT 21H"中的AH=25H来装入中断向量,其程序段为:
MOV AL,N ;中断号
MOV AH,25H ;设置中断向量
MOV DX,SEG_INTR
MOV DS, DX ;DS指向中断程序段址
MOV DX, OFFET_INTR ;DX指向中断程序偏移量
INT 21H


三编写中断服务程序
⏹编写内部中断服务程序与编写子程序类似
⏹利用过程定义伪指令PROC/ENDP
⏹第1条指令通常为开中断指令STI
⏹最后用中断返回指令IRET
⏹通常采用寄存器传递参数
⏹主程序需要调用中断服务程序
⏹调用前,需要设置中断向量
⏹利用INT n指令调用中断服务程序
⏹编写80H号中断服务程序
⏹功能:显示以“0”结尾字符串的功能
⏹利用显示器功能调用INT 10H
⏹字符串缓冲区首地址为入口参数
⏹DS:DX(段地址:偏移地址)传递参数
code segment
assume cs:code,ds,code
intoff dw ?
intseg dw ?
intmsg db ‘A Instruction Interrupt !’
db 0dh,0ah,0
start: mov ax,code
mov ds,ax
mov ax,3580h
int 21h
mov intoff,bx ;保存偏移地址
mov intseg,es ;保存段基地址
push ds
mov dx,offset new80h
mov ax,seg new80h
mov ds,ax
mov ax,2580h
int 21h
pop ds
mov dx,offset intmsg
int 80h
new80h proc
sti ;开中断
push ax ;保护寄存器
push bx
push si
mov si,dx
new1: mov al,[si]
cmp al,0
jz new2
mov bx,0
mov ah,0eh
int 10h
inc si
jmp new1
new2: pop si ;恢复寄存器
pop bx
pop ax
iret ;中断返回
new80h endp
mov dx,intoff
mov ax,intseg
mov ds,ax
mov ax,2580h
int 21h
mov ax,4c00h
int 21h
code ends
end start
第二节中断控制器8259A
一 8259A简介
⒈概述
Intel 8259A是可编程中断控制器PIC,可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断。

⒉ 8259A的基本功能
①优先级排队管理:根据任务的轻重缓急或
设备的特殊要求,分配中断源的中断等级。

8259A
具有全嵌套、循环优先级、特定屏蔽多种方式的
优先级排队管理。

②接受外部设备的中断请求:经过优先权判
决找到哪一个中断源的中断请求级别最高,然后
再向CPU提出中断申请INT;或者拒绝外设的中
断请求,予以屏蔽。

一片8259A可以接受8个中
断请求,经过级联可扩展至8片8259A,实现64
级中断。

③提供中断类型号:为CPU实现程序的转移
给出中断服务程序入口地址指针。

8259A最突出
的特点是具有对中断服务程序入口地址的寻址能
力,也就是当CPU响应中断申请时,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。

二 8259A的外部特性和内部结构
⒈外部特性
8259A为28脚双列直插式芯片。

外部引脚如上图所示。

各引脚的功能如下表所示。

8259A引脚定义及功能表
⒉内部结构
①中断请求寄存器IRR
8位,每一位对应一个I/O设备,用来记录发生中断请求的外设。

当某一外设(I/O设备)发出中断请求信号IRQ时,对应位被置“1”。

简言之:用来存放要请求服务的所有中断请求信号。

②中断服务寄存器ISR
8位,用来存放正在被服务,包括尚未服务完毕而中途被别的中断打断了的所有中断级。

③优先权判决电路PR
用来识别各中断请求信号的优先级别。

当多个中断请求信号同时产生时,由判优电路判定哪一个中断请求具有最高优先权,若有中断正在被服务,则还需与ISR的当前中断服务优先级相比较,以决定是否将8259A的中断申请线INT上升为高电平。

④中断屏蔽寄存器IMR
IMR对IRR起屏蔽作用,即对中断请求IR是禁止还是允许。

寄存器8位(D0~D7)对应8级中断屏蔽。

哪一级中断被屏蔽,哪位就写1,即禁止IR 提出中断请求;反之,就写0,不屏蔽,即允许IR提出中断请求。

屏蔽操作由屏蔽命令OCW1执行。

IMR可很方便地读和写。

⑤控制逻辑
用于向8259A内部其它部件发控制信号,外部向CPU发INT信号,接收CPU
发来的INT A信号,控制8259A进入中断服务状态。

控制逻辑是8259A全部功能的核心,包括一组方式控制字寄存器和一组操作命令字寄存器,以及相关的控制电路。

⑥数据总线缓冲器
8位双向三态缓冲器,是8259A与CPU之间数据接口。

当CPU对8259A进行读操作时,数据总线缓冲器用来传输从8259A内部读至CPU的数据/状态信息和中断类型码,写操作时由CPU向8259A内部写入控制命令字。

⑦读/写控制逻辑
用于控制对8259A的读、写操作。

控制信号有:RD、WR、CS、A0共同控制,完成规定的操作。

8259A芯片内可写的寄存器有:各种命令寄存器,可读的寄存器有:IRR、ISR、IMR等状态寄存器。

具体参考下表。

⑧级连缓冲器
多片8259A可级连使用,最多可以组成64级中断优先级控制,此时一片8259A作主片,另外1~8片作从片,主从片的CAS0~CAS2并接在一起,作为
级连总线。

在中断响应过程中,主片的CAS0~CAS2为输出线,从片的CAS0~CAS2为输入线。

在第一个INT A负脉冲结束时,主片把被响应的中断请求的从片编码送入CAS0~CAS2级连总线。

从片接收后,将主片送来的编码与自己的编码相比较,若相同,表明从片被选中,则在第二个中断响应总线周期把中断类型码送至D7~D0,供CPU读取。

⒊中断优先级分析器(参考下图)
首先,由8个“与门”逻辑选出参加中断优先级排队的中断请求级,即8位IRR与8位IMR各位分别送入“与门”输入端,只有当IRR位置“1”(有中断请求)和:IMR位置“0”(开放中断请求)同时成立时,相应“与门”输入位有效。

其次,优先级编码器从参加排队的那些中断优先级中选出当前最高优先级,作为下一步比较的一个输入(A2A1A0)
最后,把来自ISR的当前正在服务的优先级(B2B1B0)与当前请求的最高优先级(A2A1A0)一起送入比较器进行比较,当比较器A>B端输出有效时,并且只要当前存在非屏蔽的中断请求,“或门”输出有效时,8259A即向CPU 提出中断请求INT。

三 8259A的中断响应过程
⒈中断响应周期
⒉中断响应过程
①当中断请求线(IR0~IR7)上有一条或若干条变为高电平,则使IRR 相应的位置1;
②当IRR的某一位或若干位被置1后,若IMR中相应的位为1,则屏蔽该中断请求,若IMR中相应位为0,则中断请求送PR;
③ PR把接到的中断请求的最高优先级与ISR正中在服务的中断级比较,若前者级别高于后者,或CPU不在服务中,则置INT为高电平,否则INT低电平;
④ CPU采样到INT为高后,响应中断进入连续的两个可屏蔽中断响应周期;
⑤ 8259A接到第一个INT A负脉冲后,将对应的ISR位置位,而相应的IRR被复位;
⑥ 8259A接到第二个INT A负脉冲后(第二个中断响应周期),在该脉冲期间,8259A向CPU发出中断类型码。

⑦若8259A处于AEOI(自动中断结束)方式,则第二个INT A负脉冲结束时,相应的ISR位被复位。

否则(工作在非自动中断结束方式)要等到CPU 向8259A送内含中断结束(EOI)命令的OCW2后,相应的ISR位才被复位。

至此,CPU根据中断类型码,从中断矢量表中获取对应的中断服务程序入口地址进入中断服务。

第一个负脉冲到达时,8259A完成以下3个动作:
①使IRR的锁存功能失效。

这样,在IR7~IR0线上的中断请求信号就不予接收,直到第二个负脉冲到达时,才又使IRR的锁存功能有效。

②使当前中断服务寄存器ISR中的相应位置1,以便为中断优先级裁决器以后的工作提供判断依据。

③使IRR寄存器中相应位(即刚才设置的位)清0.
第二个负脉冲到达时,8259A完成下列动作:
①将中断类型寄存器中的内容ICW2送到数据总线的D7~D0,CPU将此作为中断类型码。

②如果ICW4(方式控制字)中的中断自动结束位为1,那么,在第二个INT A结束时,8259A会将第一个INT A脉冲到来时设置的当前中断服务寄存器ISR的相应位清0。

注意:在自动结束中断方式下,当前ISR
的置1位由第2个INT A脉冲后沿清除。

而在
非自动结束中断方式下,ISR的置1位一直保
持直到中断服务程序结束时,由CPU向 8259A
发出结束命令为止。

也就是说,对非自动中断
结束方式,在中断服务程序中,中断返回之前,
要由CPU向8259A发一个中断结束命令,以清
除ISR中被置“1”的位。

四 8259A的级联连接
⏹一个系统中,8259A可以级连,有一个
主8259A,若干个(最多8个)从8259A
⏹级连时,主8259A的三条级连线CAS0~
CAS2作为输出线,连至每个从8259A
的CAS0~CAS2
⏹每个从8259A的中断请求信号INT,连
至主8259A的一个中断请求输入端IR
⏹主8259A的INT线连至CPU的中断请求输入端
⏹SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP
=0)
五 8259A的初始化命令字和操作命令字
㈠初始化命令字
⏹初始化命令字ICW最多有4个
⏹8259A在开始工作前必须写入
⏹必须按照ICW1~ICW4顺序写入
⏹ICW1和ICW2是必须送的
⏹ICW3和ICW4由工作方式决定
⏹ICW1必须写入偶地址端口,其余必须写入奇地址端口。

⏹偶地址较低,奇地址较高
⒈芯片控制初始化命令字(ICW1)
触发方式,通过写ICW1的D3位来选择,ICW1的格式如下:
其中:D4位为ICW1的特征位,必须为“1”。

D3位决定电平触发方式(LTIM):D3=1,为电平触发;D3=0,为边沿触发。

D1位决定单片使用(SNGL):D1=1,为单片使用;D1=0,为多片级联方式。

D0位决定是否需要初始命令字ICW4配合,(对8088/8086一般都需使用ICW4),D0=1,需要ICW4;D0=0,不需要ICW4。

其他位只对8位微机(8085)有效,故写0。

例如,若8259A采用电平触发,单片使用,需要ICW4,则程序段为:
MOV AL,1BH ;ICW1的内容
OUT 20H,AL ;写入ICW1端口(A0=0)
注意:这里的例子是8088的例子。

⒉中断类型号的设定(ICW2)
8259A提供给CPU的中断类型号是一个8位代码,是通过初始化命令ICW2提供的。

只有高5位是在初始化编程时,通过命令字ICW2写入的,它的低3位是由中断请求线IRi的二进制编码(如IR4的编码为100)决定,并且是在
第一个INT A到来时,将这个编码写入低3位的。

ICW2的格式如下:
例如,在PC系列中断系统中,硬盘中断类型号的高5位是08H,它的中断请求线连到 8259A的IR5上,在向ICW2写入中断类型号时,只写中断类型号的高5位(08H),低3位可以取0:
MOV AL,08H ;ICW2的内容(中断类型号高5位)
OUT 21H,AL ;写入ICW2的端口(A。

=1)当CPU响应硬盘中断请求时,8259A把IR5的编码101作为低3位构成一个完整的8位中断类型号0DH,经数据总线发送给CPU。

可见,外部硬中断中断源的中断号(8位代码)是由两部分构成的,即高5位(ICW2)+低3位(IRi的编码)。

注意:这里的例子是8088的例子。

⒊级联方式的设定(ICW3主片/从片的初始化命令)
若主控输入端IRi上联接从控,则Si=1;否则,Si =0。

例如,假设主控的IR3和IR6的两个输入端分别联接了从控A与B。

故:主控ICW3的值=01001000B=48H
MOV AL,48H ;ICW3(主)内容
OUT 21H,AL ;写入ICW3端口(A0=1)
3位从控标志码可有8种编码,表示从控的中断请求线INT被连到主控的哪一个输入端IRi。

例如,假设从控A和B的请求线INT分别联到主控的IR3和IR6,故:从控A的ICW3的内容=00000011B=03H
从控B的ICW3的内容=00000110B=06H
MOV AL,03H ;ICW3(从片A)内容
OUT 21H,AL ;写入ICW3(从片A)端口(A0=1)
说明:级联方式下从控制器中断申请及响应的过程
假定一个从控的IR输入端已接收到一个中断申请,并假设这个申请比起其他申请和比起这个从控内正在服务中的等级来具有最高级的优先权,那么这个从控的INT脚变为高电平,向主控制器提出中断申请。

主控接到这个申请后,要进行判优,如果这个申请与其他的申请及服务中的等级(可能来自其他从控制器)相比是最高优先等级,则主控制器的INT脚变为高电平,向CPU提出中断请求。

在CPU看来,级联的“中断响应序列”和不是级联的“中断响应序列”是一样的,然而对于8259A是不同的。

第一个INT A脉冲使所有的8259A得到通
知:中断申请已被允许。

与此同时,作为主控制器的8259A在CAS0~2总线上放上申请被响应的从控制器的ID码,通知让它在下一个中断响应序列INT A
时,送出中断类型号到数据总线上,这样就完成了中断响应。

在中断响应时,主控器和从控器分别将对应的ISR位置位。

这也就意味着在中断完成后必须发出两个EOI命令(若不是自动EOI方式),一个给主控器,一个给从控器。

D4:D4=1,特殊完全嵌套方式,一般作为级联时主片的方式,工作在该
方式时与工作在一般完全嵌套方式仅一点不同:在中断处理过程中,对优先级相等的同级中断也给予响应,能实现同级中断嵌套;
D4=0,一般完全嵌套方式,一般作为级联时从片的方式,或单片使用时的方式;
D3:D3=1,缓冲方式,是指8259A和DB之间需加一缓冲器(提高DB带
负载能力),此时/ 作为输出线,用以锁存或开启缓冲器;
D3=0,非缓冲方式,/ 作为主从片选择。

D2:D2=1,在D3=1时(缓冲方式),主片;
D2=0,在D3=1时(缓冲方式),从片。

在D3=0时,D2无意义。

D1:D1=1,自动中断结束方式(AEOI);
D1=0:非自动中断结束方式。

D0:D0=1,8259A用于80X86CPU系统;
D0=0,8259A用于非80X86CPU系统。

㈡操作命令字
8259A有3个操作命令字,即OCW1~OCW3。

操作命令字是在应用程序内部设置的。

设置时,次序上没有严格的要求,但是,对端口地址有严格规定,即OCW1必须写入奇地址端口,OCW2和OCW3必须写入偶地址端口。

⒈中断屏蔽操作命令字(OCW1)
①正常屏蔽方式
8259A的IMR中断屏蔽寄存器,可以屏蔽一个或几个IR的中断请求,它加强了对中断的控制能力,此时本级中断优先级在ISR 中的登录位ISi尚未清除,即使本级中断的IRi被屏蔽,优先权比它低的中断仍然得不到响应。

一个中断源提出中断申请时,虽然它被屏蔽(即相应的M位置1),但它的中断不一定被忽略,因此当它的屏蔽位复位时,并且,若它的IRR位未撤消,则会产生中断。

若在IMR复位之前撤掉IR申请,则中断就不会产生响应。

OCW1的格式如下
例如,要使中断源IR3开放,其余均被屏蔽,则OCW=11110111B
MOV AL,OF7H ;OCW1内容
OUT 21H,AL ;OCW1端口(A0=1)
IMR寄存器的内容,还可以读出,如BIOS中有一段检查中断屏蔽寄存器的程序:
MOV AL, 00H ;置IMR为全"0"
OUT 21H,AL ;OCW1口地址
IN AL,21H ;读IMR
OR AL,AL ;检查是否为全"0"
JNZ D6 ;不为0,则出错
MOV AL,OFFH ;置IMR为全"1"
OUT 21H,AL ;OCW1口地址
IN AL,21H ;读IMR
ADD AL,1 ;检查是为全"1"
JNZ D6 ;不为全"1",出错
D6为出错处理(略)
②特定屏蔽方式
它用于开放低级中断,允许比正在服务中的中断级别低的中断请求。

特定屏蔽方式的操作见下面关于OCW3的介绍。

⒉ 中断优先级和中断结束方式操作命令字(OCW2)
其中:
D0~D2位:L0~L2是用来指定中断等级(0~7)。

这指定的等级是为了对指定的ISR 复位或指定设备的优先权。

它和D6位SL 配合使用。

D5位:EOI 用于所有需要使用中断结束命令的情况。

若置1,则在中断服务完成之后需要发送中断结束命令。

若置0,则不需要发送中断结束命令(如中断自动结束)。

D6位:SL 用来设置需要指定的操作。

若SL 置1,则需要指定,并且用L0~L2位来指定中断等级;若SL=0,则不需要指定,并且使L0~L2位选择中断等级无效(全部写0)。

D7位:R 用来控制8259A 中断优先权的轮换操作。

若R 位置1,则需要轮换优先权,并且按照SL ,EOI 及L2~L0各位的组态来执行优先权的轮换;若R 为
② 特殊优先级循环方式时,指定最低优先级。

⒊ 特定屏蔽方式的操作字(OCW3)
OCW3用来设置查询中断方式,特定屏蔽方式以及读取8259A 的IRR 、ISR 寄存器的内容。

OCW3的格式及各位定义如下:
其中:
D0位:RIS用于选择被读寄存器ISR或IRR。

若要读ISR,则RIS置1;若要读IRR侧RIS置0。

RIS的状态仅在RR位为1时有效。

D1位:RR用于执行为读寄存器命令选择数据源。

若RR置1,则为CPU按RIS位的状态选数据源;若RR为0,则读寄存器命令的数据源不变。

D2位:用于发送出查询命令。

若P置1,则通知8259A,CPU将执行一条读查询字的指令(A0=0),并且同时使读其它寄存器命令无效,CPU每读一次查询字之前都要发送该命令;若P为0,则不执行读查询字的指令。

D5位:SMM用于设置特定屏蔽方式。

若SMM置1,则选择特定屏蔽方式;若置0,则不选。

D6位:ESMM为允许特定屏蔽方式位,用来开放或关闭SMM。

若ESMM=1,则SMM位有效;若ESMM=0则SMM位无效。

六 8259A的工作方式
⒈设置优先级的方式
①全嵌套方式
全嵌套方式是8259A最常用的工作方式,如果对8259A进行初始化以后没有设置其他优先级方式,那么,8259A就按全嵌套方式工作。

在全嵌套方式中,中断请求按优先级0~7进行处理,0级中断的优先级最高。

当一个中断被响应时,中断类型码被放到数据总线上,当前中断服务寄存
被置1,然后进入中断服务程序。

一般情况下(除了中断器ISR中的对应位IS
n
自动结束方式外),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。

这样做,可以为中断优先级裁决器中的裁决提供依据,因为中断优先级裁决器总是将新收到的中断请求和当前中断服务寄存器中的IS位进行比较,判断新收到的中断请求的优先级是否比当前正在处理的中断的优先级高,如果是,则实行中断嵌套。

②特殊全嵌套方式
特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,就是在特殊全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么,也会给予响应,从而实现一种对同级中断请求的特殊嵌套。

而在全嵌套方式中,只有更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,不会给予响应。

特殊全嵌套方式一般用在8259A级连的系统中。

在这种情况下,对主片编程时,让它工作在特殊全嵌套方式,但从片仍处于其他优先级方式。

这样,当来自某一从片的中断请求正在处理时,一方面,和普通全嵌套方式一样,对来
自优先级较高的主片其他引腿上的中断请求开放,当然,这些中断请求是由其他从片引入的;另一方面,对来自同一从片的较高优先级请求也会开放。

对同一从片中这样的中断请求,在主片引腿上反映出来,是与当前正在处理的中断请求处于同一级的,但是,在从片内部看,新来的中断请求一定比当前正在处理的中断的优先级别高,否则,通过从片中的中断优先级裁决电路裁决之后,就不会发出INT信号,从而就不会在主片引腿上产生中断请求信号。

注意:特殊全嵌套方式是专门为多片8259A系统提供的用来确认从片内部优先级的工作方式。

③优先级自动循环方式
优先级自动循环方式一般用在系统中多个中断源优先级相等的场合。

在这种方式下,优先级队列是在变化的,一个设备受到中断服务以后,它的优先级自动降为最低。

在优先级自动循环方式中,初始优先级队列规定为IR0、IR1、IR2、┅IR6、IR7,如果这时,IR0端正好有中断请求,则进入IR0的中断处理子程序,IR0处理完后,如果又来IR4中断请求,则处理IR4。

处理完IR4,IR5为最高优先级,然后依次类推。

这种方式的设置是由OCW2决定。

④优先级特殊循环方式
优先级特殊循环方式和优先级自动循环方式相比,只有一点不同,就是在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。

比如,确定IR5为最低优先级,那么,IR6就是最高优先级。

而在优先级自动循环方式中,一开始的最高优先级一定是IR0。

⒉屏蔽中断源的方式
①普通屏蔽方式
在普通屏蔽方式中,8259A的每个中断请求输入端都可以通过对应屏蔽位的设置被屏蔽,从而使这个中断请求不能从8259A送到CPU。

8259A内部有一个屏蔽寄存器,它的每一位对应了一个中断请求输入,程序设计时,可以通过设置操作命令字OCW1使屏蔽寄存器中任一位或几位置1.当某一位为1时,对应的某一级中断就受到屏蔽。

②特殊屏蔽方式
在有些场合中,希望一个中断服务程序能动态地改变系统的优先级结构。

这就需要特殊屏蔽方式。

设置了特殊屏蔽方式后,再用OCW1对屏蔽寄存器中某一位进行置位时,就会同时使当前中断服务寄存器中的对应位自动清0,这样,就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。

因此,特殊屏蔽方式总是在中断处理程序中使用的。

⒊结束中断处理的方式
不管用哪种优先级方式工作,当一个中断请求得到响应时,8259A都会在
当前中断服务寄存器设置相应位IS
,这样,为此后中断裁决器的工作提供了
N
依据。

当中断处理程序结束时,必须使IS
位清0,否则,8259A的中断控制功
N
能就会不正常。

这个使IS
位清0的动作就是中断结束处理。

N
①中断自动结束方式
在中断自动结束方式中,系统一进入中断过程,8259A就自动将当前中断
清除,这样,尽管系统正在为某个设备进行中断服服务寄存器中的对应位IS
N
务,但对8259A来说,当前中断服务寄存器中却没有对应位作指示,所以,好象已经结束了中断服务一样。

使ICW4的AEOI位为1,就设置了中断自动结束方式。

②一般的中断结束方式
一般中断结束方式用在全嵌套情况下。

当CPU用输出指令往8259A发出一般中断结束命令时,8259A就会把当前中断服务寄存器中的最高的非零IS位复位。

因为在全嵌套方式中,最高的非零IS位对应了最后一次被响应的和被处理的中断,也就是当前正在处理的中断,所以,最高的非零IS位的复位相当于结束了当前正在处理的中断。

③特殊的中断结束方式
在非全嵌套方式下,用当前中断服务寄存器是无法确定哪一级中断为最后响应和处理的。

这时,就要采用特殊的中断结束方式。

采用特殊中断结束方式反映在程序中就是要发一条特殊中断结束命令,这个命令中指出了要清除当前中断服务寄存器中的哪个IS位。

这种方式的设置是通过OCW2来实现的。

⒋连接系统总线的方式
①缓冲方式
在多片8259A级联的大系统中,8259A通过总线驱动器和数据总线相连,这就是缓冲方式。

在缓冲方式下,有一个对总线驱动器的启动问题。

为此,将8259A的SP/EN端和总线驱动器的允许端相连,因为8259A工作在缓冲方式时,会在输出状态字或中断类型码的同时,从SP/EN端输出一个低电平,此低电平正好可作为总线驱动器的启动信号。

②非缓冲方式
当系统中只有单片8259A时,一般将它直接与数据总线相连,这种方式为非缓冲方式。

在此种方式中,8259A的SP/EN端作为输入端,当系统只有单片8259A时,该引脚必须接高电平;当系统中有多片8259A时,主片的该引脚接高电平,而从片的接低电平。

注意:这两种方式都是通过ICW4来设置的。

⒌引入中断请求的方式。

相关文档
最新文档