Skip to content

Latest commit

 

History

History
193 lines (126 loc) · 5.17 KB

File metadata and controls

193 lines (126 loc) · 5.17 KB

8259A 中断

中断机制

8088中断系统采用向量中断机制

可屏蔽中断需要8259A实现优先权管理

类型

  • 内部中断:异常
    • 触发错中断
    • 指令中断 INT N
    • 溢出中断 INTO
    • 单步中断 TF
  • 外部中断:中断
    • NMI 向量号为2
    • INT:IF

IF 为 0 不响应可屏蔽中断

中断响应过程

中断源优先权指被识别出来的先后

  • 软件中断
  • NMI
  • INTR
  • TF=1

8259A中断控制器

  • 中断请求寄存器IRR
    • 8条外界中断请求信号IR0-7请求状态
    • Di为1表示IRi有请求
  • 中断服务寄存器ISR
    • 保存被8259A服务的中断状态
    • Di为1表示IRi中断正在服务
  • 中断屏蔽寄存器IMR
    • 保存对中断请求信号IR的屏蔽状态
    • Di为1表示IRi中断被屏蔽

image-20210702232524483

8259A编程

初始化编程

  • 8259A开始工作前,必须进行初始化编程:
  • 给8259A写入初始化命令字ICW
	mov al,11h	;写入ICW1
	out 20h,al
	jmp intr1
intr1:	mov al,08h	;写入ICW2
	out 21h,al
	jmp intr2
intr2:	mov al,04h	;写入ICW3
	out 21h,al
	jmp intr3
intr3:	mov al,1h	;写入ICW4
	out 21h,al

中断操作编程

  • 8259A工作期间
  • 写入操作命令字OCW将选定的操作传送给8259A
  • 可以读取8259A信息

ICW

  • 8259A工作前写入
  • ICW1和ICW2必须送
  • ICW3和ICW4由工作方式决定

image-20210702231054801

ICW1

D7 D6 D5 D4 D3 D2 D1 D0
X X X 1 LTIM X SNGL IC4
建议为0 作为标志 中断触发方式 单片或级联方式 是否写入ICW4

中断触发方式

  1. 边沿触发
  2. 电平触发

SNGL:

  1. 级联
  2. 单片

ICW2

D7 D6 D5 D4 D3 D2 D1 D0
T7 T6 T5 T4 T3 X X X

设置中断向量号

  • T7~T3为中断向量号的高5位
  • 低3位由8259A自动确定
  • IR0为000、 IR1为001、……、IR7为111

ICW3

D7 D6 D5 D4 D3 D2 D1 D0
S7 S6 S5 S4 S3 S2/ID2 S1/ID1 S0/ID0

级联命令字

  • 主片8259A:$S_i=1$对应$IR_i$有从片
  • 从片8259A:ID0~ID2编码说明从片INT引脚接到主片的IR引脚

ICW4

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI $\mu$PM
嵌套方式
特殊(1)/普通(0)全嵌套
缓冲方式:缓冲(1) M/S* AutoEOI

$\mu$PM:微处理器类型

  1. 8位8080/8085
  2. 16位80x86

普通全嵌套:

  • 8259A的中断优先权顺序固定不变
  • 中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)
  • 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套

OCW

没有写入顺序

OCW1

D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0

屏蔽命令字 Di=Mi对应IRi

为1禁止IRi中断

OCW2

D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L2 L1 L0
产生中断 结束EOI命令 和改变优先权顺序 指定 IR 引脚

R SL EOI 为一组

L2~0为一组

OCW3

D7 D6 D5 D4 D3 D2 D1 D0
0 ESMN SMM 0 1 P RR RIS
设置中断 屏蔽方式 规定随后读取 状态字 含义

ESMN SMM一组

P RR RIS一组

读取状态字

CPU可读取IRR ISR IMR和查询字

  • $A_0$为低 OCW3中RR和RIS设定读取IRR或ISR P设定为读取查询字
  • $A_0$为高 读取都是IMR

查询字反应8259A是否有中断请求

D7 D6 D5 D4 D3 D2 D1 D0
I W2 W1 W0
是否有外设请求中断 当前中断请求 最高优先级