Files
Operating-System/8086/Exam/第7章 可编程接口芯片 .md
2026-06-29 21:12:21 +08:00

539 lines
28 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第 7 章 可编程接口芯片 —— 期末复习总结
> **本章导读**:所谓"可编程接口芯片",即芯片本身可被设计成具有多项功能或多种工作方式,使用时由 CPU 通过"写控制字"来选择所需功能或工作方式。本章介绍三大经典芯片:
> - **7.1 可编程并行接口芯片 8255A**
> - **7.2 可编程定时/计数器接口芯片 8253**
> - **7.3 可编程串行通信接口芯片 8251A**
---
## 一、详细内容分析
### 7.1 可编程并行输入/输出接口芯片 8255A
#### 7.1.1 8255A 的内部结构与引脚功能
**基本特性**
- Intel 8255A 是通用的可编程**并行 I/O** 接口芯片。
- 内部结构由 4 部分组成:① 数据端口;② A 组/B 组控制电路;③ 数据总线缓冲器;④ 读/写控制逻辑。
-**3 个 8 位并行数据端口**:端口 APA7-PA0、端口 BPB7-PB0、端口 CPC7-PC0
- 端口分为 **A 组**A 口 + C 口高 4 位 PC7-PC4**B 组**B 口 + C 口低 4 位 PC3-PC0两组独立管理。
- 支持 3 种工作方式:**方式 0、方式 1、方式 2**。
**CPU 接口信号**
- D7-D0三态 8 位双向数据总线缓冲器,与系统数据总线相连。
- RESET复位信号高电平有效复位后所有端口置为输入方式。
- CS片选信号低电平有效。
- RD、WR读、写控制信号低电平有效。
- A1、A0端口选择信号配合 RD/WR/CS 选中 4 个内部寄存器。
**端口地址A1、A0 编码)**
| A1 | A0 | 选中端口 |
|----|----|---------------|
| 0 | 0 | A 口(数据口)|
| 0 | 1 | B 口(数据口)|
| 1 | 0 | C 口(数据口)|
| 1 | 1 | 控制口 |
**端口读写功能表**CS=0
| 操作 | A1 | A0 | RD | WR | 功能 |
|---------|----|----|----|----|----------------------------|
| 读操作 | 0 | 0 | 0 | 1 | 数据总线 ← A 口CPU 读 A |
| 读操作 | 0 | 1 | 0 | 1 | 数据总线 ← B 口 |
| 读操作 | 1 | 0 | 0 | 1 | 数据总线 ← C 口 |
| 写操作 | 0 | 0 | 1 | 0 | A 口 ← 数据总线 |
| 写操作 | 0 | 1 | 1 | 0 | B 口 ← 数据总线 |
| 写操作 | 1 | 0 | 1 | 0 | C 口 ← 数据总线 |
| 写操作 | 1 | 1 | 1 | 0 | 控制寄存器 ← 数据总线 |
#### 7.1.2 8255A 的控制字(两类)
**(1) 方式选择控制字D7=1**
```
D7 D6 D5 D4 D3 D2 D1 D0
1 M1 M0 C2 B A CH CL
│ └A组方式 └C口高4位 └B口 ┘ └C口低4位 ┘
特征位 00=方式0
01=方式1
1x=方式2
0=输出 1=输入
```
| D7 | D6 D5 | D4 | D3 | D2 | D1 | D0 | 含义 |
|----|-------|----|----|----|----|----|---------------------------------|
| 1 | A 组方式 | C 口高 4 位 I/O0=出,1=入) | B 组方式0=方式 0, 1=方式 1 | B 口 I/O | C 口低 4 位 I/O | A 口 I/O |
**(2) C 口置位/复位控制字D7=0**
用于单独对 C 口某一位PC0-PC7置 1 或清 0不影响其它位。
- D7=0特征位
- D6 D5 D4 = 任意(不用)
- D3 D2 D1 = 位选择000 对应 PC0111 对应 PC7
- D0 = 0 复位1 置位
```assembly
; 例如:把 PC3 置 1
MOV AL, 00000111B ; D7=0, D3D2D1=011(PC3), D0=1 置位
OUT 63H, AL
```
#### 7.1.3 8255A 的工作方式
| 方式 | 适用端口 | 特点 |
|------|---------------------|-------------------------------------------------------------|
| 0 | A 口、B 口、C 口 | **基本的输入/输出**;无握手联络信号;分两个 8 位A、B和两个 4 位CH、CL独立设置方向CPU 直接 IN/OUT |
| 1 | A 口、B 口 | **选通(握手)的输入/输出**C 口引脚作为联络/握手信号;可中断;分输入与输出两种情形 |
| 2 | 仅 A 口 | **双向选通 I/O**A 口分时双向传输C 口的 PC3-PC7 作双向联络信号 |
**方式 1 输入A 口、B 口)的联络线**
- STB输入选通信号**低电平有效**,由外设送来,把外设数据打入端口锁存器。
- IBF输入缓冲器满高电平有效由 8255A 输出,通知外设"数据已收到"。
- INTR中断请求高电平有效INTE=1 且 IBF=1 且 RD 上升沿时产生。
- INTE中断允许A 口用 **PC4** 置位/复位控制B 口用 **PC2** 置位/复位控制。
- A 口输入时PC4=STB、PC5=IBF、PC3=INTRA
- B 口输入时PC2=STB、PC1=IBF、PC0=INTRB
- PC7-PC6I/O仍可作普通 I/O
**方式 1 输出A 口、B 口)的联络线**
- OBF输出缓冲器满低电平有效CPU 已把数据送到端口。
- ACK响应低电平有效由外设送来通知 8255A 数据已收到。
- INTR中断请求高电平有效ACK 上升沿后产生。
- INTE输出 A 口由 **PC6** 置位/复位;输出 B 口由 **PC2** 置位/复位。
- A 口输出PC7=OBF、PC6=ACK、PC3=INTRA
- B 口输出PC1=OBF、PC2=ACK、PC0=INTRB
- PC5-PC4I/O
**方式 2A 口双向)**
- 仅 A 口适用PC3-PC7 共 5 个联络信号,含义与方式 1 类似。
- INTE1输出中断允许**PC6** 置/复位INTE2输入中断允许**PC4** 置/复位。
- INTRA 在输入或输出时都可以产生。
#### 7.1.4 8255A 的应用举例(例 7.1.1:方式 0 产生波形)
**题目**8255A 在方式 0 工作,使其在 PC0、PC3 引脚产生如图所示波形,端口地址 60H/61H/62H/63H。
**硬件连接分析**
- 高位地址 A7-A2 通过 74LS138 译码产生片选 CS要求 Y0 有效A7-A2=011000
- 低位地址 A1、A0 直接连 8255A 的 A1、A0所以
- A 口地址 = 0110 00 00 = **60H**
- B 口地址 = **61H**
- C 口地址 = **62H**
- 控制口地址 = **63H**
**应用基本过程**
1. **端口地址归纳**(设计):根据硬件连接确定端口地址,或根据接口要求设计硬件。
2. **控制字归纳**:根据工作方式,按方式选择控制字格式归纳控制字。
3. **编写程序**:先初始化(写控制字),再写功能程序。
**初始化与波形程序**(方式 0 输出A/B/C 全输出,故控制字 D7=1方式 0 → D6D5=00PC3、PC0 输出 → D3、D0 都要是 0 = 1000 0000B = 80H
```assembly
START: MOV AL, 80H ; 方式 0 输出控制字A/B/C 全部为输出)
OUT 63H, AL
A1: MOV AL, 01H ; PC0=1, PC3=1 → 0000 1001? 注意波形图中PC3=0,PC0=1时为01H
OUT 62H, AL
CALL D1ms
MOV AL, 09H ; 1001B → PC3=1, PC0=0
OUT 62H, AL
CALL D1ms
MOV AL, 00H ; PC3=0, PC0=0
OUT 62H, AL
CALL D1ms
MOV AL, 08H ; PC3=1, PC0=0
OUT 62H, AL
CALL D1ms
JMP A1
```
> 注:本题也可使用 C 口置位/复位控制字单独控制 PC3、PC0避免整体重写。
---
### 7.2 可编程计数器/定时器 8253
#### 7.2.1 8253 的基本功能
1. **3 个独立的 16 位计数器**(计数器 0、1、2每个能完成 16 位减法计数。
2. 每个计数器有 **6 种工作方式**(方式 05
3. 能进行 **二进制/十进制BCD减法计数**。所谓十进制计数是指 BCD 码计数。
4. 计数频率范围 02 MHz。
5. 既可作**计数器**也可作**定时器**使用。
#### 7.2.2 8253 内部结构与引脚
**4 个可寻址的端口A1、A0 编码)**
| A1 | A0 | 端口 |
|----|----|--------------------|
| 0 | 0 | 计数器 0数据口 |
| 0 | 1 | 计数器 1数据口 |
| 1 | 0 | 计数器 2数据口 |
| 1 | 1 | 控制口 |
**每个计数器 3 条外部信号**
- **CLK**:计数脉冲输入,上升沿触发计数。
- **GATE**:门控信号,启动或禁止计数器。
- **OUT**:计数器状态输出,当减到 0 时按工作方式输出相应波形。
**每个计数器内部 4 个寄存器**(每个 16 位):
1. 8 位控制寄存器(实际只用 6 位)。
2. 16 位计数初值寄存器(保存 CPU 写入的初值)。
3. 16 位减 1 计数器(实际执行减 1 操作)。
4. 16 位输出锁存器CPU 读取当前计数值时使用)。
**计数初值计算**
- **计数方式**:计数初值 = 要求的计数次数 N。
- **定时方式**:计数初值 = 定时时间 t / 时钟脉冲周期 TCLK = t × fCLK。
**计数初值 0 等价于最大值**:十进制 = 10000二进制 = 655360000H 等于 10000H / FFFFH+1
**读/写格式RL1、RL0 决定)**
- 00 = 锁存命令(锁存当前计数值供 CPU 读)
- 01 = 只读/写低 8 位,高 8 位自动为 0
- 10 = 只读/写高 8 位,低 8 位自动为 0
- 11 = 先低 8 位后高 8 位(读写 16 位)
#### 7.2.3 8253 的控制字格式
控制字写入 **控制口A1A0=11**
```
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
└计数器选择┘ └读/写格式┘ └工作方式┘ └计数方式┘
```
| 字段 | 编码与含义 |
|-----------|----------------------------------------------------------------------------------|
| SC1 SC0 | 00=计数器 001=计数器 110=计数器 211=非法 |
| RL1 RL0 | 00=锁存命令01=只读/写低 8 位10=只读/写高 8 位11=先低 8 位后高 8 位 |
| M2 M1 M0 | 000=方式 0001=方式 1×10=方式 2×11=方式 3100=方式 4101=方式 5 |
| BCD | 0=二进制计数1=BCD十进制计数 |
**编程原则**
1. 控制字必须在计数初值之前写入;写入控制字有复位作用,使 OUT 变为各方式规定的初始状态。
2. 16 位计数(初)值的读写必须遵守控制字 RL1、RL0 规定的顺序。
3. 读取计数值有 2 种方法:**简单读出**(直接读,先锁存再读)和**锁存读出**(先发锁存命令再读)。
#### 7.2.4 8253 的六种工作方式(核心考点)
| 方式 | 名称 | OUT 输出波形 | 启动方式 | 计数值使用 |
|------|------------------|-------------------------------|----------|------------|
| 0 | 计数结束中断方式 | 上升沿(计数到 0 时变高) | 软启动 | 一次有效 |
| 1 | 可编程单稳方式 | N 个 CLK 的单个负脉冲 | 硬启动 | 多次有效 |
| 2 | 脉冲频率发生器 | 1 个 CLK 宽的负脉冲(重复) | 软、硬 | 重复有效 |
| 3 | 方波发生器 | 占空比 ≈ 50% 方波(重复) | 软、硬 | 重复有效 |
| 4 | 软件触发选通 | 计数到 0 后 1 个 CLK 负脉冲 | 软启动 | 一次有效 |
| 5 | 硬件触发选通 | 计数到 0 后 1 个 CLK 负脉冲 | 硬启动 | 多次有效 |
- **软启动**写入计数初值后即开始计数GATE=1
- **硬启动**:必须等到 GATE 上升沿才启动计数。
- **一次有效**:送入计数初值后只能计一轮,结束后停止。
- **多次有效**(重复有效):计数结束后自动重新装入初值开始新的一轮计数。
**方式 0计数结束中断方式**
- 写入控制字后 OUT 立即变为低电平;
- 写入初值后开始减 1 计数,计数到 0 时 OUT 变高(产生正跳变),可作中断请求;
- 计数过程中 GATE=0 禁止计数GATE=1 继续计数;
- 计数过程中可改写新的初值,下一个 CLK 按新初值开始计数。
**方式 1可编程单稳**
- 硬启动GATE 上升沿触发),每触发一次输出一个宽度为 N×TCLK 的负脉冲;
- 在脉冲期间再次触发可重新开始(再触发单稳)。
**方式 2脉冲频率发生器 / 速率发生器)**
- 写入初值后即开始计数OUT 平时为高,计数到 1 时 OUT 变低 1 个 CLK再自动重新装入初值继续
- **典型应用**:分频器(产生固定周期的窄负脉冲);
- GATE=0 停止计数GATE 上升沿可重新同步启动。
**方式 3方波发生器**
- 写入初值后开始计数OUT 输出占空比近似 50% 的方波;
- 初值为**偶数**时,前半段高、后半段低严格对称;
- 初值为**奇数**时,高电平多 1 个 CLK 周期(高电平 = (N+1)/2 × TCLK低电平 = (N-1)/2 × TCLK
- 重复有效,计数到 0 后自动重装初值。
**方式 4软件触发选通**
- 写入初值即启动OUT 平时为高,计数到 0 时输出 1 个 CLK 的负脉冲;
- 一次有效(与方式 0 类似但多 1 个负脉冲输出)。
**方式 5硬件触发选通**
- 硬启动GATE 上升沿触发;触发后 OUT 平时为高,计数到 0 时输出 1 个 CLK 的负脉冲;
- 多次有效:每次 GATE 上升沿都重新开始一轮。
#### 7.2.5 8253 的应用举例(例 7.2.1:初始化设计)
**题目**8253 通道 1 工作于方式 0按 BCD 方式计数,初值 400。计数器 0/1/2 和控制寄存器端口地址依次为 80H-83H。
**分析步骤**
1. **端口地址**80H/81H/82H/83H。
2. **控制字**:通道 1SC1SC0=01、方式 0M2M1M0=000、只写低 8 位RL1RL0=01因为初值 400 < 256 不需要高字节,也可写 11=16 位、BCD 计数BCD=1
→ 控制字 = 01 01 000 1 = 0111 0001B = **71H**(若选 16 位读写则为 0111 1011 = 7BH
3. **计数初值**400BCD 格式 → 04 00H送两次先低 00H后高 04H
**初始化程序**(按 RL1RL0=01 只写低 8 位示例):
```assembly
MOV AL, 71H ; 控制字通道1, 方式0, BCD, 只写低8位
OUT 83H, AL
MOV AL, 00H ; 低 8 位计数值
OUT 81H, AL
MOV AL, 04H ; 高 8 位计数值(虽 RL=01 也常按 16 位分两次写)
OUT 81H, AL
```
> **常考点**:计数初值公式 = 输入时钟频率 / 期望输出频率(对方式 2、3 而言,输出频率即 OUT 引脚信号频率)。
---
### 7.3 可编程串行通信接口芯片 8251A
#### 7.3.1 串行通信概述
**基本通信方式**:并行通信 vs 串行通信。
**两种传输方式**
- **基带传输**:直接用电平传送数字信号(如 RS-232
- **频带传输**:用数字信号调制载波,需 Modem调制解调器按调制方式分调幅、调频、调相。
**传送方向**
- **单工**:只能 A→B 单方向。
- **半双工**:双方都可收发,但不能同时。
- **全双工**:双方可同时收发(需 2 条独立信道)。
**传输速率**
- **信息传输速率(比特率)**:单位 bit/s 或 bps。
- **码元传输速率(波特率)**:单位 Baud。
**异步 vs 同步通信**
- **异步通信**:以字节(字符)为单位,一帧包括 **起始位 + 数据位5~8 位) + 奇偶校验位(可选) + 停止位1/1.5/2 位)**。字符间空闲位为高电平。传送效率较低但简单。
- **同步通信**:以数据块(字节组)为单位,一帧含 **同步字符 + 数据块**,需收发双方时钟严格同步,传送效率高。
#### 7.3.2 8251A 内部结构
8251A 是串行通讯接口,可工作于**异步方式**或**同步方式**,字符长度 5/6/7/8 位任选。
**5 个组成部分**
1. 数据总线缓冲器(与 CPU 数据总线接口)。
2. 发送缓冲器(并行→串行,从 TXD 发出)。
3. 接收缓冲器RXD 接收串行数据→并行)。
4. 读/写控制逻辑(接收 CPU 的 CS、RD、WR、C/D 等)。
5. 调制解调器控制电路DTR、RTS、DSR、CTS
#### 7.3.3 8251A 的引脚
**与 CPU 连接的引脚**
- D7-D0、RD、WR、CS、RESET、CLK
- **C/D**:控制/数据端口选择。C/D=0 选数据口C/D=1 选控制/状态口。
- **TXRDY**:发送器准备好(状态位),通知 CPU 可写入新数据。
- **TXEMPTY**:发送移位寄存器空,高电平有效。
- **TXC**:发送时钟。
- **RXRDY**接收器准备好状态位CPU 可读取数据。
- **RXC**:接收时钟。
- **SYNDET**:同步检测(同步方式下使用)。
**与调制解调器Modem的接口信号**
- DTR数据终端准备好8251A 通知 Modem 已就绪。
- RTS请求发送8251A 要求发送数据。
- DSR数据装置准备好Modem 已就绪。
- CTS清除发送请求发送响应允许 8251A 发送。
- RXD接收数据线TXD发送数据线。
**读写操作功能表C/D + RD + WR + CS**
| C/D | RD | WR | CS | 操作 |
|-----|----|----|----|-----------------------------|
| 0 | 0 | 1 | 0 | 数据总线 ← 8251A 数据CPU 读接收数据)|
| 0 | 1 | 0 | 0 | 8251A 数据 ← 数据总线CPU 写发送数据)|
| 1 | 0 | 1 | 0 | 数据总线 ← 8251A 状态CPU 读状态字)|
| 1 | 1 | 0 | 0 | 8251A 控制字 ← 数据总线CPU 写控制字)|
| × | 1 | 1 | 0 | 高阻 |
| × | × | × | 1 | 高阻(未选中) |
#### 7.3.4 8251A 的控制字
**(1) 方式选择控制字****8251A 复位之后**第一个写入;写入"控制口",即 C/D=1
```
D7 D6 D5 D4 D3 D2 D1 D0
└停止位┘ └字符长度┘ └奇偶校验┘ └通信方式┘
```
- **D1D0通信方式选择**
- 00 = 同步方式
- 01 = 异步方式×1时钟 = 波特率)
- 10 = 异步方式×16时钟 = 16×波特率
- 11 = 异步方式×64时钟 = 64×波特率
- **D3D2字符长度**00=5 位01=6 位10=7 位11=8 位。
- **D5D4奇偶校验**0=不用1=使用奇偶校验。
- **D7D6异步时停止位**00=无效01=1 位停止位10=1.5 位停止位11=2 位停止位。
- **D7D6同步时同步字符个数**00=2 个同步字符内同步01=2 个外同步10=1 个内同步11=1 个(外同步)。
**(2) 命令控制字**(方式选择字之后任何时间可写入;写入"控制口"
```
D7 D6 D5 D4 D3 D2 D1 D0
EH IR RTS ER SBRK RXE DTR TXEN
搜索同步 内部复位 请求发送 错误复位 发中止 接收允许 终端准备好 发送允许
```
- **注意**:命令字的 D5(RTS)、D1(DTR) **与引脚反相**(写入 1引脚输出低
- **D3(SBRK)**=1强迫 TXD 变低(发中止字符)。
- **D6(IR)**=1内部复位8251A 复位回到初始状态,等同于 RESET
- **D4(ER)**=1清除错误标志PE/OE/FE
- **D0(TXEN)**=1允许发送**D2(RXE)**=1允许接收**D7(EH)**=1异步时无意义同步方式下允许搜索同步字符。
**(3) 状态字**(只读,反映当前状态;读"状态口"即 C/D=1、RD=0
```
D7 D6 D5 D4 D3 D2 D1 D0
DSR SYNDET/BD FE OE PE TXEMPTY RXRDY TXRDY
```
- **DSR/SYNDET/BD/TXEMPTY/RXRDY/TXRDY**:与同名引脚状态相同。
- **PE=1**:奇偶错;**OE=1**:溢出错(上一字符还没被 CPU 取走,新字符又到了);**FE=1**:格式错(异步方式下未检测到停止位)。
- **状态位 TXRDY 与引脚 TXRDY 有区别**:状态位 TXRDY 表示**数据输出缓冲器空**;引脚 TXRDY 只有当 **CTS=0**、**TXEN=1** 时才置位(表示可以接收 CPU 数据。CPU 输出一个字符后状态位 TXRDY 会自动清 0。
#### 7.3.4.4 8251A 初始化流程(重要)
**关键顺序**:方式选择控制字 → 命令控制字。**两者必须分两次写入同一个控制口**,且**方式选择字必须在复位之后第一个送入**。如果写完方式选择字立刻又写了命令字CPU 不会执行命令字内容。
完整流程:
1. 系统 **RESET**(或写命令字 D6=1 内部复位)。
2. 写入 **方式选择控制字**
3. 异步方式:跳过;同步方式:输出 12 个同步字符。
4. 写入 **命令控制字**(允许发送/接收、清错误标志等)。
5. 进行数据传送;发送时查 TXRDY=1接收时查 RXRDY=1。
6. 工作中若需要可再次写命令字(含内部复位 IR=1
#### 7.3.5 8251A 的应用举例(例 7.3.1:异步方式初始化)
**题目**8251A 异步方式,波特率因子 16每字符 7 位数据位偶校验2 个停止位,允许发送和接收。数据口地址 200H控制口地址 201H。
**方式选择控制字**
- 通信方式异步×16 → D1D0 = 10
- 字符长度 7 位 → D3D2 = 10
- 偶校验(使用奇偶校验,校验类型由命令字决定) → D5 = 1D4 = 1偶校验=1
- 2 位停止位 → D7D6 = 11
控制字 = 11 1 1 1 0 10 = **1111 1110B = FAH**
**命令控制字**
- 允许发送 → D0(TXEN)=1
- 允许接收 → D2(RXE)=1
- 清错误标志 → D4(ER)=1
- 其他位取 0IR=0 不内部复位SBRK=0 不发中止RTS=0DTR=0EH=0
命令字 = 00 0 0 1 0 1 0 1 = **0011 0111B = 37H**
**初始化程序**
```assembly
MOV AL, 0FAH ; 方式选择控制字
MOV DX, 201H ; 控制端口地址
OUT DX, AL
MOV AL, 37H ; 命令控制字:允许收发,清错误标志
OUT DX, AL
; ... 发送/接收数据时再读写 200H 端口
```
---
## 二、考点总结
### 8255A 考点
- 【高频】**3 个端口 PA/PB/PC** 的结构,**A 组**A 口 + C 高 4 位)、**B 组**B 口 + C 低 4 位)。
- 【高频】**三种工作方式**对比:
- **方式 0**:基本输入/输出,**无握手**A/B/C 口都可工作(适用端口最广)。
- **方式 1****选通(握手)输入/输出**,仅 A、B 口适用C 口做联络信号,**可产生中断**。
- **方式 2****仅 A 口**可用的**双向**选通 I/O。
- 【高频】**方式选择控制字D7=1**8 位含义、归纳方法。
- 【高频】**C 口置位/复位控制字D7=0**:单独操作 PC0-PC7 中任意一位。
- 【高频】**端口地址归纳**A1A0 编码00/01/10/11 选 A/B/C/控制CS 由高位地址译码得到;通过 74LS138 等译码器确定 CS 后才能算出 A/B/C/控制口地址。
- 【高频】**方式 1 的联络线**
- 输入STB、IBF、INTR、INTEA 口 INTE 用 PC4 控B 口 INTE 用 PC2 控)。
- 输出OBF、ACK、INTR、INTEA 口输出 INTE 用 PC6 控B 口输出 INTE 用 PC2 控)。
- 【高频】**8255A 初始化编程步骤**:归纳端口地址 → 归纳控制字 → 写控制字到控制口 → 通过数据口读写数据。
- 【常考】**74LS1383-8 译码器)**功能表。
### 8253 考点
- 【高频】**3 个独立 16 位计数器**、**6 种工作方式**、**二进制/BCD 计数**、**最高 2 MHz**。
- 【高频】**计数初值计算公式**
- 计数方式:初值 N = 要求的计数次数。
- 定时方式:初值 N = 定时时间 t / 时钟周期 TCLK = t × fCLK。
- **频率换算**N = 输入时钟频率 fCLK / 输出信号频率 fout方式 2、3 适用)。
- 【高频】**控制字格式8 位)**SC1/SC0计数器选择+ RL1/RL0读写格式+ M2/M1/M0方式+ BCD计数制
- 【高频】**6 种工作方式对比表**(方式 0~5 名称、波形、启动方式、计数值使用):
- **方式 0**:计数结束中断,**软启动**一次有效OUT 输出正跃变。
- **方式 1**:可编程单稳,**硬启动**,多次有效。
- **方式 2****脉冲频率发生器 / 速率发生器****软/硬启动****重复有效**,常作分频器。
- **方式 3****方波发生器****软/硬启动****重复有效**,占空比近似 50%**奇初值时高电平多 1 个 CLK**。
- **方式 4**:软件触发选通,软启动,一次有效。
- **方式 5**:硬件触发选通,硬启动,多次有效。
- 【高频】**GATE 门控信号在各方式中的作用**电平控制0 禁/1 允vs 边沿触发(上升沿启动)。
- 【高频】**端口地址**A1A0=00/01/10/11 选 计数器 0/1/2/控制口)。
- 【高频】**编程顺序****先写控制字,再写计数初值**16 位数据**先低 8 位后高 8 位**。
- 【常考】**读计数器当前值的两种方法**:简单读出(先锁存再读)和直接读。
- 【常考】**最大计数初值 0 等价于 10000BCD或 65536二进制**。
### 8251A 考点
- 【高频】**异步串行帧格式**:起始位 + 数据位5~8+ 奇偶校验位(可选)+ 停止位1/1.5/2。**起始位为 0停止位为 1**。
- 【高频】**波特率因子**×1、×16、×64 三种异步方式(时钟 = 波特率因子 × 波特率)。
- 【高频】**3 类引脚**
- 与 CPUD7-D0、RD、WR、CS、CLK、RESET、**C/D**(区分控制口/数据口、TXRDY、TXEMPTY、TXC、RXRDY、RXC、SYNDET。
- 与 ModemDTR、RTS、DSR、CTS、RXD、TXD。
- 【高频】**两类控制字格式**(都写入"控制口"即 C/D=1
- **方式选择控制字**D1D0 通信方式、D3D2 字符长度、D5D4 奇偶校验、D7D6异步停止位 / 同步字符)。
- **命令控制字**EH、IR、RTS、ER、SBRK、RXE、DTR、TXEN。**RTS/DTR 位与引脚反相**。
- 【高频】**状态字**(读"状态口"DSR、SYNDET/BD、FE、OE、PE、TXEMPTY、RXRDY、TXRDYPE/OE/FE 三个错误标志由命令字 ER 位清除。
- 【高频】**初始化顺序****顺序错则失败**
1. **RESET**(或命令字 D6=1 内部复位);
2. **写方式选择控制字**
3. 同步方式还要输出 1~2 个同步字符;
4. **写命令控制字**(允许收发、清错误标志等);
5. 进行数据通信。
- 【高频】**状态位 TXRDY ≠ 引脚 TXRDY**:状态位 TXRDY 表示发送缓冲器空,引脚 TXRDY 还要 CTS=0 且 TXEN=1 时才置位。
### (四)三大芯片共性考点
- 【高频】**端口地址归纳**:由 CS高位译码+ A1A0低位地址共同决定。
- 【高频】**控制字/方式字各位含义**——能根据题意写控制字(初始化编程核心)。
- 【高频】**初始化编程** = 写控制字(控制口) + 写数据/初值(数据口)。
- 【常考】**74LS1383-8 译码器)**、**74LS245 收发器**等辅助芯片功能。
---
### 三、常见题型与答题思路
#### 1. 编程题:给定硬件连线,写 8255A / 8253 / 8251A 初始化程序
- **步骤 ①**:根据 CS74LS138 译码输出)和 A1、A0 推出 A/B/C/控制口地址(或计数器 0/1/2/控制口地址)。
- **步骤 ②**:根据题意要求(如方式 0 输出、A 组方式 2、异步 7 位偶校验、计数器 1 方式 2 二进制等)按控制字格式**逐位归纳**。
- **步骤 ③**:按顺序写程序:先 `OUT 控制口, AL`(写控制字),再 `OUT 数据口, AL`(写初值或数据)。
#### 2. 计算题:已知输入频率与输出频率求计数初值
- 公式:**N = fCLK / fout**(针对 8253 方式 2、3
-fCLK = 2 MHz要求输出 1 kHz 方波 → N = 2 000 000 / 1 000 = **2000**
- 进一步:若要求输出方波(方式 32000 为偶数,占空比严格 50%。
#### 3. 分析题:判断 8253 哪种工作方式产生何种波形
- 看 OUT 输出波形形状:单个负脉冲宽度 N×TCLK → **方式 1 单稳**
- 周期重复、窄负脉冲 → **方式 2 速率发生器**
- 占空比近似 50% 方波 → **方式 3 方波发生器**
- 一次正跃变(计数结束中断) → **方式 0**
- 单个 CLK 宽负脉冲、一次有效 → **方式 4**
- 硬触发多次有效 → **方式 5**
#### 4. 简答题8255A 方式 1 与方式 0 的区别 / 8253 各方式特点对比
- **8255A 方式 0 vs 方式 1**
- 方式 0基本 I/O无握手CPU 直接 IN/OUT 同步读写。
- 方式 1选通 I/OC 口做联络线STB/IBF/OBF/ACK/INTR可中断或查询工作节奏由外设决定。
- **8253 6 种方式对比**:抓住 **启动方式(软/硬)+ 计数值使用(一次/多次)+ 输出波形**三要素即可答全。
---
> **复习建议**:本章编程与计算并重。务必**熟练画出三种芯片的控制字格式**,能根据题目要求在 1 分钟内写出控制字二进制串,再转十六进制送 AL。重点练 8253 的**计数初值计算**和 8255A 的**端口地址归纳 + 方式选择控制字归纳**两大套路。