115 lines
4.1 KiB
Markdown
115 lines
4.1 KiB
Markdown
|
|
---
|
|||
|
|
tags:
|
|||
|
|
- 接口与通讯技术
|
|||
|
|
- 8255A
|
|||
|
|
- 工作方式
|
|||
|
|
- 重点复习
|
|||
|
|
create time: 2026-06-28 15:00
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 82C55A 工作方式
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
82C55A(可编程并行接口芯片)有 3 种工作方式,其中方式 1 和方式 2 具有固定联络信号线、固定时序和确定的状态字。本专题聚焦填空题常考的三种工作方式对比,尤其是联络信号的有无。
|
|||
|
|
|
|||
|
|
## 正文
|
|||
|
|
|
|||
|
|
### 1. 三种工作方式总览
|
|||
|
|
|
|||
|
|
| 工作方式 | 名称 | 联络信号 | 固定时序 | 状态字 | 中断支持 |
|
|||
|
|
|---------|------|:--------:|:--------:|:------:|:--------:|
|
|||
|
|
| **方式 0** | 基本输入/输出 | ✗ 无 | ✗ 无 | ✗ 无 | ✗ 无 |
|
|||
|
|
| **方式 1** | 选通输入/输出 | ✓ **有** | ✓ **有** | ✓ **有** | ✓ 有 |
|
|||
|
|
| **方式 2** | 双向选通总线 I/O | ✓ **有** | ✓ **有** | ✓ **有** | ✓ 有 |
|
|||
|
|
|
|||
|
|
> [!important] 考试关键点
|
|||
|
|
> **方式 1 和方式 2** 有固定联络信号线、固定时序和确定的状态字。方式 0 是最基本的、无握手信号的方式。
|
|||
|
|
|
|||
|
|
### 2. 三种方式详解
|
|||
|
|
|
|||
|
|
#### 方式 0 — 基本 I/O(无联络信号)
|
|||
|
|
|
|||
|
|
最简单的方式,无需任何握手信号:
|
|||
|
|
- A、B、C 三个端口均可使用
|
|||
|
|
- 适用于无条件传送或简单外设(LED、开关)
|
|||
|
|
- **没有**固定的联络信号线、时序和状态字
|
|||
|
|
|
|||
|
|
#### 方式 1 — 选通 I/O(有固定联络信号)
|
|||
|
|
|
|||
|
|
利用端口 C 的部分引脚作为联络信号,实现同步数据传输:
|
|||
|
|
|
|||
|
|
| 方向 | 占用 C 口引脚数 | 联络信号 |
|
|||
|
|
|------|:------------:|---------|
|
|||
|
|
| 输入 | 3 根 | STB、IBF、INTR |
|
|||
|
|
| 输出 | 3 根 | OBF、ACK、INTR |
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph LR
|
|||
|
|
subgraph "方式 1 输入联络信号"
|
|||
|
|
A1["STB<br/>选通信号"] --> B1["锁存数据"]
|
|||
|
|
B1 --> C1["IBF<br/>缓冲器满"]
|
|||
|
|
C1 --> D1["INTR<br/>中断请求"]
|
|||
|
|
end
|
|||
|
|
subgraph "方式 1 输出联络信号"
|
|||
|
|
A2["OBF<br/>输出缓冲满"] --> B2["等待外设取走"]
|
|||
|
|
B2 --> C2["ACK<br/>应答确认"]
|
|||
|
|
C2 --> D2["INTR<br/>可写下一个"]
|
|||
|
|
end
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方式 2 — 双向总线 I/O(有固定联络信号 + 状态字)
|
|||
|
|
|
|||
|
|
**仅端口 A 可用**,同一端口既可输入又可输出:
|
|||
|
|
- 占用 C 口 **5 根**引脚(PC3~PC7)
|
|||
|
|
- 兼顾输入和输出的联络信号
|
|||
|
|
- 有确定的**状态字**反映当前传输方向
|
|||
|
|
|
|||
|
|
### 3. 方式对比速查图
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
A["82C55A<br/>三种工作方式"] --> B["方式 0<br/>基本 I/O<br/>无联络信号<br/>最灵活"]
|
|||
|
|
A --> C["方式 1<br/>选通 I/O<br/>有固定联络信号<br/>固定时序"]
|
|||
|
|
A --> D["方式 2<br/>双向 I/O<br/>有固定联络信号<br/>固定时序+状态字"]
|
|||
|
|
style B fill:#ffd,stroke:#333,color:#000
|
|||
|
|
style C fill:#dfd,stroke:#333,color:#000
|
|||
|
|
style D fill:#dfd,stroke:#333,color:#000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> [!question] 思考题
|
|||
|
|
> 为什么方式 0 没有固定联络信号?这在实际应用中意味着什么?
|
|||
|
|
>
|
|||
|
|
> 答:方式 0 是最基本的 I/O 方式,CPU 直接通过 IN/OUT 指令读写端口数据,不依赖任何握手协议。这意味着:
|
|||
|
|
> 1. 需要外设和 CPU 速度匹配(否则数据可能丢失)
|
|||
|
|
> 2. 适用于无条件传送场景(如 LED 显示、开关读取)
|
|||
|
|
> 3. 编程简单,但可靠性不如方式 1/2
|
|||
|
|
|
|||
|
|
### 4. 端口 C 引脚复用
|
|||
|
|
|
|||
|
|
方式 1/2 下,端口 C 的部分引脚被用作联络信号:
|
|||
|
|
|
|||
|
|
| 端口配置 | 占用的 C 口引脚 | 数量 |
|
|||
|
|
|----------|----------------|:----:|
|
|||
|
|
| A 口方式 1 输入/输出 | PC3、PC4、PC5 或 PC3、PC6、PC7 | 3 |
|
|||
|
|
| A 口方式 2 | PC3、PC4、PC5、PC6、PC7 | **5** |
|
|||
|
|
| B 口方式 1 输入/输出 | PC0、PC1、PC2 | 3 |
|
|||
|
|
|
|||
|
|
> [!tip] 规律记忆
|
|||
|
|
> - 每个方式 1 端口固定占用 **3 根** C 口引脚
|
|||
|
|
> - 方式 2 额外增加 2 根 → 共 **5 根**
|
|||
|
|
> - B 口的联络信号全部来自 C 口低 3 位(PC0~PC2)
|
|||
|
|
|
|||
|
|
### 5. 真题回顾
|
|||
|
|
|
|||
|
|
> [!example] 【真题】82C55A 有 3 种工作方式——方式 0、方式 1 和方式 2,其中方式\_\_\_\_\_\_有固定联络信号线,固定时序和确定的状态字。
|
|||
|
|
>
|
|||
|
|
> **答案**:1 和 2
|
|||
|
|
|
|||
|
|
## 关联笔记
|
|||
|
|
|
|||
|
|
- [[82C37A DMA控制器]]
|
|||
|
|
- [[接口分层结构]]
|
|||
|
|
- [[接口与通讯技术/复习文档/8255A可编程并行接口]]
|
|||
|
|
- [[接口与通讯技术/试题册/index|试题册索引]]
|