Skip to content

8259A可编程中断控制器

8259A的功能

1.功能

Intel 8259A 是与8086系列CPU兼容的可编程中断控制器,它的主要功能为:

(1)具有8级优先权控制,级连可扩展至64级。

(2)每一级中断都可以屏蔽或允许。

(3)在中断响应周期,8259A可提供相应的中断向量号(中断类型号)。

(4)8259A的工作方式,可通过编程来进行选择。

image-20231016205633796

D0~D7: 接了数据总线缓冲器,来实现8259和8086的数据交换

A0:片内寻址,对应2个端口,接8086的地址线,从而实现了8086地址输出的不同,来访问的端口不同。8086的A0 不能接 8259A 的A0,因为8086的 A0 是区分奇偶体

中断请求寄存器(IRR):对应8个中断,IR0~IR7,谁请求对应的编号设置成1,其余写成0

中断服务寄存器:对应正在执行哪个中断,如果发生多个 '1',正在进行中断嵌套。

中断请求寄存器通过 优先权电路(FR) 来判定优先权

中断屏蔽寄存器:控制8个中断是否打开,为1屏蔽,为0打开。

8259A的引脚

image-20231016205725330

8259A的工作原理

当系统通电后,首先应对8259A初始化。(由CPU执行一段程序,向可编程芯片写入若干命令字,规定其工作状态,使其处于准备就绪的状态。)

8259A对外部中断请求处理过程如下:

(1) 当有IR0~IR7变 高,则IRR的相应位置1。

(2) 若中断请求线中至少有一条是中断允许的(判断IMR对应的中断是否为打开状态),则由 INT 引脚向CPU发出中断请求。

(3) 若CPU处于开中断状态,则在当前指令执行完后,用INTA信号作为响应。

(4) 8259A接到INTA后,使最高优先权的ISR位置1,而相应的IRR位复位。在此周期中,8259A不向系统数据总线送任何内容。

(5) 在中断响应周期的第二个信号期间8259A向数据总线输送一个8位指针(向量号或类型号),CPU读取此类型号,类型号*4作为地址就可从中断向量表中取出中断服务程序入口地址。

(6) 若8259A工作在自动结束中断AEOI方式(Automatic End Of Interrupt),在第二个INTA结束时,使中断源在ISR的相应位复位。否则,直至中断服务程序执行到EOI命令,才使ISR的相应位复位。

8259A的编程

8259A的编程分两部分:

(1)初始化编程

由CPU向8259A送2~4字节的初始化命令字ICW

(2)工作方式编程

由CPU向8259A送三个字节的工作命令字OCW,以规定8259A的工作方式。该命令字可在8259A初始化命令字ICW后的任何时间写入。

8259A的初始化编程

8259A的初始化命令字共4个(ICW1~ICW4)

设置过程如图:

image-20231016210557353

⑴ 写初始化命令字ICW1——芯片控制字(多片使用的时候需要写入 ICW3)

image-20231016210614734

(2)写初始化命令字ICW2——中断类型控制字( 中断类型码 )

用来定义中断类型码的高5位

image-20231016210717640

(3) 写初始化指令字ICW3—主/从片初始化(级连控制字)

image-20231016210814930

(4)写初始化命令字ICW4——方式控制字

对于8086/8088系统是必须设置的初始化命令字

image-20231016210838478

8259A的操作命令字

三个操作命令字OCW1~OCW3。

在设置操作命令字时,顺序上没有严格的要求,但端口地址上有严格的规定。

OCW1必须写入奇地址端口(A0=1)

OCW2和OCW3必须写入偶地址端口(A0=0)

⑴ 操作命令字OCW1 —屏蔽操作命令字

用来设置或清除对中断的屏蔽(设置IMR的值)

image-20231016210937357

(2) 操作命令字OCW2——中断方式命令字

​ 设置优先级循环和中断结束方式

image-20231016210953827

(3) 操作命令字OCW3——状态操作命令字

设置和撤销特殊屏蔽方式、设置中断查询方式、

设置对8259A内部寄存器的读出命令

image-20231016211016056

8259A的工作方式

1.中断嵌套方式

(1)全嵌套方式

​ 中断优先权是固定的,即IR0优先权最高,IR7优先权最低。

(2)特殊全嵌套方式——级连情况

​ 当某一从片中断请求被响应后,主片不封锁从片的INT输入端,使该从片优先级更高的中断源的请求能得到响应。

中断优先级循环方式

⑴ 自动循环方式

​ 当某一个中断源服务完以后,它的优先级变成最低的 。

(2) 特殊循环方式

​ 设置IR5为最低优先权,则IR6的优先权就变为最高。

例如: 设置IR5为最低优先权,则IR6的优先权就变为最高。这时OCW2最高三位为110,而最低三位L2~L0应为101(最低优先权编码)。

中断屏蔽

8259A的8条中断请求线的每一条都可根据需要单独屏蔽,可通过写入OCW1的命令字来实现。

  1. 普通屏蔽方式:

    允许比该优先级高的中断源申请中断,不允许同级或低级中断源申请中断。

  2. 特殊屏蔽方式:

    屏蔽同级,允许级别比他高的或比他低的中断源申请中断。

中断结束命令

根据不同的工作方式8259A可以有几种不同的结束方法。

(1)自动中断结束方式(AEOI)

当某一级中断被CPU响应后,CPU送回第一个INTA中断响应信号,使ISR的相应位置1,当第二个INTA负脉冲结束时,自动将ISR的相应位置0。

(2)非自动中断结束方式(EOI)

中断返回前,必须用指令向8259A发中断结束命令,即使ICW4的D1=0。若级连,发2个。

首先将ICW4的D1=0,定为正常中断结束方式,然后用OUT向8259A的偶地址端口输出OCW2操作控制字(OCW2的D7D6D5=001),实现自动结束命令。

读8259A 的状态

​ 8259A的IRR、ISR、IMR,通过OCW3来读取状态