第 6 章 并行 /串行通信接口教 案作者:李芷
2003.5.10
《微机原理与接口技术》
第 6章 并行 /串行通信接口
6.1 可编程并行 I/O接口 8255A
6.2 串行通信和串行 I/O接口
6.3 可编程串行 I/O接口 8251A
并行通信 串行通信
Dn~D0
计算机计算机或外设数据线信号地控制 /联络线数据线信号地控制 /联络线计算机计算机或外设
6.1 可编程并行 I/O接口 8255A
Intel 8255A是一个广泛用于微机系统的可编程并行 I/O接口,不需附加外部电路便可和大多数外设直接连接,使用十分方便 。 8255A采用 40
脚双列直插式封装,有 24条 I/O管脚 。
6.1.1 8255A的内部结构和管脚
6.1.2 8255A的控制字
6.1.3 8255A的工作方式
6.1.4 8255A的应用示例
6.1.1 8255A的内部结构和管脚
1,8255A的内部结构图
D7~D0
RD
WR
A1
A0
RESET
CS
数据总线缓冲器读 /写控制逻辑端 口 C
( 低 4位)
端 口 A
端 口 C
( 高 4位)
端 口 B
A组控 制
B组控 制
PB7~PB0
PC7~PC4
PC3~PC0
PA7~PA0
6.1.1 8255A的内部结构和管脚
2,8255A的管脚特性
◆ 8255A与外设相连的有三个 8位数据端口:端口 A
( PA7~PA0),端口 B( PB7~PB0),端口 C
( PC7~PC) 。
◆ 8255A 内 部 有 A 组 ( PA7~PA0,PC7~PC4) 和 B 组
( PB7~PB0,PC3~PC0) 逻辑控制,分别控制 A,B组的工作方式和读 /写操作 。
◆ 8255A有一个 8位数据缓冲器,D7~D0( 双向,三态 ) 数据线与系统数据总线相连 。
◆ 8255A有六条读 /写控制逻辑管脚 ( RESET,WR,RD,
CS,A1,A0) 接收 CPU和译码电路的控制信号或地址信号 。
6.1.1 8255A的内部结构和管脚
3,8255A控制信号与传输操作的对应关系
CS RD WR A1 A0 传输操作说明
0 0 1 0 0 端口 A→ 数据总线
0 0 1 0 1 端口 B→ 数据总线
0 0 1 1 0 端口 C→ 数据总线
0 0 1 1 1 非法状态
0 1 0 0 0 数据总线 → 端口 A
0 1 0 0 1 数据总线 → 端口 B
0 1 0 1 0 数据总线 → 端口 C
0 1 0 1 0 数据总线 → 控制口
1 × × × × D7~D0呈高阻状态
6.1.2 8255A的控制字
1,方式选择控制
A组方式
0 0,方式
0 1,方式 1
1×,方式 2
A口
0,输出
1,输入
B组方式
0,方式 0
1,方式 1
特征位
D7 D6 D5 D4 D3 D2 D1 D0
1
PC7~PC4
0,输出
1,输入
PC3~PC0
0,输出
1,输入
B口
0,输出
1,输入
6.1.2 8255A的控制字
2,端口 C置位 /复位控制字未 用 位选择000,PC
0
001,PC1

