Files
final-exam/接口与通讯技术/重点复习/填空题专题/8259A中断管理基础.md
T

146 lines
5.0 KiB
Markdown
Raw Normal View History

2026-06-28 14:53:55 +08:00
---
tags:
- 接口与通讯技术
- 8259A
- 中断管理
- 重点复习
create time: 2026-06-28 15:00
---
# 8259A 中断管理基础
## 概述
82C59A(8259A)是 x86 系统中最核心的中断管理芯片,在 3 套试卷中出现了 **6 道填空题**,是最高频考点。本专题聚焦填空题常考的四个核心知识点:单片管理级数、级联扩展、中断类型号传递机制以及中断号取值范围。
## 正文
### 1. 单片管理级数
一片 82C59A 内部有 **8 个中断请求输入引脚**(IR0 ~ IR7),因此单片最多管理 **8 级**中断。
| 引脚 | 编号 | 说明 |
|------|------|------|
| IR0 | 最高优先级 | 默认优先级最高 |
| IR1 ~ IR6 | 中间优先级 | 依次递减 |
| IR7 | 最低优先级 | 默认优先级最低 |
> [!tip] 记忆口诀
> "一片 59A 八个脚,IR 零到 IR 七,管理八级中断源。"
### 2. 级联扩展
多片 82C59A 可以通过级联方式扩展中断管理能力:
```mermaid
graph TB
subgraph 单片
A1["IR0~IR7"] --> A2["8 级中断"]
end
subgraph 两级级联
B1["主片 IR0~IR7"] --> B2["从片 1~8"]
B2 --> B3["每片从片 8 级"]
B3 --> B4["最多 64 级"]
end
```
| 配置 | 中断级数 | 说明 |
|------|:--------:|------|
| 单片 | **8 级** | IR0~IR7 全部直接使用 |
| 一主一从 | 15 级 | 从片占用主片 1 个 IR(8+8-1=15) |
| 两级级联(最多) | **64 级** | 主片 8 个 IR 各接一片从片,8×8=64 |
> [!important] 考试关键点
> "两级级联最多可管理 **64 级**中断"——这是理论最大值(8×8=64),不是实际可用值。实际一主一从只有 15 级(因为主片要留一个 IR 给从片)。
>
> > [!question] 思考题
> > 为什么理论最大是 64 级,而不是 8×7=56 级?
> >
> > 答:64 级是理想情况——主片 8 个 IR 各接一片从片(8×8=64),此时主片的所有 IR 都被从片占用,没有留给外部设备的中断引脚。如果主片还要留引脚给外部设备,则实际可用级数 = 8 + 外部引脚数×0 + 从片数×8,例如一主一从 = 7 + 8 = 15 级。
### 3. 中断响应:两个 INTA 脉冲
当可屏蔽中断被响应时,CPU 发出两个 **INTA(中断应答)负脉冲**,82C59A 在第二个脉冲中向 CPU 提供中断源的**中断类型号(中断号)**:
```mermaid
sequenceDiagram
participant CPU as "CPU"
participant PIC as "82C59A"
participant IVT as "中断向量表"
CPU->>PIC: "第一个 INTA 负脉冲"
Note over PIC: "锁定最高优先级中断<br/>ISR 对应位置 1<br/>IRR 对应位清 0"
PIC->>CPU: "无数据"
CPU->>PIC: "第二个 INTA 负脉冲"
PIC->>CPU: "中断类型号(8 位)"
CPU->>IVT: "类型号 × 4 → 查向量表"
IVT->>CPU: "CS:IP 中断服务入口"
```
> [!important] 两个 INTA 脉冲的区别
>
> | 脉冲 | 82C59A 的操作 | CPU 获得的数据 |
> |------|-------------|--------------|
> | **第一个 INTA** | 锁定优先级、更新 ISR/IRR | 无 |
> | **第二个 INTA** | 将中断类型号送上数据总线 | **中断类型号**(8 位) |
### 4. 中断号取值范围
8086 微机的中断系统为每个中断源分配一个**中断号(中断类型号)**,中断号为 8 位,取值范围为:
$$00H \sim FFH \quad (0 \sim 255)$$
共 **256** 个中断向量,每个向量占 4 字节(CS:IP),中断向量表位于内存最低端:
| 项目 | 值 |
|------|-----|
| 中断号范围 | 00H ~ FFH(0 ~ 255) |
| 向量表起始地址 | 00000H |
| 向量表大小 | 256 × 4 = 1024 字节 = 1KB |
| 向量表结束地址 | 003FFH |
| 向量地址计算 | 中断号 × 4 |
```mermaid
graph LR
A["中断号 N"] --> B["N × 4"]
B --> C["向量地址"]
C --> D["00000H + N×4"]
D --> E["4 字节: IP低 IP高 CS低 CS高"]
```
> [!example] 计算示例
> 中断号 08H 的向量地址 = 08H × 4 = **20H**,存放在 00020H~00023H 四个字节。
### 5. 中断类型号分布
| 中断号范围 | 用途 |
|----------|------|
| 00H~07H | 内部中断(除法错误、单步等) |
| 08H~0FH | 主 82C59A 管理的外部中断(IRQ0~IRQ7) |
| 70H~77H | 从 82C59A 管理的外部中断(IRQ8~IRQ15) |
| 10H~FFH | 软中断(INT n)及系统保留 |
### 6. 真题回顾
> [!example] 【真题】一片 82C59A 能管理\_\_\_\_\_\_级中断。
>
> **答案**:8
> [!example] 【真题】一片 82C59A 能管理 8 级中断,若采用级联方式,两级级联最多可管理\_\_\_\_\_\_级中断。
>
> **答案**:64
> [!example] 【真题】当可屏蔽中断被响应时,82C59A 在第二个中断响应负脉冲中,向 CPU 提供中断源的\_\_\_\_\_\_。
>
> **答案**:中断类型号(中断号)
> [!example] 【真题】8086 微机的中断系统为每个中断源分配一个中断号,中断号的取值范围是\_\_\_\_\_\_。
>
> **答案**:00H~FFH(0~255)
## 关联笔记
- [[82C59A中断结束方式]]
- [[IO端口编址方式]]
- [[82C37A DMA控制器]]
- [[接口与通讯技术/试题册/index|试题册索引]]