主要内容:
8259A的外部信号、编程结构和工作原理
8259A的工作方式
8259A的初始化命令字和初始化流程
8259A的操作命令字
多片8259A构成的主从式中断系统
中断的基本概念:
什么是中断?
在CPU执行程序的过程中,由于某种突发事件的发生,强迫CPU暂时停止正在执行的程序,转向对该突发事件进行处理,对这个事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一个过程就称为中断。 把引起中断的原因或触发中断请求的来源称为中断源。
中断需要解决的问题
中断的识别
系统有多个中断请求,CPU如何识别哪个中断源发出的请求?
- 办法1:向量中断(硬件)
- 办法2:中断查询(软/硬件结合)
中断优先级
有多个中断同时请求,CPU如何应对?
- 办法1:软件查询方式
- 办法2:简单硬件方式——菊花链法
- 办法3:专用硬件方式
中断嵌套
中断处理过程中,又有中断提出请求,怎么办?
- 办法1:链式优先权排队电路
- 办法2:优先权编码电路
中断控制器的功能
- 在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;
- 当CPU响应中断并进入中断处理程序后,中断控制器仍然负责对外部中断请求的管理
- 当某个外部中断请求的优先级高于当前正在处理的中断优先级时,中断控制器会让此中断通过而到达CPU的INTR端,从而实现中断的嵌套
- 反之,对级别低的中断则禁止。
8259A的工作特点
- 具有8级中断优先控制,通过级连可以扩展至64级优先权控制
- 每一级中断都可以通过初始设置为允许或屏蔽状态
8259A的内部结构与外部引脚信号
8259A的外部引脚信号
8259A的中断过程 *****
IF : 中断允许标志 IF为1,则CPU可接受可屏蔽中断请求。
配合下图一起理解记忆。
8259A工作示意图:
前面的流程都比较理想,只是说PR比较出最高的优先级,IMR屏蔽了某些中断请求,那具体是怎么比较优先级,怎么设置屏蔽哪些请求呢?这些是我们接下来要学习的内容。
- 设置优先级的方式
- 屏蔽中断源的方式(能够屏蔽哪些不允许发送的中断请求?如何屏蔽?)
- 结束中断处理的方式
- 连接系统总线的方式
- 确定中断类型码的方式
设置优先级的方式
(1)普通全嵌套方式(固定优先级方式) 默认方式,IR0最高,IR7最低。
(2)特殊全嵌套方式 基本同普通全嵌套方式, 所不同的是允许同级中断嵌套(用于级联主片)
(3)自动循环方式 初始优先级顺序IR0最高,IR7最低。 当其中一个中断源受到服务, 则它为最低优先权。 同时置比它低一级中断源为最高级, 其它自动循环排列。 常用在系统中多个中断源优先级相等的场合
(4)指定循环方式 当一中断源通过编程指定为最低优先权, 则比它低一级中断源为最高级,其它顺序排列。 如:指定IR3为最低,则优先级顺序为IR4, IR5,IR6,IR7,IR0,IR1, IR2 , IR3 。
屏蔽中断源方式
普通屏蔽方式
通过OCW1设置 将 IMR的 Di位置1,对应的中断 IRi将被屏蔽,该中断请求将不能从8259A送到CPU 如果将 IMR 的 Di位置0,则允许对应的中断产生
特殊屏蔽方式——允许发生低级的中断嵌套。
通过OCW1设置 将IMR的 Di位置1,中断IRi被屏蔽(屏蔽同级中断); 同时,ISR的Di位将置0,允许发生低级的中断。 在中断处理程序中使用。
引入中断请求的方式
8259A的初始化命令字和初始化流程
8259A的初始化命令字 ICW
- 8259A在开始工作前必须写入初始化命令字,ICW1写入偶地址端口,其余写入奇地址端口。
- 初始化命令字ICW最多可以有4个:ICW1~ICW4
- 必须按照以上顺序依次写入
- 其中 ICW1 和 ICW2是必须的
- ICW3和ICW4是否需要,由具体的工作方式决定
1、ICW1 芯片控制初始化命令字
2、ICW2中断类型码基数初始化命令字
- ICW2是设置中断号的初始化命令,必须写到8259A的奇地址端口。
- 按照规定:IR0的低3位是000;高5位为该8259中8个中断源类型码中的共有数码;而其他中断源的低3位(3位确定8种中断源)的值与IRi的(二进制)编号相对应
- 通过ICW2确定了IR0的中断类型码,同时也就自然地确定了其他7个IRi对应的中断类型码
3、ICW3标志主片/从片初始化命令字
- ICW3是在级联方式下,标志主/从片初始化才需要设置的初始化命令字。
- 当ICWl的D1 位为0时,8259A在级联方式下工作,必须设置ICW3
- 主片和从片需要分别设置ICW3
4、ICW4方式控制初始化命令字