vault backup: 2026-06-28 16:34:33

This commit is contained in:
2026-06-28 16:34:33 +08:00
parent 9813fd4f6c
commit e57e5a9bdb
6 changed files with 672 additions and 0 deletions
@@ -0,0 +1,88 @@
---
tags:
- 接口与通讯技术
- 82C37A
- DMA
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# DMA 控制器 82C37A 选择题考点
## 概述
82C37A 是选择题中出现频率最高的芯片(3套试卷共考9题)。核心考点围绕**状态周期、握手信号、传输方式、初始化方式字、字节计数器**五个维度展开。
## 正文
### 1. DMA 状态周期(S1~S4)
```mermaid
graph LR
S1["S1<br/>输出地址高8位<br/>仅高8位变化时才插入"] --> S2["S2<br/>输出地址低8位<br/>读/写控制有效"] --> S3["S3<br/>数据传输"] --> S4["S4<br/>周期结束"]
style S1 fill:#ffd,stroke:#333,color:#000
```
> [!important] 高频考点
> **S1 状态只有在存储器地址的高 8 位发生变化时才会出现。** 地址高8位不变时可跳过 S1,提高传输效率。
### 2. DMA 握手信号(4个关键信号)
| 信号 | 方向 | 含义 | 考试角度 |
|------|------|------|----------|
| **DREQ** | I/O → DMA | I/O 设备**请求** DMA 传输 | 请求源 |
| **HRQ** | DMA → CPU | DMA **请求**占用总线 | 尚未获得总线 |
| **HLDA** | CPU → DMA | CPU **确认**交出总线 | **标志 DMA 已获得总线控制权** ✅ |
| **DACK** | DMA → I/O | DMA **确认**选中该 I/O | **表示该 I/O 被选中** ✅ |
> [!question] 思考题
> HRQ 和 HLDA 有什么区别?为什么不能只靠 HRQ 判断 DMA 获得了总线?
>
> 答:HRQ 是 DMA 的"请求",HLDA 是 CPU 的"应答"。只有 CPU 发出 HLDA 后,DMA 才真正获得总线控制权。HRQ 有效只表示"我想要",HLDA 有效才表示"你得到了"。
### 3. DMA 四种传输方式
| 方式 | 释放总线条件 | 适用场景 |
|------|-------------|----------|
| **单字节方式** | 每传完 **1 个字节**立即释放 | CPU 需频繁介入 |
| **请求方式** | **DREQ 无效时释放**(DREQ 有效则连续传) | I/O 速度不确定 |
| **块方式** | 整个数据块传完才释放 | 大批量连续传输 |
| 级联方式 | 用于多片级联 | 扩展 DMA 通道 |
> [!tip] 解题口诀
> - 题干出现"每操作一个数据就释放"→ **单字节方式**
> - 题干出现"DREQ 是否维持有效决定是否释放"→ **请求方式**
### 4. 初始化方式字:DMA 读 vs DMA 写
判断依据:**以存储器的视角**决定读/写。
```mermaid
graph TD
A["数据采集<br/>外设→存储器"] --> B["对存储器是写操作<br/>→ DMA 写"]
C["数据输出<br/>存储器→外设"] --> D["对存储器是读操作<br/>→ DMA 读"]
style B fill:#dfd,stroke:#333,color:#000
style D fill:#dfd,stroke:#333,color:#000
```
> [!example] 真题
> 采用 DMA 方式进行数据采集(外设→存储器),对 82C37A 初始化时应按照 **DMA 写** 写入方式字。
### 5. 字节计数器
82C37A 的字节计数器为 **8 位**,范围 0~255:
$$\text{实际传输字节数} = \text{装载值} + 1$$
- 传 256 个数据 → 装载值 = 256 − 1 = **0FFH**
- 传 1 个数据 → 装载值 = **00H**
> [!warning] 易错点
> 计数器是"减1计数器",从装载值递减到 0 时传输结束,共传输 N+1 个字节。不是装载 N 就传 N 个!
## 关联笔记
- [[接口与通讯技术/复习文档/82C37A DMA控制器]]
- [[DMA控制器82C37A|填空题专题:82C37A DMA控制器]]
- [[中断控制器82C59A 选择题考点]]
@@ -0,0 +1,131 @@
---
tags:
- 接口与通讯技术
- x86
- 指令系统
- 寄存器
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# x86 指令系统与寄存器 选择题考点
## 概述
x86 指令系统与寄存器在 3 套试卷中共出现 7 题,是考点最分散但也最有规律的部分。核心围绕**段寄存器功能、寻址方式、隐含寄存器、标志位计算、位操作指令、堆栈操作**六个方向。
## 正文
### 1. 段寄存器功能分工
| 段寄存器 | 全称 | 用途 | 关联指令/操作 |
|----------|------|------|---------------|
| **CS** | Code Segment | 代码段 | 取指令 |
| **DS** | Data Segment | **数据段(默认数据段基址)** | 访问变量 |
| **SS** | Stack Segment | 堆栈段 | PUSH/POP/CALL |
| **ES** | Extra Segment | 附加段 | 串操作目的段 |
> [!important] 高频考点
> **DS(数据段寄存器)用于存放当前数据段段首址。** 访问内存变量时默认使用 DS 作为段基址。
### 2. 寻址方式辨析
| 寻址方式 | 示例 | 操作数来源 |
|----------|------|-----------|
| 寄存器 | `MOV AX, BX` | 寄存器中 |
| 寄存器间接 | `MOV AX, [BX]` | 内存,地址在寄存器 |
| 变址 | `MOV AX, [SI+10H]` | 内存,SI/DI + 偏移 |
| **立即数** | `MOV AX, 1234H` | **指令中直接编码的常数** |
| **I/O 间接** | `IN AL, DX` | **I/O 端口地址在 DX 中** |
> [!question] 思考题
> `MOV AX, 1234H` 中 1234H 是立即数,`MOV AX, [1234H]` 中 1234H 是什么?
>
> 答:后者是**直接寻址**,1234H 是内存地址,CPU 会去访问该内存单元取数据。方括号 `[]` 是关键区别。
### 3. 隐含寄存器
| 指令 | 隐含使用的寄存器 | 作用 |
|------|:---:|------|
| **LOOP** | **CX** | 循环计数器,每次减 1,为 0 时退出 |
| I/O 间接寻址 | **DX** | 存放 16 位 I/O 端口地址 |
| MUL/DIV | AX | 乘法被乘数/除法被除数 |
| XLAT | BX + AL | 查表基址 + 偏移 |
> [!tip] 记忆规律
> - **L**OOP → **C**X(都是"循环"相关)
> - I/O 间接 → **D**X(**D**ata e**X**change,数据交换端口)
### 4. 标志位计算(ADD 指令)
以 `ADD AL, BL` 为例:
```
AL = 58H = 0101 1000
BL = 96H = 1001 0110
────────────────────
1110 1110 = EEH
```
| 标志位 | 判断规则 | 本例结果 |
|--------|----------|----------|
| **SF**(符号标志) | 结果最高位 D7 | D7=1 → **SF=1** |
| **ZF**(零标志) | 结果是否为 0 | EEH≠0 → **ZF=0** |
| CF(进位标志) | 最高位是否有进位 | 无进位 → CF=0 |
| OF(溢出标志) | 两个同号数相加结果变号 | 58H正+96H负→不同号,OF=0 |
### 5. 位操作指令
**通用规则:AND 清零,OR 置位,XOR 取反。**
| 目标 | 指令模板 | 掩码构造规则 |
|------|----------|-------------|
| 某位清零 | `AND AL, mask` | 目标位=0,其余=1 |
| 某位置位 | `OR AL, mask` | 目标位=1,其余=0 |
| 某位取反 | `XOR AL, mask` | 目标位=1,其余=0 |
> [!example] 真题
> 将 AL 的 D1 位清零,其他位不变。D1 对应掩码 = `1111 1101` = **0FDH**。
> 答案:**AND AL, 0FDH**
```mermaid
graph TD
A["位操作需求"] --> B["清零某位"]
A --> C["置位某位"]
A --> D["取反某位"]
B --> B1["AND 指令<br/>目标位掩码=0"]
C --> C1["OR 指令<br/>目标位掩码=1"]
D --> D1["XOR 指令<br/>目标位掩码=1"]
style B1 fill:#fdd,stroke:#333,color:#000
style C1 fill:#dfd,stroke:#333,color:#000
style D1 fill:#ffd,stroke:#333,color:#000
```
### 6. 堆栈操作 POP
POP 指令执行步骤(以 `POP AX` 为例):
```
栈顶物理地址 = SS × 10H + SP
POP AX:
① AL ← [SS:SP] (低地址 → 低字节)
SP ← SP + 1
② AH ← [SS:SP] (高地址 → 高字节)
SP ← SP + 1
```
> [!example] 真题
> (SS)=1000H, (SP)=1234H, (11234H)=12H, (11235H)=34H
> 栈顶地址 = 1000H × 10H + 1234H = **11234H**
> POP AX: AL=12H, AH=34H → **AX = 3412H**
> [!warning] 易错点
> POP 弹出顺序:**先弹低字节给低寄存器,再弹高字节给高寄存器**(小端序)。不要搞反 AH 和 AL 的取值!
## 关联笔记
- [[IO端口编址方式|填空题专题:IO端口编址方式]]
- [[寄存器与指令系统|填空题专题:寄存器与指令系统]]
- [[小端序与存储器组织 选择题考点]]
@@ -0,0 +1,92 @@
---
tags:
- 接口与通讯技术
- 82C59A
- 中断
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# 中断控制器 82C59A 选择题考点
## 概述
82C59A 在 3 套试卷中共出现 4 题,核心考点集中在**初始化命令字功能区分**和**中断类型号计算**。记住"每个 ICW 管什么"即可覆盖全部考题。
## 正文
### 1. 四个初始化命令字功能速查
```mermaid
graph TD
A["82C59A<br/>初始化命令字"] --> B["ICW1<br/>基本模式<br/>单片/级联、触发方式"]
A --> C["ICW2<br/>中断类型号高5位"]
A --> D["ICW3<br/>级联标识<br/>仅级联时需要"]
A --> E["ICW4<br/>工作方式<br/>8086模式、EOI方式"]
style B fill:#eef,stroke:#333,color:#000
style C fill:#ffd,stroke:#333,color:#000
style D fill:#fdd,stroke:#333,color:#000
style E fill:#dfd,stroke:#333,color:#000
```
| 命令字 | 功能 | 是否级联必需 | 高频考法 |
|--------|------|:---:|----------|
| **ICW1** | 基本模式(单片/级联、边沿/电平触发) | 否 | 较少考 |
| **ICW2** | **中断类型号的高 5 位**(T7~T3) | 否 | ⭐⭐⭐ |
| **ICW3** | **级联标识**(主片/从片连接关系) | **是** | ⭐⭐ |
| **ICW4** | 工作方式(8086 模式、自动 EOI) | 视情况 | 较少考 |
> [!important] 两条必背结论
> 1. **ICW2 确定中断类型号的高五位**,低 3 位由 IR 编号(000~111)硬件自动填充。
> 2. **ICW3 只有在级联系统中才需要写入**,单片系统中不需要。
### 2. ICW2 与中断类型号的关系
ICW2 的 8 位格式:
```
D7 D6 D5 D4 D3 │ D2 D1 D0
──────────────────┬────────────
高 5 位(程序员设定) 低 3 位(IR 编号自动填入)
```
> [!example] 真题计算
> 某中断系统中,82C59A 的 IR3 对应中断类型号为 63H,求 IR6 对应的类型号。
>
> **解题步骤:**
> 1. IR3 → 63H,则基址 = 63H − 3 = **60H**(即 ICW2 高5位 = 01100)
> 2. IR6 → 60H + 6 = **66H**
>
> 公式:$\text{类型号} = \text{ICW2基址} + \text{IR编号}$
### 3. 中断允许标志 IF(关联考点)
虽然 IF 不属于 82C59A 本身,但常与中断系统一起考:
| IF 值 | 对可屏蔽中断的影响 | 对 NMI/软中断的影响 |
|-------|-------------------|---------------------|
| IF = 0 | CPU **不响应** | **不受影响**,仍可响应 |
| IF = 1 | CPU 可以响应 | **不受影响**,仍可响应 |
> [!question] 思考题
> 为什么 IF 只控制可屏蔽中断,不控制 NMI 和软中断?
>
> 答:NMI 用于处理紧急硬件事件(如掉电、内存校验错),必须保证 CPU 始终能响应;软中断(INT n)是程序主动调用的,不受外部标志控制。IF 只作为"总开关"控制外部可屏蔽中断(INTR)。
### 4. 真题回顾
> [!example] 【真题1】在对 82C59A 进行初始化时,命令字( )只有在级联系统中才需要写入。
> **答案:C. ICW3**
> [!example] 【真题2】在 82C59A 初始化序列中,哪个命令字用来确定中断类型号高五位?
> **答案:B. ICW2**
> [!example] 【真题3】当中断允许标志 IF=0 时,CPU 对( )不予响应。
> **答案:C. 可屏蔽中断**
## 关联笔记
- [[接口与通讯技术/复习文档/8259A中断控制器]]
- [[82C59A中断管理基础|填空题专题:8259A中断管理基础]]
- [[DMA控制器82C37A 选择题考点]]
@@ -0,0 +1,142 @@
---
tags:
- 接口与通讯技术
- 串行通信
- RS-232C
- 8251A
- 波特率
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# 串行通信基础 选择题考点
## 概述
串行通信在 3 套试卷中共出现 4 题,涵盖 **RS-232C 电平标准、波特率因子计算、差错检测位置、8251A 初始化顺序、多总线接口层次**。知识点分散但每个都独立且易记。
## 正文
### 1. RS-232C 逻辑电平定义
RS-232C 采用**负逻辑**,驱动器输出端与接收端的有效范围略有不同:
| 逻辑值 | 名称 | 驱动器输出端 | 接收端有效范围 |
|--------|------|:---:|:---:|
| **0** | 传号(Mark) | **+5V ~ +15V** | +3V ~ +15V |
| **1** | 空号(Space) | **-5V ~ -15V** | -3V ~ -15V |
```mermaid
graph LR
subgraph "驱动器输出端"
P["逻辑0: +5V~+15V<br/>正电压"]
N["逻辑1: -5V~-15V<br/>负电压"]
end
subgraph "接收端"
P2["逻辑0: +3V~+15V"]
N2["逻辑1: -3V~-15V"]
end
P --> P2
N --> N2
style P fill:#fdd,stroke:#333,color:#000
style N fill:#dfd,stroke:#333,color:#000
```
> [!important] 高频考点
> RS-232C 的**逻辑 0 是正电压(+5V~+15V)**,逻辑 1 是负电压(-5V~-15V)。这与 TTL 电平(0=低,1=高)完全相反!
> [!question] 思考题
> 为什么 RS-232C 要采用负逻辑(正电压=0,负电压=1)?
>
> 答:RS-232C 设计于早期通信时代,使用较高的电压幅值(±5V~±15V)是为了在长距离传输中抵抗噪声干扰。负逻辑的设计使"空闲状态"(逻辑1)对应负电压,有助于检测线路断开等故障。
### 2. 波特率因子计算
$$\text{波特率因子} = \frac{\text{收/发时钟频率}}{\text{波特率}} = \frac{f_{\text{clock}}}{\text{Baud Rate}}$$
> [!example] 真题
> 收/发时钟频率 TxC=RxC=19200Hz,传输波特率为 1200,波特率因子 = ?
>
> $$\frac{19200}{1200} = \boxed{16}$$
> [!tip] 常见波特率因子
> 实际系统中最常用的波特率因子是 **16**(16 倍过采样),每个数据位用 16 个时钟周期采样,提高接收精度和抗干扰能力。其他常见值有 1、64。
### 3. 串行通信差错检测
差错检测发生在**接收端**:
```mermaid
graph LR
A["发送端<br/>计算校验位<br/>附加到数据"] --> B["传输信道"] --> C["接收端<br/>重新计算校验<br/>与收到的校验位比较"]
C --> D{"一致?"}
D -->|是| E["数据正确"]
D -->|否| F["传输出错"]
style C fill:#ffd,stroke:#333,color:#000
```
> [!important] 高频考点
> 差错检测发生在**接收端**。发送端只负责计算并附加校验位,不做"检测";接收端收到数据后重新计算校验值,与收到的校验位对比来判断是否出错。
### 4. 8251A 初始化顺序
8251A 复位后必须按严格顺序写入命令字:
```mermaid
graph TD
A["RESET 复位完成"] --> B["① 方式字 Mode Word<br/>设置通信格式参数"]
B --> C["② 命令字 Command Word<br/>设置收发使能等"]
C --> D["③ 正常通信工作"]
style B fill:#ffd,stroke:#333,color:#000
```
| 步骤 | 写入内容 | 作用 |
|------|----------|------|
| **第1个** | **方式字** | 波特率因子、字符长度、停止位、奇偶校验 |
| 第2个 | 命令字 | 发送/接收使能、DTR/RTS、内部复位 |
> [!important] 高频考点
> 8251A 复位完成后,收到的**第一个命令字是方式字**。方式字定义通信的基本格式,必须在命令字之前写入。
### 5. 多总线系统接口层次
```mermaid
graph TD
A["多总线微机系统<br/>接口分两个层次"] --> B["设备接口<br/>Device Interface<br/>外设↔I/O总线适配"]
A --> C["总线桥<br/>Bus Bridge<br/>不同总线间协议转换"]
style B fill:#dfd,stroke:#333,color:#000
style C fill:#dfd,stroke:#333,color:#000
```
| 层次 | 名称 | 作用 |
|------|------|------|
| 第一层 | **设备接口** | 将外设的信号电平、时序、数据格式适配到 I/O 总线 |
| 第二层 | **总线桥** | 连接两条不同特性的总线(如 PCI↔ISA),实现协议转换和速度匹配 |
> [!question] 思考题
> 总线桥和设备接口的区别是什么?
>
> 答:设备接口解决"外设怎么连到总线上"的问题(信号适配);总线桥解决"两条不同总线怎么互通"的问题(协议转换)。前者面向外设,后者面向总线。
### 6. 真题回顾
> [!example] 【真题1】RS-232C 接口标准对逻辑信号"0"在驱动器输出端的定义为?
> **答案:D. +5V~+15V**
> [!example] 【真题2】波特率因子为?(时钟19200,波特率1200)
> **答案:A. 16**
> [!example] 【真题3】串行通信的差错检测发生在?
> **答案:B. 接收端**
> [!example] 【真题4】8251A 复位后收到的第一个命令字是?
> **答案:B. 方式字**
> [!example] 【真题5】多总线系统中接口分为设备接口和?
> **答案:B. 总线桥**
## 关联笔记
- [[接口与通讯技术/复习文档/8251A串行通信接口]]
- [[串行通信基础|填空题专题:串行通信基础]]
@@ -0,0 +1,115 @@
---
tags:
- 接口与通讯技术
- 小端序
- 存储器
- 物理地址
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# 小端序与存储器组织 选择题考点
## 概述
小端序(Little-Endian)和 8086 存储器组织在 3 套试卷中共出现 5 题,几乎每套必考。核心考点为**字单元内容计算、物理地址计算、堆栈中的小端序应用**。
## 正文
### 1. 小端序存储规则
x86 采用**小端序**:**低字节存低地址,高字节存高地址。**
```mermaid
graph LR
subgraph "内存布局"
LO["低地址<br/>存低字节"] --> HI["高地址<br/>存高字节"]
end
subgraph "逻辑含义"
VAL["一个字 = 高字节×256 + 低字节"]
end
style LO fill:#dfd,stroke:#333,color:#000
style HI fill:#fdd,stroke:#333,color:#000
```
### 2. 字单元内容计算(通用方法)
**三步法:**
1. 找到起始地址和下一个地址的内容
2. 起始地址(低地址)→ **低字节**;下一个地址(高地址)→ **高字节**
3. 字内容 = 高字节 × 256 + 低字节 = 高字节拼接低字节
> [!example] 真题1
> (22000H)=33H, (22001H)=44H,以 22000H 为地址的字单元内容 = ?
> - 低字节(22000H)= 33H,高字节(22001H)= 44H
> - 字内容 = **4433H**
> [!example] 真题2
> (12341H)=11H, (12342H)=22H, (12343H)=33H,以 12342H 为地址的字单元内容 = ?
> - 低字节(12342H)= 22H,高字节(12343H)= 33H
> - 字内容 = **3322H**
> [!example] 真题3
> (20000H)=12H, (20001H)=34H, (20002H)=56H,地址 20001H 的字单元内容 = ?
> - 低字节(20001H)= 34H,高字节(20002H)= 56H
> - 字内容 = **5634H**
> [!tip] 速算技巧
> 直接**高地址内容拼低地址内容**:看到 (addr)=34H, (addr+1)=56H → 答案就是 5634H。
### 3. 8086 物理地址计算
$$\text{物理地址} = \text{段基址} \times 10\text{H} + \text{偏移地址}$$
> [!example] 真题
> (CS)=2000H, (IP)=3456H,下一条指令的物理地址 = ?
>
> $2000\text{H} \times 10\text{H} + 3456\text{H} = 20000\text{H} + 3456\text{H} = \textbf{23456H}$
```mermaid
graph TD
A["段基址: 2000H"] --> B["左移4位: 20000H"]
C["偏移地址: 3456H"] --> D["相加"]
B --> D
D --> E["物理地址: 23456H"]
style E fill:#ffd,stroke:#333,color:#000
```
> [!question] 思考题
> 为什么 8086 要采用"段基址×16+偏移"的方式,而不是直接用 32 位地址?
>
> 答:8086 内部寄存器是 16 位的,最大寻址 64KB。通过段基址左移 4 位(×16)再加上 16 位偏移,可以用两个 16 位值组合出 20 位物理地址,寻址 1MB 空间。这是 16 位架构下的巧妙设计。
### 4. 堆栈中的小端序(POP 操作)
堆栈操作同样遵循小端序规则:
```
POP AX 时:
低地址内容 → AL(低字节)
高地址内容 → AH(高字节)
```
> [!example] 真题
> (SS)=1000H, (SP)=1234H, (11234H)=12H, (11235H)=34H
> - 栈顶 = 1000H × 10H + 1234H = 11234H
> - AL ← [11234H] = 12H(先弹,低地址)
> - AH ← [11235H] = 34H(后弹,高地址)
> - **AX = 3412H**
> [!warning] 易错点
> POP 弹出的是**字(2字节)**,不是字节!答案不会是 12H 或 34H 单个字节,而是组合后的 3412H。
### 5. 三类题型速查
| 题型 | 关键公式/规则 | 常见陷阱 |
|------|---------------|----------|
| 字单元内容 | 高地址内容拼接低地址内容 | 搞反高低字节顺序 |
| 物理地址 | 段基址×10H + 偏移 | 忘记×10H(左移4位) |
| POP 堆栈 | 先弹低地址给低寄存器 | 把 AH/AL 取反 |
## 关联笔记
- [[x86指令系统与寄存器 选择题考点]]
- [[IO端口编址方式|填空题专题:IO端口编址方式]]
@@ -0,0 +1,104 @@
---
tags:
- 接口与通讯技术
- 82C55A
- 82C54A
- 定时器
- 选择题
- 重点复习
create time: 2026-06-28 16:30
---
# 并行接口 82C55A 与定时器 82C54A 选择题考点
## 概述
82C55A(并行接口)和 82C54A(定时/计数器)在 3 套试卷中共出现 4 题。82C55A 考**工作方式与端口能力**,82C54A 考**计数初值与自动重装**。
## 正文
### 1. 82C55A 三种工作方式与端口能力
| 方式 | 名称 | 端口 A | 端口 B | 端口 C | 联络信号 |
|------|------|--------|--------|--------|----------|
| 方式 0 | 基本 I/O | 可用 | 可用 | 可用 | 无 |
| 方式 1 | 选通 I/O | 可用(单向+握手) | 可用(单向+握手) | 部分作联络 | 有 |
| **方式 2** | **双向总线 I/O** | **可用(双向)** | **不可用此方式** | 5根作联络 | 有 |
```mermaid
graph TD
A["82C55A<br/>三种工作方式"] --> B["方式 0<br/>基本 I/O<br/>三端口均可用"]
A --> C["方式 1<br/>选通 I/O<br/>PA、PB 可用<br/>单向+握手"]
A --> D["方式 2<br/>双向 I/O<br/>仅 PA 可用<br/>双向传输"]
style D fill:#ffd,stroke:#333,color:#000
```
> [!important] 高频考点
> **方式 2(双向选通输入/输出方式)只有端口 A(PA)可以使用。** PB 和 PC 不支持方式 2。
> [!question] 思考题
> 为什么方式 2 只有端口 A 能用?
>
> 答:方式 2 需要占用端口 C 的 5 根引脚(PC3~PC7)作为双向联络信号,端口资源有限。芯片设计时将方式 2 专属于 PA,PB 在 PA 为方式 2 时只能工作在方式 0 或方式 1。
### 2. 82C54A 计数初值计算
82C54A 是**减法计数器**,从初值 N 递减到 0 时产生输出。
**计数 N 个脉冲的初值 = N**
#### BCD 码计数模式
BCD 模式下,每个数位用 4 位 BCD 表示,计数范围 0000~9999(十进制)。
> [!example] 真题
> 采用 82C54A 对外部输入脉冲计数,BCD 码计数方式,需计 100 个脉冲,初值为?
>
> **答案:B. 256**
>
> 在 BCD 计数模式中,计数器的行为与二进制模式有所不同。计 100 个脉冲时,初值应为 **256**。
### 3. 82C54A 六种工作方式对比
| 方式 | 名称 | 自动重装初值 | 输出波形 | 触发方式 |
|------|------|:---:|----------|----------|
| 方式 0 | 计数结束中断 | ✗ | 单次低→高 | 软件 |
| 方式 1 | 可编程单稳态 | ✗ | 单次负脉冲 | 硬件 |
| 方式 2 | 速率发生器 | ✓ | 周期负脉冲 | 软件/硬件 |
| **方式 3** | **方波发生器** | **✓** | **连续方波** | 软件/硬件 |
| 方式 4 | 软件触发选通 | ✗ | 单次正脉冲 | 软件 |
| 方式 5 | 硬件触发选通 | ✗ | 单次正脉冲 | 硬件 |
> [!important] 高频考点
> **方式 2 和方式 3** 具有**自动重新装载计数初值**的功能。方式 3 在计数到 0 后自动重装初值,持续输出对称方波。
```mermaid
graph LR
subgraph "自动重装初值"
M2["方式 2<br/>速率发生器"]
M3["方式 3<br/>方波发生器"]
end
subgraph "不自动重装"
M0["方式 0"]
M1["方式 1"]
M4["方式 4"]
M5["方式 5"]
end
style M2 fill:#dfd,stroke:#333,color:#000
style M3 fill:#dfd,stroke:#333,color:#000
```
### 4. 真题回顾
> [!example] 【真题1】并行接口 82C55A 的 3 种工作方式中,( )可以实现双向传输。
> **答案:C. 方式 2**
> [!example] 【真题2】82C54A 的工作方式中,哪种具有自动重新装载计数初值的功能?
> **答案:C. 方式 3**
## 关联笔记
- [[接口与通讯技术/复习文档/8255A可编程并行接口]]
- [[接口与通讯技术/复习文档/8254定时计数器]]
- [[82C55A工作方式|填空题专题:82C55A工作方式]]
- [[82C54A定时器工作方式|填空题专题:82C54A定时器工作方式]]