微机原理及应用第20讲:深入解析中断系统与接口技术实战
欢迎进入微机原理及应用第20讲的核心领域。在前面的课程中,我们已经深入探讨了8086/8088 CPU的内部结构、寻址方式以及指令系统。然而,真正的微机系统不仅仅是CPU的独角戏,它需要与外部世界进行高效、实时的数据交换。这就是本讲的核心主题——中断系统与I/O接口技术。
在本讲中,我们将解决一个关键问题:当多个外部设备同时请求CPU服务时,系统如何优雅地处理?为什么现代操作系统能实现多任务并发?答案就藏在中断机制和DMA传输之中。无论你是准备考研的学生,还是从事嵌入式开发的工程师,掌握这些知识都是构建坚实微机系统理论的基石。
⚡ 核心目标
掌握8086中断类型、中断向量表结构及中断处理流程。
⚙️ 关键硬件
深入理解可编程中断控制器8259A的工作原理及编程初始化。
? 高速传输
对比I/O查询、中断、DMA三种方式,掌握8237A DMA控制器应用。
一、 中断系统基础:微机系统的“神经反射”
中断(Interrupt)是微机系统中实现并行操作、实时控制和故障处理的核心机制。想象一下,当你正在打字(CPU执行主程序)时,突然按下电源键(外部中断),系统必须立即暂停打字,保存当前状态,去处理关机程序(中断服务程序),处理完毕后再回来继续打字。这就是中断的本质。
1.1 中断源分类
在微机原理及应用第20讲中,我们将中断源分为两大类:
- 内部中断(软中断):由CPU内部指令引起,如除法错误(INT 0)、单步调试(INT 1)、中断指令INT n等。这类中断通常与程序逻辑错误有关。
- 外部中断(硬中断):由外部设备通过CPU的中断请求引脚(如INTR、NMI)发出。例如键盘输入、定时器溢出、磁盘读写完成等。这是I/O接口技术主要关注的领域。
1.2 中断向量表(IVT)
8086 CPU的中断向量表位于内存最低1KB处(00000H-003FFH)。每个中断向量占用4个字节,前2字节为偏移地址(IP),后2字节为段地址(CS)。系统共有256个中断向量,对应0-255号中断。
| 中断类型号 | 中断名称 | 触发原因 | 典型应用场景 |
|---|---|---|---|
| 00H | 除法错误 | 除数为0或结果溢出 | 程序调试、异常处理 |
| 01H | 单步中断 | TF标志位置1 | 单步调试程序 |
| 08H | 硬件定时中断 | 8253/8254定时器溢出 | 实时时钟、系统心跳 |
| 09H | 键盘中断 | 键盘扫描码输入 | 用户输入处理 |
| 33H-3FH | 用户自定义 | INT n指令 | 软件功能调用 |
1.3 中断处理流程
CPU响应中断后,必须执行一系列严格的操作,这被称为“中断响应周期”:
- 中断请求响应:CPU在每个机器周期的S5期间查询中断请求。
- 中断响应:若满足条件,CPU发出INTA信号,从数据总线上读取中断类型码。
- 保护现场:CPU自动将FLAGS、CS、IP压栈,并清除IF和TF标志(对于可屏蔽中断)。
- 执行中断服务程序:从中断向量表中读取入口地址,跳转到服务程序执行。
- 中断返回:执行IRET指令,弹出IP、CS、FLAGS,恢复现场。
二、 8259A可编程中断控制器:中断管理的“指挥官”
8086 CPU本身只有一个可屏蔽中断请求引脚INTR,但实际系统中可能有多个中断源。这就需要8259A这样的可编程中断控制器(PIC)来管理多个中断请求,进行优先级判断、屏蔽控制和向CPU发送中断类型码。
2.1 8259A内部结构
8259A内部包含以下关键寄存器:
- IRR(中断请求寄存器):锁存来自IR0-IR7的中断请求信号。
- ISR(中断服务寄存器):记录当前正在被服务的中断,用于嵌套管理。
- IMR(中断屏蔽寄存器):决定哪些中断被屏蔽,哪些被允许。
2.2 初始化命令字(ICW)
系统上电后,必须对8259A进行初始化,设置ICW1-ICW4。这是微机原理及应用第20讲的难点和重点。
ICW1:初始化控制字1
写入地址:偶地址端口。主要确定触发方式(边沿/电平)和级联模式(是否级联其他8259A)。
; 示例:边沿触发,非级联,需要ICW4
MOV AL, 13H ; ICW1: 1001 0011B (ED4=0, SNGL=0, IC4=1)
OUT 20H, AL ; 写入主片端口
ICW2:中断类型码基值
写入地址:奇地址端口。设置中断类型码的高5位(D7-D5),低3位由IR0-IR7自动填充。
; 示例:设置IR0对应类型码20H
MOV AL, 20H ; ICW2: 0010 0000B
OUT 21H, AL ; 写入主片端口
; 结果:IR0->20H, IR1->21H, ..., IR7->27H
ICW3:级联控制字
仅在主片需要写入。用于标识哪些IR引脚连接了从片。例如,若IR2连接从片,则ICW3=00000100B。
ICW4:工作方式控制字
确定工作模式。在8086系统中,通常设置为8086模式(EO=0, AEO=0, BUF=0, SFNM=0)。
MOV AL, 01H ; ICW4: 8086模式
OUT 21H, AL
2.3 中断结束命令(EOC)
中断服务程序执行完毕后,必须向8259A发送EOC信号,以清除ISR中对应的位,允许后续中断。常用指令为:
MOV AL, 20H ; EOC命令
OUT 20H, AL ; 写入主片端口
三、 DMA技术:高速数据传输的“高速公路”
在微机原理及应用第20讲的后续部分,我们讨论I/O数据传输方式。除了程序查询和中断方式,DMA(直接存储器访问)是最高效的方式,特别适用于大批量数据的高速传输。
3.1 DMA工作原理
DMA控制器(如8237A)接管总线控制权,直接在I/O设备和内存之间传输数据,无需CPU干预。CPU仅在传输开始前(初始化)和结束后(检查状态)参与。
3.2 8237A关键特性
- 4个通道:CH0-CH3,每个通道可独立工作。
- 传输模式:单次传输、块传输、请求传输、循环传输。
- 地址递减/递增:支持内存地址自动更新。
步骤1:初始化8237A
设置模式寄存器、通道掩码、初始地址和计数值。
步骤2:外设发出DMA请求
I/O设备通过DREQ引脚向8237A发出请求。
步骤3:总线请求与授权
8237A向CPU发出HLDA信号,CPU释放总线,8237A获得总线控制权(HOLD有效)。
步骤4:数据传输
8237A发出读写信号,直接控制数据在I/O和内存间流动,同时自动更新地址和计数。
步骤5:传输结束
计数为0时,8237A撤销DACK信号,CPU收回总线控制权。
四、 常用I/O接口芯片:连接外设的“桥梁”
除了中断和DMA,微机原理及应用第20讲还涵盖了常用的并行和串行接口芯片。这些芯片解决了CPU与外设之间速度、电平、数据格式不匹配的问题。
4.1 8255A可编程并行接口
8255A是最常用的并行接口芯片,包含A、B、C三个端口,可通过编程选择工作方式(方式0:基本输入输出;方式1:选通输入输出;方式2:双向总线)。
4.2 8253/8254可编程定时器/计数器
用于产生精确的时间延迟、方波信号或作为实时时钟。每个通道可工作在6种方式下,如方式3(方波发生器)和方式2(分频器)。
4.3 8251A可编程串行通信接口
用于实现异步或同步串行通信,支持波特率生成、数据帧格式配置等。是串口通信(如RS-232)的核心芯片。
? 8255A应用示例
控制LED显示、读取键盘矩阵、连接打印机等。常用于实验箱的基础I/O扩展。
⏱️ 8253应用示例
产生1ms定时中断、PWM波形生成、音频频率合成等。
? 8251A应用示例
PC串口通信、Modem控制、工业现场总线通信等。
五、 考研复习与实战指南
对于准备考研的同学,微机原理及应用第20讲的内容在《计算机组成原理》和《微机接口技术》科目中占据重要地位。以下是高频考点总结:
5.1 高频考点清单
- 中断优先级判断:给定多个中断源和8259A连接方式,判断响应顺序。
- 中断向量计算:根据中断类型码计算中断服务程序入口地址。
- 8259A初始化编程:写出完整的ICW1-ICW4初始化代码。
- DMA与中断对比:分析两种传输方式的优缺点及适用场景。
- 8255A工作方式选择:根据外设需求选择方式0/1/2并编写控制字。
5.2 典型真题解析
题目:设8259A主片的OCW2写入值为90H,问此时发生了什么操作?
解析:90H二进制为1001 0000B。OCW2的D7-D5为100,表示是OCW2。D4-D2为010,表示ISR中最低位置1为EOC。D1-D0为00,表示特定中断结束。因此,该操作是将ISR中最低位置1的中断标记为结束。
5.3 编程实战建议
建议在实验环境中,使用汇编语言编写完整的中断服务程序,包括保护现场、处理逻辑、恢复现场和IRET。同时,尝试配置8255A实现LED流水灯,或通过8253产生定时中断实现秒表功能。
七、 常见问题解答(FAQ)
在8086系统中,中断向量表位于内存的最低1KB区域(00000H-003FFH)。每个中断向量占4个字节,其中前两个字节存储中断服务程序的偏移地址,后两个字节存储段地址。系统中共有256个中断向量,对应0-255号中断。
8259A初始化通常需要设置4个初始化命令字(ICW1-ICW4)。ICW1确定边沿/电平触发及级联模式;ICW2设置中断类型码基值;ICW3用于级联配置;ICW4设置工作模式(如8086模式、自动结束中断等)。
DMA(直接存储器访问)传输允许外设与内存之间直接进行高速数据交换,无需CPU干预指令执行。相比中断传输,DMA减少了CPU的中断响应开销,提高了数据传输效率,特别适合大批量数据的高速传输场景,如磁盘读写。
在中断服务程序末尾,必须执行IRET指令。对于8259A,还需要发送EOC(中断结束)命令,以清除ISR中对应的位。只有当ISR中该位被清除,CPU才能响应同一级别的中断请求。
八、 总结与展望
通过微机原理及应用第20讲的学习,我们深入理解了中断系统和接口技术的基本原理。从8086的中断向量表到8259A的编程,从DMA的高速传输到8255A/8253/8251的具体应用,这些知识构成了微机系统硬件层面的核心骨架。
掌握这些内容,不仅有助于应对考试,更为后续学习操作系统、嵌入式系统开发以及计算机体系结构打下了坚实基础。建议同学们结合实验,亲手编写中断服务程序和接口控制程序,将理论知识转化为实践能力。
希望本讲内容能帮助你彻底攻克微机原理及应用第20讲的难点。如有疑问,欢迎在评论区讨论。