第 14 章 并行通信及其接口电路
-
Upload
scorpio-goldberg -
Category
Documents
-
view
90 -
download
1
description
Transcript of 第 14 章 并行通信及其接口电路
第 14 章 并行通信及其接口电路
本章主要内容1. 简单并行接口电路;2. 可编程并行接口电路 8255A 的结构及工作原
理;3. 8255A 的应用。
14.1 概述 在计算机和数据通信系统中,有两种基本的数据传送
方式,即串行数据传送方式和并行数据传送方式,也称串行通信和并行通信。
数据在单条一位宽的传输线上按时间先后一位一位地进行传送,称为串行传送;
数据在多位宽的传输线上各位同时进行传送,称为并行传送。
和串行传送相比,在同样的时钟速率下,并行传送的数据传输率较高。
并行通信往往适用于信息传输率要求较高,而传输距离较短的场合。
在本章,我们重点介绍并行通信及其所要求的并行接口电路,研究它们的组成、功能及典型的并行接口芯片的工作原理及使用方法。
首先介绍几种简单的 ( 不可编程 ) 并行输入输出接口电路,然后着重介绍可编程并行接口电路 8255A 及其典型应用。
14.2 简单的并行接口电路 在输入输出接口电路中,经常要对所传送的信号进行
缓冲、驱动和锁存。 能实现这种功能的接口芯片通常是简单的数据锁存器、
缓冲器以及双向总线收发器等。 本节扼要介绍三种常用的简单并行输入输出接口芯片,
它们是: 锁存器 74LS373 ; 缓冲器 74LS244 ; 数据总线收发器 74LS245 。
14.2.1 锁存器 74LS373
74LS373 是一种 8 位 D 锁存器电路 (D-Latch) ,具有三态控制输出,其逻辑电路及引脚图如图 14.1 所示。
图中小括号内的数字编号为芯片的引脚号。
图 14.1 74LS373 锁存器
G( 选通)
DG Q
(3)
(8)
(4)
(13)
(7)
(17)
(14)
(2)
(11)
(6)
(5)
(12)
(9)
(19)
(15)
(16)
3D
4D
5D
6D
7D
8D (18)
2D
1D
3Q
4Q
5Q
6Q
7Q
8Q
2Q
OE(1)
( a )逻辑电路
G OE
3D
4D
5D
6D7D
8D
2D
1D
3Q
4Q
5Q
6Q7Q
8Q
2Q
1Q
( b )引脚图
1Q
由图 14.1 可见,该电路由 8 个 D 锁存器构成 ( 图中仅画一个,其余与此相同 ) ,有 8 个输入端 1D ~ 8D ,8 个输出端 1Q ~ 8Q ,两个控制端:
选通端 G 和输出允许端 OE 。 当选通端 G 为高电平时,则 D 锁存器的输出跟随相应
输入数据端的逻辑电平; 当 G 变为低电平时,则 D 锁存器中的当前内容被锁存。 只有当输出允许信号 OE 有效 ( 为低电平 ) 时,锁存器
中的信息才出现在输出端 1Q ~ 8Q 上;如果 OE 为高电平,则输出处于高阻态。
74LS373 的真值表如表 14-1 所示。 该表中 H 为高电平, L 为低电平, Q0 为原状
态, Z 为高阻态, X 表示任意值 ( 为 H 或 L 均可 ) 。
表 14.1 74LS373 真值表
选通 G 输出允许 OE 输入 D 输出 Q
H L L L
H L H H
L L X Q0( 原状态)X H X Z (高阻态)
锁存器工作时间图
锁存器的应用t0 t1 t2
输入 D
选通
输出 Q
Q 跟随D
保持 t2 时 D 的锁存值
D0
D1
D n-1
Q n-1Q1
Q0
选通
n 位数据总线
从表 14-1 可以看到 74LS373 的功能为: 当选通端 G 为高电平,同时输出允许端 OE 为低电平时,
则输出 Q =输入 D( 输出 Q 跟随输入 D) ; 当选通端 G 为低电平,而输出允许端 OE 也为低电平时,
则输出 Q = Q0(Q0 为原状态,即选通端 G 由高电平变为低电平时输出端 Q 的状态 ) ;
当输出允许端 OE 为高电平时,无论选通端 G 为何值,输出端 Q 总为高阻态。
74LS373 是十分常用的锁存器电路,主要用来在总线传输电路中锁存地址信息或数据信息,并实现总线信号的缓冲与驱动。
与 74LS373 锁存器功能类似的芯片还有 Intel 8282/8283 等 。
14.2.2 缓冲器 74LS244 74LS244 是一种三态输出的 8 位缓冲器 / 驱动器电路 ,
其逻辑电路图和引脚图如图 14.2 所示。
图 14.2 74LS244 缓冲器
(a) 逻辑电路
(18)
(16)
(14)
(12)
(9)
(7)
(5)
(3)
1Y3
1Y4
2Y1
2Y2
2Y3
2Y4
1Y2
1Y1
1A3
1A4
2A1
2A2
2A3
2A4
1A2
1A1
___2G
___1G
(2)
(4)
(6)
(8)
(11)
(13)
(15)
(17)
(1)
(19) 1G 2G
1A3
1A4
2A1
2A22A3
2A4
1A2
1A1
1Y3
1Y4
2Y1
2Y22Y3
2Y4
1Y2
1Y1
( b )引脚图
由图 14.2 可见, 74LS244 有 8 个输入端,分为两路—— 1A1 ~ 1A4 和 2A1 ~ 2A4 ;
有 8 个输出端,也分为两路—— 1Y1 ~ 1Y4 和 2Y1 ~ 2Y4 。
两路数据传送分别由两个控制信号 1G 和 2G 控制: 当 1G 有效 ( 为低电平 ) 时, 1Y1 ~ 1Y4 的电平与 1A1 ~ 1A4 的电平相同,即输出反映输入的逻辑电平;
同样,当 2G 有效时, 2Y1 ~ 2Y4 的电平与 2A1 ~ 2A4的电平相同。而当 1G( 或 2G) 无效 ( 为高电平 ) 时,输出 1A1 ~ 1A4( 或 2A1 ~ 2A4) 为高阻态。
74LS244 缓冲器主要用于存储器地址驱动器、单向总线接收器和发送器等。例如,可将其 8 个输入端的某几位接地,其余接 +5V ,即可提供特定的 8 位二进制代码,如为某设备接口提供 8 位中断类型码。
14.2.3 数据总线收发器 74LS245 74LS245 是一种三态输出的 8 位双向总线收发器 (transc
eiver) ,其逻辑电路图和引脚图如图 14.3 所示。
图 14.3 数据总线收发器 74LS245
( a )逻辑电路
(2)
(5)
(3)
(6)
(4)
(8)
(7)
(18)
(1)
(16)
(17)
(14)
(15)
(11)
(13)
(12)
A3
A4
A5
A6
A7
A8 (9)
A2
A1
B3
B4
B5
B6
B7
B8
B2
(19)DIR _G
B1
_ G DIR
A2
A3
A5
A6
A7
A8
A1
( b )引脚图
B3
B4
B5
B6B7
B8
B2
B1
由图 14.3 可见, 74LS245 有 16个双向传输的数据端,即 A1 ~ A8 和 B1 ~ B8 ;另有两个控制端,即允许端 G和方向控制端 DIR。 G 用于允许该收发器的操作, DIR用于控制数据传送的方向 (A→B或 B→A) 。
由图 14.3(a) 可见,若 G 信号无效 ( 为高电平 ) ,则无论DIR为何种电平,下面两个“与门”的输出均为低电平,从而使两个方向上的三态门的输出均为高阻态,收发器处于“隔开”状态,即两个方向上的数据传送均不能进行。
若 G 信号有效 ( 为低电平 ) ,则可在某一个方向上进行数据传送,到底在哪个方向上进行传送,则由方向控制端 DIR的逻辑电平来决定。
74LS245 的真值表如表 14-2 所示。
74LS245 通常用于数据的双向传送、缓冲与驱动。 与 74LS245 功能类似的双向总线收发器电路还有 Intel
8286/8287 等。
表 14-2 74LS245 的真值表
允许 G 方向控制 DIR 数据传送方向L L BA
L H AB
H X 隔开
14.2.4 应用举例
1. 锁存器 74LS373 的应用 在 80386DX微机系统中, 需在地址总线上对 30 位地
址信号 A2 ~ A31 和 4 个字节允许信号 BE0 ~ BE3 进行锁存。
图 14.4给出了使用 5 片 74LS373 芯片对这些信息进行锁存的电路配置情况。
图 14.4 74LS373 用于地址信号锁存
___ ___ 字节允许 BE0~BE3
A2~A31
74LS373 G
__OE
74LS373 G
__OE
74LS373 G
__OE
74LS373 G
__OE
74LS373 G
__OE
经锁存的地址总线
AL24~AL31
AL16~AL23
AL8~AL15
AL2~AL7
___ ___ BEL0~BEL3
地址总线 A24~A31
A 16~A 23
A8~A15
A2~A7
ALE
注意,由于电路中 74LS373 的 OE 固定接为逻辑 0,所以其输出 AL2 ~ AL31 和 BEL0 ~ BEL3 将始终处于允许状态。
由图 14.4 可见 , 各片 74LS373 的选通端 G 均由 ALE(Address Latch Enable) 信号来驱动, ALE 即地址锁存允许信号,它是专门用来控制地址锁存器的一个总线信号。
2. 数据总线收发器 74LS245 的应用 图 14.5给出了用 74LS245 实现的总线接口中数据总
线收发器电路配置图。 对于像 80386DX 这样的 32 位微机系统,其外部数据
总线为 32 位,所以需 4块 74LS245 这样的电路来实现双向总线驱动。
图 14.5 中, 74LS245 的 DIR输入是由总线信号 DT/R来控制,而 G 是由 DEN控制。 DT/R和
DEN是系统中总线控制逻辑的输出信号。
图 14.5 数据总线收发器的应用
D0~D31
74LS245DIR
74LS245
74LS245
74LS245
DB24~DB31
DB16~DB23
DB8~DB15
DB0~DB7
D24~D31
D 16~D 23
D8~D15
D0~D7
____DEN __
DT/R系统数据总线
_ G
_ G
_ G
_ G
DIR
DIR
DIR
微处理器数据总线
数据总线收发器的一个主要功能是对数据总线信号进行缓冲与驱动,缓冲能力的大小取决于该电路在其输出端能够吸收多少电流。
74LS245 的 IOL( 输出低电平负载电流 ) 额定值为 64mA ,而 80386DX 数据总线最多仅能吸收 4mA 电流。所以,通过增设数据总线收发器电路可以极大地增强总线的驱动能力。
14.3 可编程并行接口
14.3.1 可编程并行接口的组成及其与 CPU 和外设的连接
通常,一个可编程并行接口电路应包括下列组成部分:(1) 两个或两个以上具有缓冲能力的数据寄存器。(2) 可供 CPU访问的控制及状态寄存器。(3) 片选和内部控制逻辑电路。
(4) 与外设进行数据交换的控制与联络信号线。(5) 与 CPU用中断方式传送数据的相关中断控制电路。 典型的可编程并行接口及其与 CPU 和外设的连接示意
图如图 14.6 所示。
图 14.6 可编程并行接口电路及其与 CPU 和外设的连接
CPU
输出设备
输入设备
并行接口电路数据总线
读控信号
写控信号
复位信号
中断响应信号
中断请求信号
地址 译码器 片选
输出缓冲寄存器
输入缓冲寄存器
控制寄存器
状态寄存器
中断逻辑
并行输出数据
并行输入数据
输出准备好
输出回答
输入准备好
输入回答
14.3.2 可编程并行接口的数据输入输出过程 将以 8255A 为例进行讨论。
14.4 可编程并行通信接口 8255A
14.4.1 8255A 的性能概要 Intel 8255A 是一个为 Intel 8080 和 8085微机系统设
计的通用可编程并行接口芯片,也可应用于其他微机系统之中。
8255A采用 40 脚双列直插封装,单一 +5V 电源,全部输入输出与 TTL 电平兼容。
用 8255A连接外部设备时,通常不需要再附加其他电路,给使用带来很大方便。
8255A 有三个输入输出端口: 端口 A 、端口 B 、端口 C 。
每个端口都可通过编程设定为输入端口或输出端口,但有各自不同的方式和特点。
端口 C可作为一个独立的端口使用,但通常是配合端口 A 和端口 B的工作,为这两个端口的输入输出提供控制联络信号。
14.4.2 8255A 芯片引脚分配及引脚信号说明
8255A 芯片引脚分配如图 14.7 所示。
8255A 芯片的 40条引脚,大致可分为三类:(1) 电源与地线共 2条: Vcc、 GND 。(2) 与外设相连的共 24条: PA7 ~ PA0 : 端口 A 数据信号。 PB7 ~ PB0 : 端口 B数据信号。 PC7 ~ PC0 : 端口 C数据信号。
图14.7 8255A芯片引脚分配
1 40
2 39
3 38
4 37
5 36
6 35
7 34
8 33
9 8255A 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
PA3
PA2
PA1
PA0
RD
CS
GND
A1
A0
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
PB0
PB1
PB2
PA4
PA5
PA6
PA7
WR
RESET
D0
D1
D2
D3
D4
D5
D6
D7
VCC
PB7
PB6
PB5
PB4
PB3
1 40
2 39
3 38
4 37
5 36
6 35
7 34
8 33
9 8255A 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
PA3
PA2
PA1
PA0
RD
CS
GND
A1
A0
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
PB0
PB1
PB2
PA4
PA5
PA6
PA7
WR
RESET
D0
D1
D2
D3
D4
D5
D6
D7
VCC
PB7
PB6
PB5
PB4
PB3
通用插座D-40脚
通用插座B-20脚通用插座A-20脚
通用插座-16脚 通用插座-14脚
单脉冲
逻辑笔
开关K7-K0
LED显示(L7-L0)
七段数码管(abc…fdp)
位码
复位
触发器
时钟脉冲直流信号
I/O地址 / 选通信号
喇叭
50线插头
总线
电源开关
计数器8253
DA 0832
AD 0809
并口8255A
8253通道0 / 1
8255A-PC口
8255A-PA口
+5V
+5V
GND
GND
+5V
模拟量输入
模拟量输出
DMA/IO跳线端子
继电器
步进电机
话筒
(3) 与 CPU相连的共 14条: RESET: 复位信号,高电平有效。当 RESET信号有效
时,所有内部寄存器都被清除。同时, 3 个数据端口被自动设置为输入端口。
D7 ~ D0: 双向数据线,在 8080 、 8085 系统中, 8255A 的 D7 ~ D0 与系统的 8 位数据总线相连;
在 8086系统中,采用 16位数据总线, 8255A 的 D7 ~ D0 通常是接在 16位数据总线的低 8 位上。
CS: 片选信号,低电平有效。该信号来自译码器的输出,只有当 CS 有效时,读信号 RD 和写信号WR才对8255A 有效。
RD :读信号,低电平有效。它控制从 8255A读出数据或状态信息。
WR : 写信号,低电平有效。它控制把数据或控制命令字写入 8255A 。
A1 、 A0 : 端口选择信号。 8255A 内部共有 4 个端口( 即寄存器 ) : 3 个数据端口 ( 端口 A 、端口 B、端口C) 和 1 个控制端口 ,当片选信号 CS 有效时,规定 A1 、 A0 为 00 、 01 、 10 、 11 时,分别选中端口 A 、端口 B 、端口 C 和控制端口。
CS 、 RD 、WR、 A1 、 A0 这五个信号的组合决定了对三个数据端口和一个控制端口的读写操作,如表 14-3 所示。
表 14-3 8255A 端口选择和基本操作
A1 A0 输入操作(读)0 0 0 1 0 端口 A 数据总线0 1 0 1 0 端口 B 数据总线1 0 0 1 0 端口 C 数据总线
输出操作(写)0 0 1 0 0 数据总线端口 A
0 1 1 0 0 数据总线端口 B
1 0 1 0 0 数据总线端口 C
1 1 1 0 0 数据总线控制字寄存器无操作情况
X X X X 1 数据总线为三态(高阻)1 1 0 1 0 非法操作X X 1 1 0 数据总线为三态(高阻)
RD WR cs
14.4.3 8255A 内部结构方块图
8255A 内部结构方块图如图 14.8 所示。
图 14.8 8255A 内部结构方块图
RESET
A 组端口 A
( 8 位)
A 组端口 C
(高 4 位)
B 组端口 C
(低 4 位)
B 组端口 B
( 8 位)
I/O PA7~PA0
I/O PC7~PC4
I/O PC3~PC0
I/O PB7~PB0
A 组控制
B 组控制
数据总线缓冲器
读写控制逻辑
__RD__WRA1
A0
__CS
电源
+5V
GND
8 位内部数据总线
D7~D0
双向数据总线
由图 14.8 可以看出, 8255A 由以下几部分组成:
(1) 数据总线缓冲器 这是一个双向三态 8 位数据缓冲器,它是 8255A 与 CPU数据总线的接口。
输入数据、输出数据以及 CPU发给 8255A 的控制字和从 8255A读出的状态信息都是通过该缓冲器传送的。
(2) 端口 A 、端口 B 、端口 C 8255A 有三个 8 位端口 ( 端口 A 、端口 B、端口 C) ,各端口可由程序设定为输入端口或输出端口。
在使用中,端口 A 和端口 B常常作为独立的输入端口或输出端口。
端口 C也可以作为输入端口或输出端口,但往往是用来配合端口 A 和端口 B的工作。
在方式字的控制下,端口 C可以分成两个 4 位的端口,分别用来为端口 A 和端口 B提供控制和状态信息。
(3) A 组控制和 B 组控制 A 组控制——控制端口 A 及端口 C的高 4 位。 B组控制——控制端口 B及端口 C的低 4 位。(4) 读写控制逻辑 读写控制逻辑负责管理 8255A 的数据传输过程。
14.4.4 8255A 的控制字
1. 方式选择控制字 方式选择控制字的格式如图 14.9所示。
图 14.9 8255A 方式选择控制字
1 D6 D5 D4 D3 D2 D1 D0
方式选择控制字标识位
A 组方式选择00 方式 001 方式 11x 方式 2 端口 A
1 输入0 输出
PC3~PC0: 1 输入 (方式 0 时) 0 输出
端口 B: 1 输入 0 输出
B 组方式选择: 0 方式 0 1 方式 1
PC7~PC4: 1 输入(方式 0 时) 0 输出
假定要求 8255A 的各个端口工作于如下方式: 端口 A—— 方式 0 ,输出; 端口 B—— 方式 0 ,输入; 端口 C的高 4 位——方式 0 ,输出; 端口 C的低 4 位——方式 0 ,输入。 那么,相应的方式选择控制字应为 10000011B(83H) 。
在实验系统中 8255A 控制口的地址为 28BH ,则执行如下三条指令即可实现上述工作方式的设定。
MOV DX, 28BH MOV AL, 83H OUT DX , AL ; 将方式选择控制字写入控制口
2. 端口 C 按位置 1 /置 0 控制字 可以用专门的控制字实现对端口 C 按位置 1/置 0操
作,用以产生所需的控制功能,这种控制字就是“端口 C按位置 1/置 0 控制字”。
该控制字的具体格式如图 14.10 所示。
图 14.10 端口 C 按位置 1/ 置 0 控制字
0 D6 D5 D4 D3 D2 D1 D0
x x x
无关
1: 置 1
0: 置 0
00001111
端口 C 按位置 1/ 置 0控制字标识位 位选择
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
00110011
01010101
需要指出的是,端口 C 按位置 1/置 0 控制字是对端口 C的操作控制信息,因此该控制字必须写入控制口,而不应写入端口 C 。
控制字的 D0 位决定是置“ 1”操作还是置“ 0”操作,但究竟是对端口 C的哪一位进行操作,则决定于控制字中的 D3 、 D2 、 D1 位。
例如,要实现对端口 C的 PC6位置“ 0” ,则控制字应为 00001100B(0CH) 。
设 8255A 的控制口地址同上,则执行下列指令即可实现指定的功能:
MOV DX,28BH MOV AL , 0CH ; OUT DX , AL ; 将“端口 C 按位置 1/置 0 控制
字”写入控制口,实现对 PC6位置“ 0”
14.4.5 8255A 的工作方式
1. 方式 0 方式 0 也叫基本输入/输出方式。 在这种方式下,端口 A 和端口 B可以通过方式选择控
制字规定为输入口或者输出口; 端口 C分为高 4 位 (PC7 ~ PC4) 和低 4 位 (PC3 ~ PC
0) 两个 4 位端口,这两个 4 位端口也可由方式选择控制字分别规定为输入口或输出口。
这四个并行口共可构成 24=16种不同的使用组态。 利用 8255A 的方式 0 进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向 LED显示器的输出,从二进制开关装置的输入等。
2. 方式 1
方式 1 也叫选通的输入/输出方式。 和方式 0 相比,最主要的差别就是当端口 A 和端口 B
工作于方式 1 时,要利用端口 C来接收选通信号或提供有关的状态信号,而这些信号是由端口 C的固定数位来接收或提供的,即信号与数位之间存在着对应关系。
这种关系不可以用程序的方法予以改变。
(1) 方式 1 输入 当端口 A 和端口 B工作于“方式 1 输入”时,端口 C
控制信号定义如图 14.11 所示。 该图中还给出了相应的方式选择控制字。
图 14.11 8255A 方式 1 输入
1 0 1 1 1/0
A 组方式 1
D7 D6 D5 D4 D3 D2 D1 D0
PC6 , 7
1 输入0 输出
端口 A 输入
INTEB
PC2
PC1
____STBB
IBFB
PB7~PB0
___RD
PC0
D7~D0
INTRB
方式 1 输入(端口 B )
INTEA
PC4
PC5
PC6,7
2I/O
____STBA
IBFA
PA7~PA0
___RD
PC3
D7~D0
INTRA
方式 1 输入(端口 A )
1 1 1
D7 D6 D5 D4 D3 D2 D1 D0
B 组方式 1
端口 B 输入
对于图 14.11 中所示的控制信号说明如下: STB(Strobe): 选通信号,低电平有效。它是由外设送给 8255A 的输入信号,当其有效时, 8255A 接收外设送来的一个 8 位数据。
IBF(Input Buffer Full): “ 输入缓冲器满”信号,高电平有效,它是一个 8255A 送给外设的联络信号。
当 IBF 为高电平时,表示外设的数据已送进输入缓冲器中,但尚未被 CPU 取走,通知外设不能送新数据;
只有当 IBF 变为低电平时,即 CPU已读取数据,输入缓冲器变空时,才允许外设送新数据。
IBF信号是由 STB使其置位 ( 变为高电平 ) ,而由读信号 RD 的上升沿使其复位 ( 变为低电平 ) 。
INTR(Interrupt Request) : 中断请求信号,高电平有效。
它是当 STB 为 1 、 IBF 为 1 且 INTE 也为 1( 中断允许 ) 时被置为高电平。
也就是说,当选通信号结束 (STB=1) ,已将一个数据送进输入缓冲器 (IBF=1) ,并且端口处于中断允许状态(INTE=1) 时, 8255A 的 INTR端被置为高电平,向 CPU发出中断请求信号。
当 CPU 响应中断读取输入缓冲器中的数据时,由读信号 RD 的下降沿将 INTR置为低电平。
INTEA(Interrupt Enable): 端口 A 中断允许信号。 INTEA没有外部引出端,它实际上就是端口 A 内部的中断允许触发器的状态信号。
INTEA 由 PC4 的置位/复位来控制, PC4=1 时,使端口A 处于中断允许状态。
INTEA
controlled by bit set/reset of PC4
INTEB : 端口 B中断允许信号。与 INTEA 类似, INTEB也没有外部引出端,它是端口 B内部的中断允许触发器的状态信号。
由 PC2 的置位/复位来控制, PC2=1 时,使端口 B处于中断允许状态。
另外,在方式 1 输入时, PC6 和 PC7 两位还闲着未用。如果要利用它们,可用方式选择控制字中的 D3 位来设定。
方式 1 输入工作时序图如图 14.12 所示。
图 14.12 方式 1 输入工作时序图
来自外设的输入数据
___STB
IBF
INTR___RD
tRIB
tST
tSIB
TSIT
tRIT
tPS
tPH
图 14.12 中的参数说明
Tmin Tmax
tST 选通脉冲的宽度 500ns
tSIB 选通脉冲有效到IBF有效的时间 300ns
tSIT___STB=1到中断请求INTR有效的时间 300ns
tPH 数据保持时间 180ns
tPS ___数据有效到STB无效的时间 0
tRIT 有效到中断请求信号撤除的时间 400ns
tRIB 为1到IBF为0的时间 300ns
参数 说明 8255A
RD
RD
(2) 方式 1 输出 当端口 A 和端口 B工作于方式 1 输出时,方式选择
控制字及相应的端口 C控制信号定义如图 14.13 所示。
图 14.13 8255A 方式 1 输出
1 0 1 0 1/0
A 组方式 1
D7 D6 D5 D4 D3 D2 D1 D0
PC4 , 5
1 输入0 输出
端口 A 输出
1 1 0
D7 D6 D5 D4 D3 D2 D1 D0
B 组方式 1
端口 B 输出
INTEA
PC7
PC6
PC4,5
2I/O
____OBFA
ACKA
PA7~PA0
___WR
PC3
D7~D0
INTRA
方式 1 输出(端口 A )
INTEB
PC1
PC2
____OBFB
ACKB
PB7~PB0
___WR
PC0
D7~D0
INTRB
方式 1 输出(端口 B )
对图 14.13 中所示的控制信号说明如下: OBF(Output Buffer Full): “ 输出缓冲器满”信号,低
电平有效,它是 8255A 输出给外设的一个控制信号。 当其有效时,表示 CPU 已经把数据输出给指定端口,
通知外设把数据取走。 它是由写信号WR的上升沿置成有效 ( 低电平 ) ,而由
ACK信号的有效电平使其恢复为高电平。
ACK(Acknowledge): 外设响应信号,低电平有效。当其有效时,表明CPU通过 8255A 输出的数据已经由外设接收。它是对 OBF的回答信号。
INTR(Interrupt Request): 中断请求信号,高电平有效。它是 8255A 的一个输出信号,用于向 CPU发出中断请求。 INTR是当 ACK、 OBF和 INTE都为“ 1” 时才被置成高电平 ( 向 CPU发出中断请求信号 ) ;写信号 WR的上升沿使其变为低电平 (清除中断请求信号 ) 。
INTEA : 端口 A 中断允许信号,由 PC6的置位 /复位来控制,PC6=1 时,端口 A 处于中断允许状态。
INTEB : 端口 B中断允许信号,由 PC2 的置位 /复位来控制,PC2=1 时,端口 B处于中断允许状态。
另外,在方式 1 输出时, PC4 、 PC5 两位还闲着未用,如果要利用它们可用方式选择控制字的 D3 位来设定。
图 14.14 方式 1 输出工作时序图
INTR
___WR
___OBF
____ACK
输出tAK tAIT
tWIT
tWOB
tAOB
tWB
图 14.14 中参数说明
Tmin Tmax
tWIT 从写信号有效到中断请求无效的时间 850ns
tWOB 从写信号无效到输出缓冲器满的时间 650ns
tAOB___ ___ACK有效到OBF无效的时间 350ns
tAK___ACK脉冲的宽度 300ns
tAIT___ACK为1到发新的中断请求的时间 350ns
tWB 写信号撤销到数据有效的时间 350ns
参数 说明 8255A
14.4.6 8255A 的状态字 8255A 工作于方式 1 和方式 2 时的状态字是通过读端
口 C的内容来获得的。1. 方式 1 状态字格式 方式 1 状态字格式如图 14.16所示。
图 14.16 方式 1 状态字格式
D7 D6 D5 D4 D3 D2 D1 D0
A 组 B 组
( b )方式 1 输出状态字格式
____ _____ OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB
D7 D6 D5 D4 D3 D2 D1 D0
A 组 B 组
( a )方式 1 输入状态字格式
I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB
2. 方式 2 状态字格式 方式 2 的状态字也是从端口 C读取。 方式 2 状态字的格式如图 14.17 所示。
图 14.17 方式 2 状态字格式
D7 D6 D5 D4 D3 D2 D1 D0
A 组状态 B 组状态
OBFA INTE1 IBFA INTE2 INTRA
_____I/O I/O I/O
方式 1
方式 0
INTEB OBFB INTRB INTEB IBFB INTRB
输出时 输入时_____
14.4.7 8255A 应用举例 例 14.1 8255A 工作于方式 0 ,利用 8255A 将外设开关的二进制状态从端口 A 输入,经程序转换为对应的LED段选码 ( 字形码 ) 后,再从端口 B输出到 LED显示器。
具体连线图如图 14.18(a) 所示。 LED显示器如图 14.18(b) 所示。
图14.18 8255A的应用
地址译码
地址
CPU
(8088)
RD
WR
A0
A1
__
__
D7~D0
8255A
RD
WR
A0
A1
__
__
PA0
PA1
PA2
PA3
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
+5V
2K×4
K0
K1
K2
K3
a
b
c
d
e
f
g
h
+5V120
74LS04 LED(a) 连线图
地址译码
地址
CPU
(8088)
RD
WR
A0
A1
__
__
D7~D0
8255A
RD
WR
A0
A1
__
__
PA0
PA1
PA2
PA3
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
+5V
2K×4
K0
K1
K2
K3
a
b
c
d
e
f
g
h
+5V120 欧姆
74LS04 LED(a) 连线图
a
b
c
d
e
f
g
(b)LED显示器
h
设 8255A 的端口地址为: 端口 A——D0H ,端口 B——D1H ,端口 C——D2H ,控制口—— D3H 。则本例的初始化及输入、输出控制程序如下所示。
DATA SEGMENT SSEGCODE DB 3FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H DB 7FH , 67H , 77H , 7CH , 39H , 5EH , 79H , 71H DATA ENDS CODE SEGMENT ASSUME CS: CODE , DS: DATA START : MOV AX, DATA MOV DS, AX MOV AL , 90H ;设置方式选择控制字, A 口工作于方 式 0 输入, B 口工作于方式 0 输出 OUT 0D3H, AL RDPORTA : IN AL , 0D0H ; 读 A 口 AND AL , 0FH ; 取 A 口低 4 位 MOV BX , OFFSET SSEGCODE ; 取 LED 段选码表首地址 XLAT ;查表, AL←(BX+AL)
OUT 0D1H , AL ; 从 B 口输出 LED 段选码,显示相应字形符号 MOV AX , XXXXH ; 延时 DELAY : DEC AX ; JNZ DELAY ; MOV AH , 1 ; 判断是否有键按下 INT 16H ; JZ RDPORTA ; 若无,则继续读端口 A MOV AH , 4CH ; 否则返回 DOS INT 21H CODE ENDS END START
例 14.2 8255A 工作于方式 0 ,用 8255A 作为以查询方式工作的打印机接口,如图 14.19 所示。
图 14.19 8255A 作为打印机接口
CPU 系统总线8255A
PA7~PA0打印机
PC6
PC2
___ STB BUSY
工作原理为 : 当主机开始打印输出时,先测试打印机忙 (BUSY) 信号,
如果打印机处于忙状态,则 BUSY 信号为 1 ; 反之,则 BUSY 信号为 0 。 当检测到 BUSY 信号为 0 时,则主机可通过 8255A 向打印机输出一个字符。
此时,还需输出一个选通信号 (负脉冲 ) 给打印机的 STB端,用此负脉冲作为字符送到打印机输入缓冲器的打入脉冲。
用 8255A 的端口 A 作为打印输出数据口,工作于方式0 ;端口 B 不用;端口 C 也工作于方式 0 ,端口 C的PC2 作为 BUSY 信号输入端,所以 PC3 ~ PC0 应设定为输入方式;
PC6作为选通信号输出端,所以 PC7 ~ PC4 应设定为输出方式。
设打印字符存放在内存 2000H 单元 。 8255A 的端口地址为: 端口 A—D0H ,端口 B—D1H ,端口 C—D2H ,控制
口— D3H 则初始化及打印控制子程序如下所示:
BEGIN : MOV AL , 81H ; 方式选择控制字,使 A 、 B 、 C 三个端口工作于方式 0 , OUT 0D3H , AL ; 端口 A 为输出, PC7 ~ PC4 为输出, PC3 ~ PC0 为输入 MOV AL , 0DH ; 用“端口 C 按位置 1/ 置 0 控制字”置 PC6=1 ,使 STB 为高电平 OUT 0D3H , AL TESBY : IN AL , 0D2H ; 读端口 C TEST AL , 04H ; 测试 PC2(BUSY) JNZ TESBY ;如 PC2=1(BUSY 信号有效 ) 打印机处于忙状态,继续查询 MOV AL , DS: [ 2000H ]; PC2=0(BUSY 信号无效 ) ,取打印字符 OUT 0D0H , AL ; 由端口 A 输出打印字符 MOV AL , 0CH ; 用“端口 C 按位置 1/ 置 0 控制字”置 PC6=0 ,使 STB 为低电平 OUT 0D3H , AL INC AL OUT 0D3H , AL ; 置 PC6=1 ,再使 STB 为高电平,从而产生一个负选通脉冲信号 RET
第 14 章 作业P500-501 13 题 ; 14 题
P500 习题 13解: ① 程序流程框图:
② 初始化及有关控制程序
设置 8255 方式选择控制字:A 口方式 O 输出, B 口方式 O 输出, C 口方式 O 输入。
向 A 口输出 01H ,使主道绿灯亮;向B 口输出 04H, 使副道红灯亮
延迟 40 秒
PC0=1?
Yes
向 A 口输出 02H ,使主道黄灯亮
延迟 5 秒
向 A 口输出 04H ,使主道红灯亮; 向 B 口输出 01H ,使副道绿灯亮
延迟 20 秒
向 B 口输出 02H, 使副道黄灯亮
延迟 5 秒
图 14.23 交通灯控制
8255A
PC0 PA2 PA1 PA0 PB2 PB1 PB0
接系统总线
K R Y G R Y G(开关)
主道灯 副道灯