111,PC7
置位 /复位
1:置位
0:复位特征位
D7 D6 D5 D4 D3 D2 D1 D0
0
6.1.3 8255A的工作方式
8255A有三种工作方式:
方式 0 —— 基本输入 /输出方式。通常用于不需联络的数据传输,A,B,C任何一个端口均可作为输入口或输出口使用。
方式 1 —— 选通输入 /输出方式。方式 1必须使用端口 C提供的 3位联络信号,且这些联络信号和端口 C
的管脚保持固定的对应关系,不能加以改变。
方式 2 —— 双向传输方式 。 方式 2相当于方式 1的输入和输出组合,需用端口 C提供的 5位联络信号。
8255A的端口 A可以选择方式 0,方式 1,方式 2
8255A的端口 B可以选择方式 0,方式 1
8255A的工作方式 0
◆ 方式 0可以将三个数据端口方便地组合成 ( 多达 16种组合 ) 各种位数的 I/O接口 。 各个端口都可用作并行输入或输出 。
◆ 方式 0可以使用在无条件传送和查询传送两种场合 。
◆ 若使用查询传送,利用端口 C一些位自定义为应答
“联络”信号,在其配合下实现端口 A和端口 B的查询式数据传输。做法是:端口 A或端口 B作为数据的输入 /输出口,端口 C划分为高 4位和低 4位两部分,
分别选择一些位作为状态 /选通信号的输入,或者控制 /选通信号的输出。
8255A的工作方式 1
端口 A,端口 B工作在方式 1的输入或输出时,由端口 C
提供规定的 3位联络信号 。
端口方式 联络线 输入信号 输出信号端口 A
方式 1
PC7 I/O OBFA
PC6 I/O ACKA∕INTEA
PC5 IBFA I/O
PC4 STBA∕INTEA I/O
PC3 INTRA INTRA
端口 B
方式 1
PC2 STBB∕INTEB ACKB∕INTEB
PC1 IBFB OBFB
PC0 INTRB INTRB
8255A方式 1 的工作特点
◆ 选定方式 1,在规定一个端口的输入 /输出方式的同时,就自动规定了有关的联络,控制和中断请求信号 。
◆ 若采用中断方式,将 INTE置为 1,端口 A或端口 B可以使用各自的 INTR信号申请中断 。
◆ 若采用查询方式,CPU可以查询端口 A或端口 B相关 IBF信号的当前状态,决定是否能进行数据传输 。
◆ 端口 A和端口 B均可工作在方式 1的输入或输出方式 。 若端口 A和端口 B都工作在方式 1,则需端口 C的 6位做联络信号,剩下的 2位还可工作在方式 0的输入或输出方式 。 若端口 A和端口 B中只有一个工作在方式 1,而另一个工作在方式 0,则端口 C中有 3位作为方式 1的联络信号,端口
C其余 5位均可工作在方式 0的输入或输出方式 。
8255A的工作方式 2
◆ 8255A的方式 2是双向传输方式,只适用于端口 A。
◆ 方式 2需用端口 C的 5
位( PC7~PC3) 做指定的控制 /联络信号,
外设在端口 A的 8位数据线上分时向 CPU发送数据或从 CPU接收数据。
RD
WR
≥1 PC3
& &
INTE1
INTE2
PC7
PC6
PC4
PC5
STBA
IBFA
PA7~ 0
PC2-0
OBFA
ACKA
INTRA
A0
A1
D7~ 0 PA7~ 0
PB7~ 0
CS PC4~ 0
8255A PC5
A1 PC6
A0 PC7
CPU
(8088)
D7~ 0
AB 地址译码器M / IO 2764
A7~ 0
D7~ 0
A12~ 8
CE
PGM
VPP
+25V
1
6.1.4 8255A的应用示例
【例 6.1】 8255A用作 2764 EPROM存储器编程接口。
8255A的端口地址为 0F8H~0FBH,编程数据放在 8000H
开始的 8KB缓冲器内。
6.1.4 8255A的应用示例
【例 6.2】 8255A作为中断方式的字符打印机接口,端口地址为 0C0H~0C6H的偶地址。
OBF
打印机
ACK
PA7~ 0
PC0
8255
PC6
PC3 ACKA
INTRA
CPU
(8088)
D7~ 0
接 8259A的 IR3
6.2 串行通信和串行 I/O接口
6.2.1 串行通信方式
6.2.2 串行通信规程
6.2.3 串行 I/O接口的基本结构
6.2.1 串行通信方式串行通信按照通信数据的格式,可分为:
异步 通信 方式 —— 异步通信是利用字符的再同步技术,
实现一个个数据传送的通信方式。
同步 通信 方式 —— 同步通信是利用同步时钟和同步字符技术,实现一批数据传送的通信方式。
串行通信的重要指标,传输速率、波特率异步通信方式
◆ 异步通信方式的数据以字符为单位 。 各个字符可以连续传送,
也可以间断传送 。 异步通信双方各自用自己的时钟信号来控制发送和接收,通信是随机进行的 。
◆ 异步通信方式规定每个字符由起始位,数据位,奇 /偶校验位,
停止位 ( 共 7~12位 ) 组成,这四部分信息合称为字符帧 (Frame)。
两个字符之间为若干个空闲位 。
1 1 1 1 0 0/1 …
起始位第 n个字符空闲位停止位
1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
8位数据位高位低位起始位奇偶校验位第 n+1个字符同步通信方式
◆ 同步通信方式以若干字符组成的数据块为传输单位,是一种连续传送数据的方式。
◆ 同步通信方式以 1/2个同步字符指示数据块的开始,然后发送端连续发送数据块的一个个字符,接收端连续接收字符,直到一个数据块传送结束。
◆ 同步通信要求使用统一的时钟,保证双方的时钟频率和相位完全相同。发送方除了传送数据外,还要把时钟信号(同步信号)
同时传送出去。每一位的开始由同步时钟信号提供,每一个数据块的开始由同步字符提供。
1/2个同步字符 数据 1 2 3 …… n 1/2个 CRC校验字符传输速率和波特率
◆ 串行通信中有一个重要的指标叫做 传输速率,它定义为每秒钟传送 2#数码的位数 ( 比特数 ),以位 /秒 ( b/s) 为单位 。 传输速率反映了串行通信的速率,也反映了对传输通道的要求 ──传输速率越高,要求传输通道的频带越宽 。
传输速率等于每秒传送的字符数和每个字符位数的乘积 。
◆ 串行通信中另一个重要的指标叫做 波特 ( baud) 率,它定义为每位传送时间的倒数 。 每次传送 1位时,波特率大小和传输速率相等 。 使用调相技术可以同时传输 2位或 4位,
这时,传输速率大于波特率 。 一般异步通信的波特率在
50~9600波特之间 。
6.2.2 串行通信规程
1,全双工与半双工全双工 的通信站之间有两对传输信号线,每个通信站任何时刻既可以发送,又可以接收。
半双工 的通信站之间只有一对传输线,尽管传输可以双向,但同一时刻只能有一个通信站发送。
2,信号的调制 /解调为避免信号发生衰减和畸变,用被调制信号控制调制信号的某个参数(例如,幅值,频率,相位等),使调制信号随着被调制信号变化的过程称为调制。经调制后参数随调制信号变化的信号称为已调制信号。反之,从已调制信号中还原出被调制信号的过程称为解调。
把调制器和解调器集成在一起,称为 调制解调器( MODEM) 。
3,串行通信总线 RS-232C
串行通信 的调制 /解调 示意数字信号 数字信号模拟信号计算机 MODEM
计算机MODEM
串行通信总线 RS-232C
◆ RS-232C广泛应用于数据终端设备 ( DTE) 和数据通信设备
( DCE) 之间的通信 。
◆ RS-232C总线采用 EIA电平 ( 负逻辑 ) 标准,-5V~-15V为,1”,
+5V~+15V为,0” 。 TTL信号和 RS-232C信号之间要有相应的电平转换电路 。
◆ RS-232C使用 D型 25芯 ( DB-25) 或 D型 9芯 ( DB-9) 连接器 。
◆ RS-232C信号:
保护地线,信号地线 GND。
接收线 RxD,发送数据线 TxD 。
控制信号:请求发送 RTS,允许发送 CTS,通信设备 (DCE)准备好 DSR,终端设备 (DTE)准备好 DTR,音响指示 RI,载波检测
DCD。
6.2.3 串行 I/O接口的基本结构联络信号串入串出发送时钟接收时钟数据总线收发器控制信号逻辑地址译码中断请求
D7~D0
读 /写端口选信号片选信号
CS
A0
数据输入寄存器数据输出寄存器串入 /并出并入 /串出状态寄存器 控制寄存器
6.3 可编程串行 I/O接口 8251A
6.3.1 8251A的内部结构和管脚
6.3.2 8251A的工作过程
6.3.3 8251A的控制 /状态字
6.3.4 8251A的应用示例
Intel 8251A是具有多种同步 /异步通信的接收 /发送功能的可编程串行通信接口 。
6.3.1 8251A的内部结构和管脚
8251A的功能特点
◆ 使用单一 +5V电源和单相时钟。
◆ 接收、发送数据分别有各自的缓冲器,可以进行全双工通信。
◆ 提供与外部设备,特别是调制解调器的联络信号,便于直接和通信线路相连接。
◆ 可以设定奇校验或偶校验。校验位的插入、检错及剔除都由芯片本身完成。
◆ 用于异步通信时,每个字符的位数可以是 5~8位,停止位可选 1位、
1.5位或 2位,波特率为 0~19200波特,时钟频率可设为波特率的 1倍、
16倍或 64倍。
◆ 用于同步通信时,每个字符的位数 5~8位可选,波特率的范围为
0~96000波特。可设为单同步、双同步或者外同步,同步字符可由用户自行设定。
6.3.1 8251A的内部结构和管脚
1,8251A的内部结构发送器发送控制
TxD
TxRDY
TxE
TxC
接收器接收控制
RxD
RxRDY
SYNDET
RxC
读 /写控制逻辑
RESET
CLK
C/D
RD
WR
CS
调制 /
解调控制
DTR
DSR
RTS
CTS
D7~ D0
状态缓冲器接收缓冲器发送数据 /
命令缓冲器
6.3.1 8251A的内部结构和管脚
2,8251A的管脚特性
D7~D0,双向,三态数据线 。
CLK,时钟信号,输入 。
RESET,复位信号,输入,高电平有效 。
CS,片选信号,输入,低电平有效 。
C/D,控制 /数据端口选择输入线 。
RD,WR,读选通信号,写选通信号,输入,低电平有效 。
RxRDY,接收准备好状态,输入,高电平有效 。
SYNDET,同步状态输出信号,或者外同步输入信号 。
TxRDY,发送准备好状态,输出,高电平有效 。
TxE,发送缓冲器空闲状态,输出 。
RxD,TxD,串行数据输入,串行数据输出 。
RxC,TxC,接收器时钟输入,发送器时钟输入 。
DTR,数据终端准备好状态,输出,低电平有效 。
DSR,数据准备好状态,输入,低电平有效 。
RTS,请求发送信号,输出,低电平有效 。
CTS,允许传送信号,输入,低电平有效 。
6.3.2 8251A的工作过程
1,8251A接收器的工作过程
◆ 8251A在异步方式接收中,当接收器接收到有效的起始位后,
便接收后续的数据位,奇偶校验位和停止位等 。 然后将数据送入寄存器 。 此后 RxRDY输出高电平,表示已收到一个字符,
CPU可以来读取 。
◆ 8251A在同步方式接收中,若程序设定 8251A外同步接收,则
SYNDET用于输入外同步信号 ( 来自 MODEM),SYNDET的正跳变启动接收数据 。 若程序设定 8251A内同步接收,则 8251A
先搜索同步字符 ( 同步字符事先由程序装在同步字符寄存器中 ) 。 每当 RxD线上收到一位信息就移入接收寄存器并和同步字符寄存器内容比较,若不相等则接收下一位后比较,直到两者相等 。 此时 SYNDET输出高电平,表示已搜索到同步字符 。
接下来便把接收到的数据逐个地装入接收数据寄存器 。
6.3.2 8251A的工作过程
2,8251A发送器的工作过程
◆ 8251A异步方式发送中,发送器在数据前加上起始位,
并根据编程设定在数据后加上校验位和停止位等,然后作为一帧信息从 TxD端逐位发送 。
◆ 8251A同步方式发送中,发送器先发送同步字符,然后逐位发送数据 。 若 CPU没有及时把数据写入发送缓冲器,则 8251A用同步字符填充,直至 CPU写入新的数据 。
6.3.3 8251A的控制字和状态字
1,8251A的控制 /状态字
8251A的串行通信要靠命令控制和状态查询等配合完成。
8251A除了发送、接收数据字符以外,还有与之相关的 方式控制字,命令控制字 和 状态字 的操作。
8251A的 方式控制字
00,同步 × 1
01,异步 × 1
10,异步 × 16
11,异步 × 64
00,5位数据位
01,6位数据位
10,7位数据位
11,8位数据位
× 0,不校验
0 1,奇校验
1 1,偶校验
× 0,内同步
0 1,双同步字
1 1,单同步字
00,无效
01,1位停止位
10,1.5位停止位
11,2位停止位
D7 D6 D5 D4 D3 D2 D1 D0
异步同步方式?
同步
8251A的 命令控制字
D7 D6 D5 D4 D3 D2 D1 D0
EN I R RTS ER SBRK RXE DTR TXEN
发送允许
1:允许,0:禁止接收允许
1:允许,0:禁止发送断点字符
1:迫使 TxD为低,0:正常数据终端准备好
1:迫使 DTR输出 0
进入搜索方式
1:进行 SYNC搜索内部复位
1,8251A内部复位出错复位
1:复位错误标志请求发送
1:迫使 RTS输出 0
8251A的 状态寄存器溢出错
1,表示未取走字符,
又输入了下一个字符
D7 D6 D5 D4 D3 D2 D1 D0
DSR SYNDET FE OE PE TxE RxRDY TxRDY
帧格式出错
1,表示未检测到有效停止位
1,奇偶错同管脚定义
6.3.3 8251A的控制字和状态字
2,8251A的初始化设置
No
8251A复位设置方式控制字同步方式输入同步字符输入第 2个同步字符设置命令控制字传送数据
Yes
Yes
No
No
No
Yes
Yes
复位 8251?
传送完?
双同步?
◆ 8251A的初始化流程在确保 8251A复位情况下进行。
◆ 首先输入方式控制字,以决定通信方式、数据位数、
校验方式等,若是同步通信方式则紧接着输入 1/2个同步字符,若是异步方式则这一步可省略,最后送入命令控制字。
◆ 8251A初始化过程的信息全部写入控制端口,特征是
C/D=1。
6.3.4 8251A的应用示例
【 例 6.3】 为 8086 CPU与 CRT终端设计 8251A的串行通信接口 。
8251A数据口地址为 300H,控制口地址为 302H。
采用异步传送方式,8位数据位,奇校验,1位停止位,波特率因子 16。 CPU用查询方式将显示缓冲区的字符,GOOD”
送 CRT显示 。
D7~D0 TxD
RxD
8251A
CS
C/ D GND
DSR
RD CTS
WR RxC
CLK TxC
1488
1489
CRT
终端波特率发生器
8086
AD15~ 0
ALE
RD
WR
CLK
A1
地址译码器
D7~ 0
地址锁存器
6.3.4 8251A的应用示例
【 例 6.4】 用 8251A作为串行接口的应用例 。 ( 例图 )
◆ MAX232实现 TTL电平与 EIA电平转换 。
◆ 8251A的 CLK时钟频率 2MHz,发送时钟 TxC和接收时钟
RxC由 8253的计数器 2的输出 OUT2提供 。 8253的计数器 2工作 于 方波 方 式,分频 值 52,则 OUT2 输 出频 率 约 为
38.46KHz。 要求 8251A的波特率为 2400,波特率因子必须选 16。
◆ 8251A的片选信号由 CPU的地址线 A7~A2译码输出,奇端口地址 0DAH,偶端口地址 0D8H。
◆ 8251A设置方式字之前,先送 3个 0再送 40H,确保
8251A复位。
例 6.4 线路图译码器
A9~A2
CLK
TxC TxD
RxC DTR
RD 8251A
WR
C/D
D7~D0 DSR
RxD
CS CTS
MAX
232
+5V
主频 2MHz
+5V
TxD
TDR
DSR
RxD
IOR
IOW
A0
A1
D7~D0 CLK2
8253
RD
WR
A0 OUT2
A1 CS
+5V