28 KiB
第 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 位并行数据端口:端口 A(PA7-PA0)、端口 B(PB7-PB0)、端口 C(PC7-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/O(0=出,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 对应 PC0,111 对应 PC7)
- D0 = 0 复位,1 置位
; 例如:把 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-PC6:I/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-PC4:I/O
方式 2(A 口双向):
- 仅 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
应用基本过程:
- 端口地址归纳(设计):根据硬件连接确定端口地址,或根据接口要求设计硬件。
- 控制字归纳:根据工作方式,按方式选择控制字格式归纳控制字。
- 编写程序:先初始化(写控制字),再写功能程序。
初始化与波形程序(方式 0 输出,A/B/C 全输出,故控制字 D7=1,方式 0 → D6D5=00,PC3、PC0 输出 → D3、D0 都要是 0 = 1000 0000B = 80H):
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 的基本功能
- 3 个独立的 16 位计数器(计数器 0、1、2),每个能完成 16 位减法计数。
- 每个计数器有 6 种工作方式(方式 0~5)。
- 能进行 二进制/十进制(BCD)减法计数。所谓十进制计数是指 BCD 码计数。
- 计数频率范围 0~2 MHz。
- 既可作计数器也可作定时器使用。
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 位):
- 8 位控制寄存器(实际只用 6 位)。
- 16 位计数初值寄存器(保存 CPU 写入的初值)。
- 16 位减 1 计数器(实际执行减 1 操作)。
- 16 位输出锁存器(CPU 读取当前计数值时使用)。
计数初值计算:
- 计数方式:计数初值 = 要求的计数次数 N。
- 定时方式:计数初值 = 定时时间 t / 时钟脉冲周期 TCLK = t × fCLK。
计数初值 0 等价于最大值:十进制 = 10000,二进制 = 65536(0000H 等于 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=计数器 0,01=计数器 1,10=计数器 2,11=非法 |
| RL1 RL0 | 00=锁存命令,01=只读/写低 8 位,10=只读/写高 8 位,11=先低 8 位后高 8 位 |
| M2 M1 M0 | 000=方式 0,001=方式 1,×10=方式 2,×11=方式 3,100=方式 4,101=方式 5 |
| BCD | 0=二进制计数,1=BCD(十进制)计数 |
编程原则:
- 控制字必须在计数初值之前写入;写入控制字有复位作用,使 OUT 变为各方式规定的初始状态。
- 16 位计数(初)值的读写必须遵守控制字 RL1、RL0 规定的顺序。
- 读取计数值有 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。
分析步骤:
- 端口地址:80H/81H/82H/83H。
- 控制字:通道 1(SC1SC0=01)、方式 0(M2M1M0=000)、只写低 8 位(RL1RL0=01,因为初值 400 < 256 不需要高字节,也可写 11=16 位)、BCD 计数(BCD=1)。
→ 控制字 = 01 01 000 1 = 0111 0001B = 71H(若选 16 位读写则为 0111 1011 = 7BH)。 - 计数初值:400,BCD 格式 → 04 00H(送两次:先低 00H,后高 04H)。
初始化程序(按 RL1RL0=01 只写低 8 位示例):
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 个组成部分:
- 数据总线缓冲器(与 CPU 数据总线接口)。
- 发送缓冲器(并行→串行,从 TXD 发出)。
- 接收缓冲器(RXD 接收串行数据→并行)。
- 读/写控制逻辑(接收 CPU 的 CS、RD、WR、C/D 等)。
- 调制解调器控制电路(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 不会执行命令字内容。
完整流程:
- 系统 RESET(或写命令字 D6=1 内部复位)。
- 写入 方式选择控制字。
- 异步方式:跳过;同步方式:输出 1~2 个同步字符。
- 写入 命令控制字(允许发送/接收、清错误标志等)。
- 进行数据传送;发送时查 TXRDY=1,接收时查 RXRDY=1。
- 工作中若需要可再次写命令字(含内部复位 IR=1)。
7.3.5 8251A 的应用举例(例 7.3.1:异步方式初始化)
题目:8251A 异步方式,波特率因子 16,每字符 7 位数据位,偶校验,2 个停止位,允许发送和接收。数据口地址 200H,控制口地址 201H。
方式选择控制字:
- 通信方式:异步×16 → D1D0 = 10
- 字符长度 7 位 → D3D2 = 10
- 偶校验(使用奇偶校验,校验类型由命令字决定) → D5 = 1,D4 = 1(偶校验=1)
- 2 位停止位 → D7D6 = 11
控制字 = 11 1 1 1 0 10 = 1111 1110B = FAH
命令控制字:
- 允许发送 → D0(TXEN)=1
- 允许接收 → D2(RXE)=1
- 清错误标志 → D4(ER)=1
- 其他位取 0(IR=0 不内部复位;SBRK=0 不发中止;RTS=0;DTR=0;EH=0)
命令字 = 00 0 0 1 0 1 0 1 = 0011 0111B = 37H
初始化程序:
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、INTE(A 口 INTE 用 PC4 控,B 口 INTE 用 PC2 控)。
- 输出:OBF、ACK、INTR、INTE(A 口输出 INTE 用 PC6 控,B 口输出 INTE 用 PC2 控)。
- 【高频】8255A 初始化编程步骤:归纳端口地址 → 归纳控制字 → 写控制字到控制口 → 通过数据口读写数据。
- 【常考】**74LS138(3-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 等价于 10000(BCD)或 65536(二进制)。
(三)8251A 考点
- 【高频】异步串行帧格式:起始位 + 数据位(5~8)+ 奇偶校验位(可选)+ 停止位(1/1.5/2)。起始位为 0,停止位为 1。
- 【高频】波特率因子:×1、×16、×64 三种异步方式(时钟 = 波特率因子 × 波特率)。
- 【高频】3 类引脚:
- 与 CPU:D7-D0、RD、WR、CS、CLK、RESET、C/D(区分控制口/数据口)、TXRDY、TXEMPTY、TXC、RXRDY、RXC、SYNDET。
- 与 Modem:DTR、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、TXRDY;PE/OE/FE 三个错误标志由命令字 ER 位清除。
- 【高频】初始化顺序(顺序错则失败):
- RESET(或命令字 D6=1 内部复位);
- 写方式选择控制字;
- 同步方式还要输出 1~2 个同步字符;
- 写命令控制字(允许收发、清错误标志等);
- 进行数据通信。
- 【高频】状态位 TXRDY ≠ 引脚 TXRDY:状态位 TXRDY 表示发送缓冲器空,引脚 TXRDY 还要 CTS=0 且 TXEN=1 时才置位。
(四)三大芯片共性考点
- 【高频】端口地址归纳:由 CS(高位译码)+ A1A0(低位地址)共同决定。
- 【高频】控制字/方式字各位含义——能根据题意写控制字(初始化编程核心)。
- 【高频】初始化编程 = 写控制字(控制口) + 写数据/初值(数据口)。
- 【常考】74LS138(3-8 译码器)、74LS245 收发器等辅助芯片功能。
三、常见题型与答题思路
1. 编程题:给定硬件连线,写 8255A / 8253 / 8251A 初始化程序
- 步骤 ①:根据 CS(74LS138 译码输出)和 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。
- 进一步:若要求输出方波(方式 3),2000 为偶数,占空比严格 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/O,C 口做联络线(STB/IBF/OBF/ACK/INTR),可中断或查询,工作节奏由外设决定。
- 8253 6 种方式对比:抓住 启动方式(软/硬)+ 计数值使用(一次/多次)+ 输出波形三要素即可答全。
复习建议:本章编程与计算并重。务必熟练画出三种芯片的控制字格式,能根据题目要求在 1 分钟内写出控制字二进制串,再转十六进制送 AL。重点练 8253 的计数初值计算和 8255A 的端口地址归纳 + 方式选择控制字归纳两大套路。