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

28 KiB
Raw Permalink Blame History

第 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-PC4B 组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 置位
; 例如:把 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/OA 口分时双向传输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

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 位示例):

       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=0TXEN=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

初始化程序

       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=18 位含义、归纳方法。
  • 【高频】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 的端口地址归纳 + 方式选择控制字归纳两大套路。