可编程中断控制器8259A的用处

  • 可为CPU管理和处理8个中断源电路的中断,并对它们进行优先级管理
  • 可与其它8个8259A芯片组成主从式中断系统,实现64级中断源控制。
  • 优先级方式在执行程序时可动态改变,有多种中断管理方式。
  • 每一中断源中断都可以屏蔽或允许,可通过编程选择。
  • 能自动送出中断类型号,使CPU方便的找到中断服务程序的入口地址



8259A内部功能结构+各引脚解释

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



8259的中断过程

① 由 【中断请求寄存器IRR 】锁存外部的中断申请。
            若IR0~IR7引脚上有中断申请,则将IRR相应位置1

② 决定是否通过INT引脚向CPU发出中断请求。
中断屏蔽寄存器IMR决定IRR中的中断申请是否进入优先级判别电路PR

在这里插入图片描述

③优先级判决
优先级判别电路PR根据新进入的中断申请和ISR的内容,决定是否发向CPU发出中断申请信号。

  • 如果新进入的中断申请ISR中记录的中断请求的优先级,则通过8259的INT引脚向CPU发出中断请求信号;
  • 如果新进入的中断申请ISR中记录的中断请求的优先级低或同级,则不向CPU发中断请求信号。

④CPU决定是否响应中断请求

CPU接收到INTR上的中断申请信号后:

  • 如果IF标志为1,则处理完当前的指令后,向8259的#INTA引脚发两个连续的负脉冲【就是可以响应】。
  • 如果IF标志为0,则CPU不发中断响应信号,即中断申请被IF屏蔽
    在这里插入图片描述

⑤ 8259A在接收到#INTA信号后,使ISR相应位置1,IRR相应位置0

⑥ 8259在#INTA引脚的第二负脉冲期间,向数据总线输送8位的中断向量号。

⑦中断结束时,要在中断服务程序中发中断结束命令,使ISR的相应位置0。
若8259工作在中断自动结束方式,则在#INTA引脚的第二个负脉冲结束时,使ISR的相应位置0。



8259的工作方式

在这里插入图片描述

1. 设置优先权方式

(1)普通全嵌套方式:默认【IR0优先级最高、 IR7最低】

全嵌套的规则 :
高级中断可以进入低级中断低级中断不可以进入高级中断

在这里插入图片描述
全嵌套方式的工作条件【单片8259】:

  1. 在主程序中有STI指令开中断,使IF=1。
  2. 在中断服务程序中再次开中断,才能进行中断嵌套。
  3. 在中断程序结束时,必须执行中断结束指令,使ISR中相应位置0,然后才能执行IRET中断返回指令。

(2)特殊全嵌套方式【能够响应同等优先级的中断请求。用在多片级联的场合。】

在多片级联时仍能实现中断嵌套

工作条件:

  1. 主片:设为特殊全嵌套方式。
  2. 从片:设为除了特殊全嵌套以外的任一种优先级方式

(3)优先级自动循环方式

从IR0~IR7进入的中断轮流具有最高优先级。
初始时,IR0最高,IR7最低。
此后优先级自动循环,即:当前被响应的中断优先级最低,其后面的一个优先级最高,如下图

在这里插入图片描述

(4)优先级特殊循环方式

和(3)不同:初始时,最低优先级是编程设置的。



2. 屏蔽中断源方式

(1)普通屏蔽方式

将IMR中的某一位/几位置1,则相应IRR中的中断请求被屏蔽,不能通过8259送到CPU。
注意:IMR中的某位置1后,并不影响IRR中的相应位。
可通过编程设置操作命令字,实现IMR中的某一位/几位,置1/置0。

(2)特殊屏蔽方式【可以实现低级中断嵌套高级中断】

具体做法——>在当前正在处理的中断服务程序中设:

  1. 将8259设为特殊屏蔽方式
  2. 用命令字将IMR中相应位置1,由于已设置为特殊屏蔽方式,这种方式会自动使ISR中相应位置0。
  3. 要在中断服务程序结束时撤消特殊屏蔽方式。

一般用于需要动态改变优先级顺序的时候。


3. 结束中断处理方式

结束中断的原因:
当一个中断请求被响应时,8259会自动将ISR中相应位置1,为此后的中断裁决打下基础。当中断处理结束时,要用一个中断结束命令使ISR中的相应位清0,否则,中断裁决电路会屏蔽比其低级或同级中断请求,即比其低级的中断请求永远不能被响应。因此中断结束时,必须进行一些处理,使ISR中相应位清0。

(1)自动结束方式

在第二个负脉冲时,8259自动将ISR中的相应为置0
工作在此方式下:
①中断服务程序中不需要中断结束命令EOI。
②仅用在系统中只有单片8259,没有多个中断嵌套,且下一次中断请求一定在本次中断服务结束后发生。

(2)非自动结束方式

①一般中断结束方式

用于优先级全嵌套方式中。(优先级固定)
当CPU发出中断结束命令时,8259使ISR中优先级最高的那一非零位清0。

②特殊中断结束方式

用于优先级非全嵌套方式中(优先级不固定)。因此用ISR不能确定哪个中断是最后处理的中断。
要求CPU发出一个特殊的中断结束命令来结束中断,在这个特殊的中断结束命令中,要指出所要结束的中断的优先级。
指出所要清除的ISR中的哪一位



4. 中断触发方式

(1)电平触发:高电平有效。

(2)边沿触发:上升沿有效。



5. 数据线连接方式

(1)缓冲方式【需经过数据总线驱动器(8286)系统总线相连】

当使用缓冲方式与系统总线相连时:
            #SP/ #EN 是输出端,和8286的允许端相连,用于启动8286。

(2)非缓冲方式【 8259直接与系统总线相连。】

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