可编程中断控制器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】:
- 在主程序中有STI指令开中断,使IF=1。
- 在中断服务程序中再次开中断,才能进行中断嵌套。
- 在中断程序结束时,必须执行中断结束指令,使ISR中相应位置0,然后才能执行IRET中断返回指令。
(2)特殊全嵌套方式【能够响应同等优先级的中断请求。用在多片级联的场合。】
在多片级联时仍能实现中断嵌套
工作条件:
- 主片:设为特殊全嵌套方式。
- 从片:设为除了特殊全嵌套以外的任一种优先级方式
(3)优先级自动循环方式
从IR0~IR7进入的中断轮流具有最高优先级。
初始时,IR0最高,IR7最低。
此后优先级自动循环,即:当前被响应的中断优先级最低,其后面的一个优先级最高,如下图。
(4)优先级特殊循环方式
和(3)不同:初始时,最低优先级是编程设置的。
2. 屏蔽中断源方式
(1)普通屏蔽方式
将IMR中的某一位/几位置1,则相应IRR中的中断请求被屏蔽,不能通过8259送到CPU。
注意:IMR中的某位置1后,并不影响IRR中的相应位。
可通过编程设置操作命令字,实现IMR中的某一位/几位,置1/置0。
(2)特殊屏蔽方式【可以实现低级中断嵌套高级中断】
具体做法——>在当前正在处理的中断服务程序中设:
- 将8259设为
特殊屏蔽方式
; - 用命令字将
IMR中相应位
置1,由于已设置为特殊屏蔽方式
,这种方式会自动使ISR中相应位
置0。 - 要在中断服务程序结束时撤消
特殊屏蔽方式。
一般用于需要动态改变优先级顺序的时候。
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。