? 通过对 【计算机与UNIX汇编原理 ① ~ ?】我们已经大致掌握了学习的相关知识
接下来,我将其列名改为 计算机原理和接口技术(UNIX) 】,重点将放在 “” 上
写了两周,终于完成了施工… ?? ??
文章目录
- 一、中断系统-基础知识点
-
- 1.1 复习中断控制模式
- 1.2 中断源及中断分类
- 1.3 中断类型码、中断向量表和中断向量表
- 1.4 中断响应和处理过程
- 二、多级中断管理-基础知识点
-
- 2.1 中断优先级和中断分级
- 2.2 禁止中断、中断屏蔽和中断嵌套
- 2.3 中断系统的基本功能
- 三、80X86的中断指令
-
- 3.1 开中断指令(STI) 与 关中断指令(CLI)
- 3.2 软件中断指令 INT n
- 3.3 中断返回指令 IRET
- 3.4 溢出中断指令 INTO
- 四、 中断控制器8259A ???
-
- 4.1 8259A的功能
- 4.2 8259A的结构 ??
-
- 4.2.1 8259A 八个重要的基本部件
- 4.2.2 8259A 的外部引脚
- 4.2.3 8259A 的工作流程 —— CPU响应可以屏蔽硬件中断的过程
- 4.3 8259A中断管理模式
-
- 4.3.1 中断触发
- 4.3.2 中断屏蔽
- 4.3.3 优先管理模式中断
- 4.3.4 嵌套中断
- 4.3.5 处理方法中断结束
- 4.4 8259A 的初始化(编程)
-
- 4.4.1 命令字的初始化 ICW(四种)
- 4.4.2 操作命令字 OCW(三种)
- 4.4.3 8259A 编程步骤的初始化
- 五、PC系列中断系统
-
- 5.1 PC 系列机一般中断管理模式
- 5.2 非屏蔽中断
- 5.3 可屏蔽中断
- 六、中断和应用于微型计算机系统的例子
-
- 6.1 日时钟中断
-
- 6.1.1 介绍和执行过程
- 6.1.2 开发应用时的注意事项
- 6.1.3 具体样例 ??【终于开始编程】
- 6.2 键盘中断
-
- 6.2.1 中断源和中断类型
- 6.2.2 键盘中断处理过程
- 6.2.3 键盘中断开发应用
- 6.3 实时(时钟)中断【了解】
-
- 6.3.1 中断源和中断类型
- 6.3.2 系统实时钟中断处理流程:
- 6.3.3 系统实时钟中断开发应用程序
- 6.4 用户中断 ???
-
- 6.4.1 中断源和中断类型
- 6.4.2 系统用户中断处理流程
- 6.4.3 用户中断开发应用
- 6.4.4 用户中断开发应用程序的例子
- 七、硬件中断与软件中断的区别
- 八、总结(掌握要点)
- 九、参考附录
interrupt ??
计算机原理和接口技术(UNIX)?】——输入/输出系统查询,中断控制DMA 、8237A】. 计算机原理和接口技术(UNIX)?】——微型计算机系统串行通信 [ 8250 具体样例 上机实验].
一、中断系统-基础知识点
● 中断技术是现代计算机系统中非常重要的功能。最初,中断技术引入计算机系统只是为了快速解决问题 CPU 数据传输与慢外设的矛盾。随着计算机技术的发展,它不断被赋予新的功能——>接下来,我们将学习计算机故障检测、多程序分时操作等。
● 这里的中断技术可以理解为上一节 中断控制模式 升级展开版 (上一篇文章)。
1.1 复习中断控制模式
● :CPU 在执行过程中,由于某些外部或内部事件的作用, CPU 停止当前正在执行的程序,转移到事件服务中。事件服务结束后,可自动返回中断程序执行过程。
● : ??① 中断的原程序称为主程序。 ??② 中断处理程序称为中断服务子程序。 ??③ 中止主程序的地方称为断点,也就是下一个指令所在内存的地址。
● 温暖(在上一篇文章中) 中断控制模式):
● : ??[1] ①和②都是初始化 “打开”。 ??[2] 准备好输入设备数据后,进行③(输入选定的通信号并将数据写入接口) ??[3] 然后。输入接口会向 CPU 进行④(发出中断请求) ??[4] CPU 接到中断请求后,将进行⑤(回复中断响应,表示 CPU 准备好了) ??[5] 然后,CPU 就进行⑥(转而执行中断服务子程序) ??[6] 接,输入接口就会把接口里的数据收过来(即⑦) [7] 最后,完成一次数据输入操作后,执行⑧(最后返回到①)
1.2 中断源及中断分类
● :能够引发中断的事件,即发出中断请求的来源。(中断源可以是外部事件,也可以是 CPU 内部事件)
● : ① I/O设备 —— 如键盘、显示器、打印机 ② 数据通道 —— 如磁带、磁盘 ③ 时钟 —— 如8254 0#,由此引发的中断 ④ 故障源 —— 如掉电、存贮器奇偶校验错
● : ① 执行INT
软件中断指令 —— 如执行指令INT 21H
② CPU指令执行产生的异常 —— 如被0
除、单步执行
● :外部中断和内部中断。
● :由外部事件引发的中断,即由 CPU 以外的设备发出,并由 CPU 的中断请求信号引脚输入所引发的中断。(也被称为硬件中断)
● 80X86 CPU有2
个引脚(INTR
和NMI
)可以接收外部的中断请求信号。由输入到INTR
引脚的中断请求信号引发的中断称为可屏蔽硬件中断。由输入到NMI
引脚的中断请求信号引发的中断称为非屏蔽硬件中断。
● :由 CPU 内部事件,即由 CPU 硬件故障或程序执行中的事件所引发的中断称为内部中断。内部中断可以进一步分为软件中断和异常。
● :执行有定义的INT n;
指令而引发的中断。软件中断可分为BIOS中断、DOS中断。DOS中断,又分为 DOS 专用中断、DOS保留中断,用户可调用的DOS中断以及保留给用户开发的中断。
● :由于 CPU 本身故障、程序故障等引发的中断。 异常有进一步可分为故障(Fault
)、陷阱(Trap
)、中止(Abort
)。这三个作了解即可。
1.3 中断类型码、中断向量表和中断向量表
● :为了区别这些不同的中断,微机系统给每一个中断分配的一个中断号n
。其取值范围是0~255
。
● 微机系统可以处理256
种中断。在这256
个中断中,intel 在它各种微处理器中都保留了前32
个(0~31
)为系统所专用,后224
个可由用户设定。
● : ① 0型中断 —— 除法错中断 ② 1型中断 —— 单步或陷阱中断 ③ 2型中断 —— 非屏蔽硬件中断 ④ 3型中断 —— 断点中断 ⑤ 4型中断 —— 溢出中断 ⑥ 5型中断 —— 屏幕打印 ⑦ 08H~0FH
型中断 —— 可屏蔽硬件中断 ⑧ 10H~1FH
型中断 —— BIOS中断 ⑨ 20H~3FH
型中断 —— DOS中断
● :在实模式下,中断向量是中断服务子程序的入口地址。
● :每个中断号所对应的中断向量占4
字节,它由2
部分组成:服务程序所在代码段的段基址(前2
个字节)、服务程序入口的偏移地址(后2
个字节)。:
● :在实模式下,系统存储器地址空间中,最低的1KB
空间,即00000H~003FFH
单元依次存放着256
个中断号所对应的中断向量(每个中断对应的中断向量占4
字节),存放这个1024
字节的中断向量的存储区域就是一张中断向量表。:
● :①求08H
型中断向量存放在何处?②若已知系统 RAM 的 20H~23H 单元的内容依次为 22H、33H、44H、55H,则08H
型中断服务子程序入口的物理地址为?
①解:∵ 08H × 4 = 0000 1000B × 0100B = 0000 1000 00B = 20H (乘 4 相当于整体左移两位) ∴ 08H 型中断向量存于 20H~23H 单元中
②解:该物理地址 = 5544H × 16 + 3322H = 55440H + 3322H = 58762H
● : ① 由 BIOS 设计的中断服务程序(如INT 16H
, INT 10H
…),它的中断向量在加电时由 BIOS 负责写入中断向量表。 ② 由 DOS 设计的中断服务程序(如INT 21H
),它的中断向量是在启动 DOS 时,由 DOS 负责写入中断向量表。 ③ 用户程序开发的中断服务程序,由用户程序写入其中断向量。
● :设n
型中断服务程序的名字是SERVICE
,如何将SERVICE
的入口地址写入对应的中断向量表呢?方法如下:
方法一: 用户自己编写程序填写中断向量
CLI ; I标志清零
PUSH DS ; 压入段基址(保护)
MOV AX, 0000H
MOV DS, AX ; 基地址是 0000H, 可自行设定
MOV BX, 4*n ; 偏移地址是 4*n
MOV AX, OFFSET SERVICE
MOV [BX], AX ; 将服务程序入口偏移地址写入 4*n ~ 4*n+1 单元
MOV AX, SEG SERVICE
MOV [BX+2], AX ; 将服务程序段基址写入 4*n+2 ~ 4*n+3 单元
POP DS ; 弹出段基址(恢复)
STI
;-----------------------------------------------------
方法二: DOS设计 2 个子程序,专门用于中断向量的读出、写入
[ INT 21H 的35H子功能 ]
功能: 读出 n 型中断向量
入口: AL = 中断类型码
出口: ES:BX = n型中断向量
[ INT 21H 的25H子功能 ] <----这道例题只会用到这个
功能: 写入 n 型中断向量
入口: DS = 中断服务程序所在代码段的段基址
DX = 中断服务程序入口的偏移地址
AL = 中断类型码
出口: 无
采用方法二, 对应的程序段如下:
CLI
PUSH DS
PUSHA ; 用于“保护现场”
MOV AX,SEG SERVICE
MOV DS,AX
MOV DX,OFFSET SERVICE ; 获取 中断服务程序入口的偏移地址 到 DX
MOV AH,25H ; 写入 n 型中断向量, 这时需要用户进行键盘输入
MOV AL,n
INT 21H ; 执行该 n 型中断
POPA ; 用于“恢复现场”
POP DS
STI
1.4 中断响应和处理的过程
● 微机系统中断中的各种类型中断的响应和处理过程,主要区别在于中断类型码的获得方式不同,当 CPU 获得了中断类型码后的。 ① 对于非屏蔽硬件中断请求,CPU 内部会自动产生中断类型码。 ② 对于可屏蔽硬件中断请求,当 CPU 处于开中断状态时,由外部中断控制器将相应的中断类型码送给 CPU。 ③ 对于异常,中断类型码也是自动形成的。 ④ 对于INT n
指令,中断类型码即为指令中给定的n
。
● : ① F寄存器(状态寄存器) → 堆栈(目的:保存INT n
之前的各个标志位状态) ② 使 F 中的 T 标志置 0 → 禁止单步操作,使 I 标志置0
→ CPU处于关中断状态(目的:清除 I 标志和 T 标志,屏蔽新的可屏蔽硬件中断和单步中断) ③ 将主程序断口地址 → 堆栈(目的:保护主程序的断点。细节:先压入断口的段基址 CS,再压入断口的偏移量 IP) ④ CPU 从4n~4n+3
单元取出n
型服务程序入口地址 → CS:IP(目的:转入n
型中断服务程序。细节:4n~4n+1单元的内容 → IP,后两个单元的内容 → CS) ⑤ CPU 根据新的 CS:IP 的值转向相应的n
型中断服务子程序。 ⑥ 当服务子程序执行完毕,执行中断返回指令。中断返回指令的功能是按顺序恢复断点处的 IP 值、CS 值和之前保护的相应中断前的标志寄存器内容 → 标志寄存器。 ⑦ CPU 根据恢复后的 CS:IP 的值返回到断点,继续执行主程序。
● :当 CPU 获得中断类型码后,在中断向量的引导下,CPU 即可执行相应的中断服务子程序。:
● :在上图中的 “①②③④” 分别对应 “中断的处理过程” 的相应步骤,对照着看更清晰。注意其中的 “NEXT
”是一个程序名。
● :
ISR PROC
保护现场
中断处理
恢复现场
中断返回
ISR ENDP
二、多级中断管理——基础知识点
2.1 中断优先与中断分级
● :当有多个中断源在同一时刻提出请求时,CPU 对中断响应的次序。
● 中断响应的次序是用排队器硬件实现的,。可以根据需要,由程序控制改变实际的中断处理次序。
"80X86响应中断的优先级如下:"
中断类型 优先级
除法错中断 最高
软件中断INT n ↓
断点中断 ↓
溢出中断INTO ↓
NMI中断 ↓ ; 硬件中断
INTR中断 ↓ ; 硬件中断
单步中断 最低
2.2 禁止中断、中断屏蔽与中断嵌套
● :产生中断请求后,CPU 不能中断现行程序的执行。
● :使程序有选择地封锁部分中断,而允许其余部分仍可能够响应(即能够响应中断请求)。
● :在执行中断服务程序时,仍可再响应中断申请。(类似与 C 语言的函数嵌套)
2.3 中断系统具备的基本功能
① 对于硬件中断,接口电路应具备 “屏蔽” 和 “开放” 的功能,这种功能由程序员通过软件去控制。
② 能实现中断判优(中断排队)。即当有多个中断源提出请求时,应能优先响应高级别的中断源。
③ 能够实现中断嵌套。
④ 响应中断后,能自动转入中断处理,处理完毕能自动返回断点。
三、80X86的中断指令
3.1 开中断指令(STI) 与 关中断指令(CLI)
▶ :使 F 寄存器中I
标志置1
,CPU 处于开中断状态。
▶ :使 F 寄存器中I
标志置0
,CPU 处于关中断状态。
3.2 软件中断指令 INT n
■ :INT n
● :n
为中断类型码,是0~255
之间有定义的无符号整数。 ▶:无条件转向n
型中断服务子程序。
● :【即 CPU 响应软件中断的详细过程】 ① F 寄存器 → 栈(保存INT n
之前的 F 状态) ② 使 F 中的T
标志置0
—— 禁止单步操作 ③ 使 F 中的I
标志置0
—— CPU 处于关中断状态 ④ 断口地址 → 栈(先:断口基地址(CS) →栈,后:断口偏移地址(IP)→栈) ⑤ CPU 从4n~4n+3
单元取出n
型服务程序入口地址 → IP:CS,从而转入n
型中断服务程序。
3.3 中断返回指令 IRET
● 这个(即IRET
)就是 的那张图里面的里的东西。
▶:依次从栈顶弹出6
个元素 → IP、CS、F。 ● :如果栈顶是INT n
的断口地址,则执行IRET
后,才能返回断点,否则不能。
● :
● :存储地址是上低下高。若进程进行的是RET
,要分远程和进程两种情况,远程的RET
是:从栈顶弹出4
个元素 → IP、CS 即可。进程的RET
是:从栈顶弹出2
个元素 → IP 即可。
3.4 溢出中断指令 INTO
▶:先判断 F 寄存器中O
标志位是否为1
,如是则直接调用类型为4
的中断子程序,用以处理溢出中断的情况(后续将会详细学到)。
四、 中断控制器8259A ⭐⭐⭐
● 由前面的学习可知,外部中断是由 CPU 以外的中断请求而引发的。而且 CPU 也只有一个引脚INTR
用来接收外部的可屏蔽硬件中断请求。
● 为了管理多个外部发来的中断源,Inter 公司设计了专门的配套芯片 “”(我们将对其进行学习)。
4.1 8259A的功能
① 1
片 8259A 中断控制器可以管理8
级外部中断(打个比方,把它比作进城收费ETC收费站,他可以同时开8
个车道,但是能也分级别),并最后向 CPU 提出中断请求。通过级联,采用 “1 主 8 从” 的方式,可扩展管理64
级中断。(1
个在前,8
个接在其后)
② 每一级中断都可以通过设置内部屏蔽字进行屏蔽或允许。(我们把 ”每一级“ 假想成 ”每一通道“ 可能好理解点)
③ 在中断响应周期,8259A 可以向 CPU 提供相应的中断向量。
④ 8259A 是很复杂的中断控制器,可以通过编程从中断触发方式、中断屏蔽方式、中断优先级管理方式、中断结束方式和总线连接5
个方面对中断进行管理。
4.2 8259A的结构 ⭐⭐
● :
4.2.1 8259A 的八个重要的基本部件
① :一个8
位的寄存器。IRR 的 D0 ~ D7 位分别对应着 IR0 ~ IR7 引脚 ▶:寄存引脚 IR0 ~ IR7 的中断请求信号。(IRR 的 Di 位置为1
时,表明 IRi 引脚上有了中断请求信号 ) ② :一个8
位的寄存器。IMR 的 D0 ~ D7 位分别对应着 IR0 ~ IR7 引脚。 ▶:寄存程序员写入的中断屏蔽字。(屏蔽字某位 = 1 时,即 IMRi 位 = 1 时,则与该位对应的中断请求信号(IRR 的 Di 位)就不能送到中断优先权电路) ③ :一种控制电路。 ▶:比较同时送达优先权电路的中断请求,哪一个级别最高。然后通过判优 “选中” 其中级别最高的中断源,然后通过控制电路,从INT
端向 CPU 提中断请求。
● :
● :“IRR 的 D0 ~ D7 位” 分别与 “IMR 的 D0 ~ D7 位的非” 相与。(比如,当 IMR 的 D0 = 1 时,则 IRR 的 D0 被屏蔽)
● :
“样例一:”
MOV AL, 11111100B
OUT 屏蔽寄存器(IMR)的口地址, AL
;屏蔽 IRR7 ~ IRR2 的中断请求, 只开放 IRR1,IRR0 的中断请求
“样例二:”
IN AL, 屏蔽寄存器(IMR)的口地址
AND AL, 11110111B
OUT 屏蔽寄存器(IMR)的口地址, AL
;开放 IRR3 的请求, 对其它位的请求保持原状态
④ :它是 8259A 内部的控制器。它有一组寄存初始化命令字(ICW1 ~ ICW4)的寄存器和一组寄存器操作命令字(0CW1 ~ 0CW3)的寄存器,以及相关的逻辑控制(开关)。 ▶:寄存一组初始化命令字和操作命令字,通过译码产生内部控制信号。 ▶:当判优电路选中一个中断源时,向 CPU 提中断请求 (INT
) ▶:当通过 I N T A ‾ \overline{INTA} INTA 接收 CPU 送来的中断响应信号时,中断响应信号 I N T A ‾ \overline{INTA} INTA是2
个连续的负脉冲。
⑤ :一个8
位的寄存器。ISR 的 D0 ~ D7 位与 IRR 的 D0 ~ D7 位一一对应。
▶:记录 CPU 正为哪一个中断源服务。(例如:通过判优电路 IRR 中 D0 位的请求被选中时,8259A 会向 CPU 发出中断请求,并通过 I N T A ‾ \overline{INTA} INTA 收到第一个中断响应信号后,ISR 的 D0 位将置1
,IRR 的 D0 位将置0
) ● :当 ISR 的 D0 位置1
时,表明 CPU 正在准备(或正在)执行 IR0 的(中断)服务(子)程序;反之,如果 ISR 的 D0 位由1
→0
时,表明 IR0 的中断服务程序执行完了。 ● :所以 ISR 的每一位都是响应中断源的中断服务标志位。
⑥ :一个暂存数据的存储器。 ▶:完成与 CPU 数据线的配接 ▶:接收初始化命令字、操作命令字 ▶:当收到第二个中断响应脉冲时,通过它们向 CPU 送出被选中的中断源的中断类型码n
。在这之后,CPU 会从 4n+0~4n+3
单元取出n
型中断向量, 从而转入n
型服务程序。
⑦ :一种控制读写的功能模块。 ▶:接收片选信号 C S ‾ \overline{CS} CS、端口地址选择信号 A0 和读写控制信号 R D ‾ \overline{RD} RD、 W R ‾ \overline{WR} WR。
⑧ ▶:一位 8259A 可以管理8
级中断,二片 8259A “级联” 可管理15
级中断,级连/缓冲比较器是为完成多片8259A
级联设置的模块。 ● :级联应用时,8259A 一片主片最多可接8
片从片,扩展到64
级中断。 ● :级联连接时,从片的INT
信号接主片的 IR0 ~ IR7 之一,并确定了在主片中的优先级,从片的 IR0 ~ IR7 接外设的中断请求信号,最终即可确定64
个优先级。 ● :以级联方式工作时,主 8259A 的 S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN 接高电平,从 8259A 的 S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN 接低电平。由初始化命令字 ICW4 来设置缓冲方式或非缓冲方式。
4.2.2 8259A 的外部引脚
● 8259A 是一个含有28
个引脚的双列直插式芯片,:
● :
① : [1] D0 ~ D7:(双向三态)数据线。(与 CPU 数据总线直接相连,或与外部数据总线缓冲器相连) [2] W R ‾ \overline{WR} WR、 R D ‾ \overline{RD} RD:读写命令信号线,与 CPU 的读/写控制信号相连。 [3] CS:片选信号线,通常接 CPU 的高位地址总线或地址译码器的输出。 [4] INT:中断请求输出端。用于向 CPU 发出中断请求信号。 [5] I N T A ‾ \overline{INTA} INTA:中断响应输入信号。用于接收 CPU 发来的中断响应。 [6] A0:地址线。通常接 CPU 低位地址总线,。该地址线与 W R ‾ \overline{WR} WR、 R D ‾ \overline{RD} RD信号配合,可读写 8259A 内部相应的寄存器,用于选择内部端口,对应图表如下:
② : IR0 ~ IR7:与外设的中断请求信号相连,通常 IR0 的优先权最高,IR7 的最低。
③ : [1] CAS0 ~ CAS2:级联信号线。主片为输出,从片为输入,与 S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN 配合来实现级联。 [2] S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN:主/从允许缓冲线。( 在缓冲工作方式中,用作输出信号,以控制总线缓冲器的接受( o v e r l i n e E N = 1 overline{EN}=1 overlineEN=1)和发送( o v e r l i n e E N = 0 overline{EN}=0 overlineEN=0)。当数据从 CPU 送往 8259A 时, S P ‾ / E N ‾ \overline{SP}/\overline{EN} SP/EN 输出为高电平;当反过来输送时为低电平。而在非缓冲工作方式中,它用作输入信号,表示该 8259A 是主片( S P ‾ = 1 \overline{SP}=1 SP=1)或从片( S P ‾ = 0 \overline{SP}=0 SP=0) )
④ : [1] VCC:接+5V
的电源。 [2] GND:接地线。
4.2.3 8259A 的工作流程 —— CPU响应可屏蔽硬件中断的过程
● 8259A 的中断过程就是(微型)计算机系统响应可屏蔽硬件中断的过程。我们。【初始情况如下图】
● : ① 假设 IR0、IR6、IR7 上同时有3
个中断请求信号。则 IRR 的 D0、D6、D7 都会由0
变为1
。 ② 因为 IMR 的 D0 = 0、D6 = 1、D7 = 0,则 IR0 和 IR7 上的中断请会被送到优先权电路,而 IR6 上的中断请求会被屏蔽。(在这之前,程序员事先已经将中断屏蔽字写入中断屏蔽寄存器 ——> 目的在于决定哪些中断请求能够送到优先权电路) ③ 假设 IR0 优先级高于 IR7,则排队结果选中 IR0 向 CPU 发出中断请求信号。(注:8259A 由INT
引脚向 CPU 发出信号) ④ 假如当前 CPU 满足响应可屏蔽中断的条件,则可响应 IR0 中断,并向 8259A 发送两个连续的脉冲信号。(8259A 从引脚 I N T A ‾ \overline{INTA} INTA收到信号) ⑤ 8259A 收到第1
个脉冲信号(中断响应信号)后,会使 ISR 的 D0 有0
变为1
,同时 IRR 的 D0 有1
变为0
。(注:8259A 从引脚 I N T A ‾ \overline{INTA} INTA收到信号) ⑥ 8259A 收到第2
个脉冲信号后(中断响应信号),会向 CPU 发送对应的中断类型码n
。 ⑦ CPU 得到中断类型码n
(假设这里为08H)后,会在中断向量表中找到对应中断向量,转而执行对应中断服务(子)程序,在服务程序中对通过 IR0 提出中断请求的外设服务。(在实模式下,CPU 会从4×n~4×n+3
单元取出该中断源的中断向量 → IP、CS,从而引导 CPU 执行中断源对应的中断服务子程序) ⑧ 8259A 的 ISR 的 D0 会由1
变为0
,表示对来自 IR0 上的中断请求服务完毕。同时,CPU 在执行中断服务子程序的最后一条指令IRET
时,将返回被中断的程序继续原来的任务。当然,在这个例子中,在对 IR0 上的中断请求服务完成后,假如 8259A 的 IR7 上的中断请求仍然维持有效,则可以开始以同样的过程处理 IR7 的中断请求。
4.3 8259A的中断管理方式
● 8259A 对中断的管理涉及多方面,每方面都有多种工作方式,如下图所示:
● :用户可根据自己的需要,通过 8259A 初始化时写入初始化命令字和操作命令字来设置选择相应的工作方式。
4.3.1 中断触发方式
● :IRi 出现上升沿表示有中断请求。
● :IRi 出现高电平表示有中断请求。
4.3.2 中断屏蔽方式
● :IMR 屏蔽字决定了允许或禁止某位 IRi 所对应的中断:IMR 的 Di = 1表示禁止, Di = 0 表示允许。
● :提供了允许较低优先级的中断能够得到响应的特殊手段。
▶:假定当前正在处理 IR6,先进入特殊屏蔽方式,然后设置 IMR 的 D6 = 1。这时,除 IR6 外的所有中断请求均能得到响应。
◆ :特殊屏蔽方式中只能用SEOI
命令结束中断。
4.3.3 中断优先级管理方式
● :所有中断请求 IRi 的中断优先级固定不变,默认优先级顺序从高到低为 IR0 ~ IR7。
● :中断源轮流处于最高优先级,即自动中断优先级循环。当某中断请求 IRi 被处理后,其优先级别自动降为最低,原来比它低一级的中断上升为最高级。
4.3.4 中断嵌套方式
● :在中断处理过程中允许被更高优先级的事件所中断称为中断嵌套。8259A 有如下两种中断嵌套方式。
● :当某一中断正被处理时,只有更高优先级的事件可以打断当前的中断处理过程而被服务。
● :当某一中断正被处理时,允许同级或更高优先级的事件可以打断当前的中断处理过程而被服务。
4.3.5 中断结束处理方式
● :当某一 IRi 中断被服务时,ISR 中的相应位 Di = 1。当服务结束后,则必须清零该 Di 位。注:使 ISR 中的 Di = 0 是通过向 8259A 发出中断结束命令(EOI
命令)实现的。
● : ① 自动EOI(即自动EOI方式:AEOI
) —— 在第2
个 I N T A ‾ \overline{INTA}
标签: sl连接电缆26针db直插连接器