8259 工作原理概述


8259 从多个中断设备的 IR0 到 IR7 引脚接收中断请求。之后,它识别这些已激活的输入中优先级最高的中断请求。为了将 8259 配置为固定优先级工作模式,其中 IR0 优先级最高,IR7 优先级最低。如果输入 IR2、IR4 和 IR6 处于激活状态,则 IR2 具有比其他激活请求更高的优先级中断请求。有关激活的中断请求的详细信息存储在中断请求寄存器 (IRR) 中。

通过加载中断屏蔽寄存器 (IMR),可以屏蔽中断请求。如果中断请求 IR2 和 IR3 被屏蔽,则 IR4 将在未屏蔽的激活请求中获得最高优先级中断请求。处理器可能正在处理 IR5 中断请求。有关当前正在处理的中断请求的所有信息都保存在服务中寄存器(简称 ISR)中。

8259 中存在一个优先级解析单元,它接收来自 IRR、ISR 和 IMR 的输入请求,并识别优先级最高的中断请求。由于 IR4 的优先级远高于当前正在处理的 IR5,因此输出的 INT(中断请求)被激活。同时,ISR 的第 4 位由 8259 设置为 1。8259 的 INT 输出连接到 8085 的 INTR 输入,如下图所示。8259 的 INT 输出不应连接到 8085 的任何其他中断引脚。

因此,优先级解析器仅在满足以下条件时才会决定激活 INT 输出,否则不会激活。

  • IR 输入被激活

  • 当 IR 输入未被屏蔽时

  • 当处理器当前没有处理具有更高优先级的中断请求时。


图 - 8259 与 8085 处理器接口

8085 执行激活 INTR 输入的指令期间。然后,假设 8085 中断系统已启用且 8085 的更高优先级中断未激活,则 8085 连续三次发出 INTA* 输出。响应 INTA* 的激活,8259 通过 D7-0 引脚向 8085 发送 3 字节的 CALL 指令。第一次激活 INTA* 时,8259 将 CALL 的代码 (5CDH) 发送到 8085 的 D7-0 引脚上。它在 8085 的 IR 寄存器中接收。第二次激活 INTA* 时,8259 将中断向量 (IV) 地址的低位字节发送到 8085 的 D7-0 引脚上。它在 8085 的 Z 寄存器中接收。第三次激活 INTA* 时,8259 将 IV 地址的高位字节发送到 8085 的 D7-0 引脚上。它在 8085 的 W 寄存器中接收。8259 向 8085 提供的 IV 地址取决于正在处理的 8259 的 IR 输入。这导致分支到相应的 ISS。完成 ISS 后,控制权返回到主程序。

需要注意的重要一点是,处理器不需要识别 INTR 引脚上中断的来源。8259 具有从 IR0 到 IR7 中识别中断来源的机制。它相应地向 8085 发送带有相应 ISS 地址的 CALL 指令。因此,消除了轮询问题,从而缩短了中断响应时间。其次,可以将 8259 配置为以“旋转优先级模式”工作。然后,固定优先级的缺点也得到了解决。

通过在系统中使用单个 8259,八个中断设备可以在 8085 的 INTR 输入上中断。当许多设备需要执行中断驱动的数传方案时,使用多个 8259。


图 - 使用多个 8259。

更新于: 2020-06-29

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告