目录
初始化命令字有四个ICW1、ICW2、ICW3、ICW4,
首先输入ICW1,然后输入ICW2、ICW3、ICW4,
由ICW1决定是否输入ICW3、ICW4。系统复位后只设置一次,必须顺序填写。
操作命令字OCW1、OCW2、OCW3

ICW1初始化命令字

例题

ICW2(设置中断类信号)初始化命令字

ICW3标识主片从片初始化命令字

例题

ICW4方式控制初始化命令字

操作命令字
由CPU向8259A送三个字节的操作命令字OCW,用以规定8259A的工作方式。
中断屏蔽
结束中断
优先权循环
中断状态
操作命令字是在应用程序中设置的,设置时,顺序上没有严格的要求。OCW1必须写入奇地址端口,OCW2、OCW3必须写入偶地址端口。
OCW1-中断屏蔽操作命令字
OCW1是中断屏蔽命令字,命令字中的M7-M0对应IMR的各位。Mi=1表示该中断被屏蔽,Mi=0表示该中断开放。

例题

⭐OCW2优先权循环方式和中断结束方式操作字

L2-L0:
当SL=1时有效,当设置为特殊结束EOI命令时,指出清除中断寄存器中的哪一位,
当设置为特殊优先级循环时,指出循环开始时设置的最低优先级。
R=1:
循环优先权
R=0:
固定优先权
SL=1:
由L0-L2指定IRi位;
SL=0:
由L0-L2无效;EOI=1:中断结束
OCW3特殊屏蔽方式和查询方式的命令






总结:
由于8259A只设计了一个地址信号A0,所以其端口地址不太规范:
A0=0时,可以写入ICW1、OCW2、OCW3
当A0=1时,可以写入ICW2-ICW4、OCW1
。
状态读取:
对于IMR,可以在任意时刻,使用IN指令,从奇地址端口读取。
对于ISR、IRR,需要先送出读状态命令字,由OCW3形成,然后IN指令,从偶地址端口读出。如果要多次读同样的寄存器,只需写一次命令字即可。
查询方式工作:
是否有中断,是通过发P命令后,从偶地址读取状态字。
8259A的应用举例
(一)初始化
MOV AL,13H ;00001 011
OUT 20H,AL ;设置ICW1,上升沿触发,单片不设ICW3,需设置ICW4
MOV AL,08H
OUT 21H,AL ;设置中断类型号基值08 ICW2
MOV AL,0DH ;设置ICW4,缓冲方式主片、非自动EOI
OUT 21H,AL
MOV AL,0H ;写OCW1,允许所有的中断
OUT 21H,AL
(二)送中断向量
将中断向量送入中断向量表
例如异步通信中断IR4,中断类型码为12,那么其中断向量在中断类型表中的位置为12*4=48

MOV AX, 0 ;中断入口表
MOV ES,AX ;段地址送ES
MOV BX,n*4 ;偏移量送DI
MOV AX,OFFSET INTRAD
MOV ES:[BX],AX
MOV AX,SEG INTRAD
MOV ES:[BX+2],AX
STI ;恢复中断
(三)中断服务子程序
;保护现场
PUSH DS
PUSH AX
PUSH CX
PUSH DX
STI ;开中断,允许中断嵌套
... ;执行中断处理程序
CLI ;关中断
;恢复现场
POP DX
POP CX
POP AX
POP DS
MOV AL,20H ;中断结束命令OCW2
OUT 20H,AL
IRET ;中断返回
本文详细介绍了8259A中断控制器的初始化配置过程及操作命令字的使用方法,包括初始化命令字(ICW1-ICW4)和操作命令字(OCW1-OCW3)的具体应用,并提供了实例代码。

7078

被折叠的 条评论
为什么被折叠?



