📜  8259 PIC的工作模式

📅  最后修改于: 2022-05-13 01:57:02.703000             🧑  作者: Mango

8259 PIC的工作模式

先决条件: 8259 PIC
8259 PIC 专为 8085 和 8086 微处理器系列而设计。

8085 和 8086 中需要 PIC:

  • 在 8086 中,我们有两个用于中断处理的引脚,即 NMI 和 INTR。如果我们将 NMI 用于数据损坏或不可恢复的硬件错误和一个中断引脚,则 INTR 用于其他软件中断。
  • 在一个系统中,当我们有来自不同输入或输出设备的多个中断时,那么我们需要一个 PIC(优先级中断控制器)来处理来自不同设备的多个中断,并根据系统要求对它们进行优先级排序,并将它们发送到上的单个中断引脚处理器。

8259的特点

  • 单个 8259 处理 8 个中断,而它的级联配置,其中 1 个主设备和 8 个从设备可以处理多达 64 个中断。
  • 它可以处理两个边沿级触发中断。
  • 它的优先级结构可以很容易地改变。
  • 在 8259 中,可以单独屏蔽中断。
  • 中断的向量地址很容易编程。
  • 它必须通过给出命令来初始化,以确定各种属性,如向量编号、优先级、屏蔽、触发等。

8259的工作模式:
通过更改 8259 的 ICW 或 OCW 命令的位,可以对 8259 的不同操作模式进行编程。

完全嵌套模式

  • 这是 8259 的默认操作模式。
  • 这里,IR 0具有最高优先级,IR 7具有最低优先级。当任何中断请求发生时,首先处理最高优先级的中断请求,并将其向量地址放在数据总线上,并设置 ISR 寄存器中的相应位,直到处理器执行 EOI 命令,然后返回中断服务程序或 AEOI(自动结束中断位被设置)直到最后一个INTA'下降。
  • 当 ISR 位被设置为一个中断时,所有同等和较低优先级的中断都被屏蔽,但是一个更高级别的中断请求可能发生并且只有当微处理器中断使能标志 IF=1 时才会被确认。
  • 它适用于单个 8259 配置。
  • 优先级机制可以很容易地编程。

特殊的完全嵌套模式(SFNM):
此模式由主 8259 以级联模式使用。它的优先级结构是固定的,与完全嵌套模式相同(即IR 0具有最高优先级,IR 7具有最低优先级)。

在一种特殊的完全嵌套模式下,主设备只会服务来自从设备的更高优先级的中断,而从设备的另一个中断正在服务中。

轮换优先模式:
有两种轮换优先模式——

1.自动旋转模式

  • 当各种中断源具有相同优先级时使用。在这种模式下,设备服务后,它的优先级最低。所有其他优先级都根据它轮换。
  • 示例:如果 IR 4刚刚被服务,它将获得最低优先级。

2.具体的旋转方式

  • 在这里,程序员可以通过编程最低优先级来改变优先级,从而固定所有其他优先级。
  • 例如:如果 IR 6被编程为最低优先级,那么 IR 7将具有最高优先级。

特殊屏蔽模式(SMM):

  • 在 SMM 中,8259 启用所有级别(更低或更高)的中断,但当前正在服务的中断除外。
  • 因为我们特别屏蔽了中断优先级的请求,与当前中断的优先级相同,所以称为特殊屏蔽模式

投票模式:
这里没有使用 8259 的 INT 引脚,因此,8259 不能中断 µp。相反,µP 将使用 OCW 3向 8259 提供轮询命令。作为响应,8259 向 µP 提供一个轮询字。轮询字表示需要微处理器服务的最高优先级中断。此后,µP 为中断服务。

优势 :
µP 的程序不会中断。当 ISR 对许多中断很常见时,可以使用它。它可用于将中断数量增加到 64 个以上(即在级联配置的情况下)。

缺点
如果轮询间隔很长,那么将在很长一段时间后处理中断。如果轮询间隔很短,那么时间可能会浪费在不必要的轮询上。

EOI——(中断结束):
当微处理器通过发送第一个 INTA 信号确认中断请求时,8259 将设置服务中寄存器 (ISR) 中的相应位。这将启动中断服务。
当 ISR 中的该位被清除时,称为中断结束 (EOI)

意向书模式
1. 普通EOI模式——
在这里,EOI 命令是强制性的。 EOI 命令由程序员在 ISR 结束时编写。它使 8259 从 ISR 复位该位。进一步的 EOI 命令有两种类型:

  • 非特定的 EOI 命令此处程序员没有指定要在 ISR 中复位的位数。 8259 本身会从 ISR 中重置最高优先级位。
  • 特定的 EOI 命令:程序员在此确定要从 ISR 复位的位数。

2.自动EOI模式(AEOI)——
在这种模式下,不需要 EOI 命令。相反,8259 将在第 2 个 INTA 脉冲结束时自行清除 ISR 中的相应位。

边沿和电平触发模式
如果 ICW 1的 LTIM 位 =0,则设置边沿触发中断模式,否则为电平触发中断。

读取 8259 状态
该模式可以读取寄存器的状态。这里,OCW 3用于读取 IRR 和 ISR,OCW 1用于读取 IMR。

缓冲模式:
当数据放在数据总线上时,8259 会在 SP'/EN' 引脚上发送一个缓冲器使能信号。