Download presentation
Presentation is loading. Please wait.
1
第 14 章 并行通信及其接口电路
2
本章主要内容 1.简单并行接口电路; 2.可编程并行接口电路8255A的结构及工作原理; A的应用。
3
14.1 概述 在计算机和数据通信系统中,有两种基本的数据传送方式,即串行数据传送方式和并行数据传送方式,也称串行通信和并行通信。
数据在单条一位宽的传输线上按时间先后一位一位地进行传送,称为串行传送; 数据在多位宽的传输线上各位同时进行传送,称为并行传送。 和串行传送相比,在同样的时钟速率下,并行传送的数据传输率较高。
4
并行通信往往适用于信息传输率要求较高,而传输距离较短的场合。
在本章,我们重点介绍并行通信及其所要求的并行接口电路,研究它们的组成、功能及典型的并行接口芯片的工作原理及使用方法。 首先介绍几种简单的(不可编程) 并行输入输出接口电路,然后着重介绍可编程并行接口电路8255A及其典型应用。
5
14.2 简单的并行接口电路 在输入输出接口电路中,经常要对所传送的信号进行缓冲、驱动和锁存。
能实现这种功能的接口芯片通常是简单的数据锁存器、缓冲器以及双向总线收发器等。 本节扼要介绍三种常用的简单并行输入输出接口芯片,它们是: 锁存器74LS373; 缓冲器74LS244; 数据总线收发器74LS245。
6
锁存器74LS373 74LS373是一种8位D锁存器电路(D-Latch),具有三态控制输出,其逻辑电路及引脚图如图14.1所示。 图中小括号内的数字编号为芯片的引脚号。
7
图14.1 74LS373锁存器 (3) 1D D G Q (2) 1Q G OE 3D 4D 5D 6D 7D 8D 2D 1D 3Q
(b)引脚图 (4) (5) 2D 2Q (7) (6) 3D 3Q (8) (9) 4D 4Q (13) (12) 5D 5Q (14) (15) 6D 6Q (17) (16) 7D 7Q (18) (19) 8D 8Q (11) (1) G (选通) OE (a)逻辑电路
8
由图14.1可见,该电路由8个D锁存器构成(图中仅画一个,其余与此相同),有8个输入端1D~8D,8个输出端1Q~8Q,两个控制端:
选通端G和输出允许端OE。 当选通端G为高电平时,则D锁存器的输出跟随相应输入数据端的逻辑电平; 当G变为低电平时,则D锁存器中的当前内容被锁存。 只有当输出允许信号OE有效(为低电平) 时,锁存器中的信息才出现在输出端1Q~8Q上;如果OE为高电平,则输出处于高阻态。
9
74LS373的真值表如表14-1所示。 该表中H为高电平,L为低电平,Q0为原状态,Z为高阻态,X表示任意值(为H或L均可)。
10
表 LS373真值表 选通G 输出允许OE 输入D 输出Q H L X Q0(原状态) Z(高阻态)
11
锁存器工作时间图 锁存器的应用 Q n-1 t0 t1 t2 输入D 选通 输出Q Q跟随D 保持t2时D的锁存值 n位数据总线 D0 D1
12
从表14-1可以看到74LS373的功能为: 当选通端G为高电平,同时输出允许端OE为低电平时,则输出Q=输入D(输出Q跟随输入D); 当选通端G为低电平,而输出允许端OE也为低电平时,则输出Q=Q0(Q0为原状态,即选通端G由高电平变为低电平时输出端Q的状态); 当输出允许端OE为高电平时,无论选通端G为何值,输出端Q总为高阻态。
13
74LS373是十分常用的锁存器电路,主要用来在总线传输电路中锁存地址信息或数据信息,并实现总线信号的缓冲与驱动。
与74LS373锁存器功能类似的芯片还有Intel 8282/8283等 。
14
缓冲器74LS244 74LS244 是一种三态输出的 8 位缓冲器/驱动器电路, 其逻辑电路图和引脚图如图14.2所示。
15
图14.2 74LS244缓冲器 (a) 逻辑电路 (18) (16) (14) (12) (9) (7) (5) (3) 1Y3 1Y4
___ 2G 1G (2) (4) (6) (8) (11) (13) (15) (17) (1) (19) 1G 2G 1A3 1A4 2A1 2A2 2A3 2A4 1A2 1A1 1Y3 1Y4 2Y1 2Y2 2Y3 2Y4 1Y2 1Y1 (b)引脚图
16
由图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) 为高阻态。
17
74LS244缓冲器主要用于存储器地址驱动器、单向总线接收器和发送器等。例如,可将其8个输入端的某几位接地,其余接+5V,即可提供特定的8位二进制代码,如为某设备接口提供8位中断类型码。
18
数据总线收发器74LS245 74LS245是一种三态输出的8位双向总线收发器(transceiver),其逻辑电路图和引脚图如图14.3所示。
19
图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 A1 B1 A2 B2 A3 B3 A5 B4 B5 A6 B6 A7 B7 A8 B8 (b)引脚图
20
由图14.3可见,74LS245有16个双向传输的数据端,即A1~A8和B1~B8;另有两个控制端,即允许端G和方向控制端DIR。G用于允许该收发器的操作,DIR用于控制数据传送的方向(A→B或B→A)。 由图14.3(a) 可见,若G信号无效(为高电平),则无论DIR为何种电平,下面两个“与门”的输出均为低电平,从而使两个方向上的三态门的输出均为高阻态,收发器处于“隔开”状态,即两个方向上的数据传送均不能进行。
21
若G信号有效(为低电平),则可在某一个方向上进行数据传送,到底在哪个方向上进行传送,则由方向控制端DIR的逻辑电平来决定。
74LS245的真值表如表14-2所示。 74LS245通常用于数据的双向传送、缓冲与驱动。 与74LS245功能类似的双向总线收发器电路还有Intel 8286/8287等。
22
表 LS245的真值表 允许G 方向控制DIR 数据传送方向 L BA H AB X 隔开
23
应用举例 1. 锁存器74LS373的应用 在80386DX微机系统中, 需在地址总线上对30位地址信号A2~A31和4个字节允许信号BE0~BE3进行锁存。 图14.4给出了使用5片74LS373芯片对这些信息进行锁存的电路配置情况。
24
图14.4 74LS373用于地址信号锁存 ALE G 地址总线 A24~A31 AL24~AL31 A16~A23 A2~A31 G
经锁存的地址总线 ALE G 74LS373 地址总线 A24~A31 AL24~AL31 __ OE A16~A23 A2~A31 74LS373 G __ OE AL16~AL23 74LS373 G __ OE AL8~AL15 A8~A15 74LS373 G __ OE AL2~AL7 A2~A7 ___ ___ 字节允许BE0~BE3 74LS373 G __ OE ___ ___ BEL0~BEL3
25
注意,由于电路中74LS373的OE固定接为逻辑0,所以其输出AL2~AL31和BEL0~BEL3将始终处于允许状态。
由图14.4可见,各片74LS373的选通端G均由ALE(Address Latch Enable)信号来驱动, ALE即地址锁存允许信号,它是专门用来控制地址锁存器的一个总线信号。
26
2. 数据总线收发器74LS245的应用 图14.5给出了用74LS245实现的总线接口中数据总线收发器电路配置图。
对于像80386DX这样的32位微机系统,其外部数据总线为32位,所以需4块74LS245这样的电路来实现双向总线驱动。 图14.5中,74LS245的DIR输入是由总线信号DT/R来控制,而G是由DEN控制。DT/R和 DEN是系统中总线控制逻辑的输出信号。
27
图14.5 数据总线收发器的应用 ____ DEN DT/R _ G D24~D31 DB24~DB31 D0~D31 D16~D23 _
图14.5 数据总线收发器的应用 ____ DEN __ DT/R 系统数据总线 _ G 微处理器数据总线 74LS245 D24~D31 DB24~DB31 DIR D0~D31 D16~D23 _ G 74LS245 DB16~DB23 DIR _ G 74LS245 DB8~DB15 D8~D15 DIR _ G 74LS245 DB0~DB7 D0~D7 DIR
28
数据总线收发器的一个主要功能是对数据总线信号进行缓冲与驱动,缓冲能力的大小取决于该电路在其输出端能够吸收多少电流。
74LS245的IOL(输出低电平负载电流) 额定值为64mA,而80386DX数据总线最多仅能吸收4mA电流。所以,通过增设数据总线收发器电路可以极大地增强总线的驱动能力。
29
14.3 可编程并行接口 14.3.1 可编程并行接口的组成及其与CPU和外设的连接 通常,一个可编程并行接口电路应包括下列组成部分:
(1) 两个或两个以上具有缓冲能力的数据寄存器。 (2) 可供CPU访问的控制及状态寄存器。 (3) 片选和内部控制逻辑电路。
30
(4)与外设进行数据交换的控制与联络信号线。
(5)与CPU用中断方式传送数据的相关中断控制电路。 典型的可编程并行接口及其与CPU和外设的连接示意图如图14.6所示。
31
图14.6 可编程并行接口电路及其与CPU和外设的连接
数据总线 CPU 输 出 设 备 并行输出数据 输出缓冲寄存器 读控信号 输入缓冲寄存器 输出准备好 写控信号 控制寄存器 输出回答 复位信号 状态寄存器 中断响应信号 输 入 设 备 中断逻辑 并行输入数据 中断请求信号 输入准备好 译码器 地址 片选 输入回答
32
可编程并行接口的数据输入输出过程 将以8255A为例进行讨论。
33
14.4 可编程并行通信接口8255A A的性能概要 Intel 8255A是一个为Intel 8080和8085微机系统设计的通用可编程并行接口芯片,也可应用于其他微机系统之中。 8255A采用40脚双列直插封装,单一+5V电源,全部输入输出与TTL电平兼容。 用8255A连接外部设备时,通常不需要再附加其他电路,给使用带来很大方便。
34
8255A 有三个输入输出端口: 端口A、端口B、端口C。
每个端口都可通过编程设定为输入端口或输出端口,但有各自不同的方式和特点。 端口C可作为一个独立的端口使用,但通常是配合端口A和端口B的工作,为这两个端口的输入输出提供控制联络信号。
35
14.4.2 8255A芯片引脚分配及引脚信号说明 8255A芯片引脚分配如图14.7所示。 8255A芯片的40条引脚,大致可分为三类:
(1) 电源与地线共2条: Vcc、GND。 (2) 与外设相连的共24条: PA7~PA0: 端口A数据信号。 PB7~PB0: 端口B数据信号。 PC7~PC0: 端口C数据信号。
36
图 A 芯片引脚分配 1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 8255 A 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
38
(3) 与CPU相连的共14条: RESET: 复位信号,高电平有效。当RESET信号有效时,所有内部寄存器都被清除。同时,3个数据端口被自动设置为输入端口。 D7~D0: 双向数据线,在8080、8085系统中,8255A的D7~D0与系统的8位数据总线相连; 在8086系统中,采用16位数据总线,8255A的D7~D0通常是接在16位数据总线的低8位上。
39
CS: 片选信号,低电平有效。该信号来自译码器的输出,只有当CS有效时,读信号RD和写信号WR才对8255A有效。
RD:读信号,低电平有效。它控制从8255A读出数据或状态信息。
40
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所示。
41
表14-3 8255A端口选择和基本操作 A1 A0 输入操作(读) 1 端口A数据总线 端口B数据总线 端口C数据总线
1 端口A数据总线 端口B数据总线 端口C数据总线 输出操作(写) 数据总线端口A 数据总线端口B 数据总线端口C 数据总线控制字寄存器 无操作情况 X 数据总线为三态(高阻) 非法操作
42
A内部结构方块图 8255A内部结构方块图如图14.8所示。
43
图14.8 8255A内部结构方块图 A组 端口A (8位) 端口C (高4位) B组 (低4位) 端口B I/O PA7~PA0
PC7~PC4 PC3~PC0 PB7~PB0 A组控制 B组控制 数据总线 缓冲器 读写 控制 逻辑 __ RD WR A1 A0 CS 电源 +5V GND 8位内部数据总线 D7~D0 双向数据总线 RESET
44
(1) 数据总线缓冲器 由图14.8可以看出,8255A由以下几部分组成:
这是一个双向三态8位数据缓冲器,它是8255A与CPU数据总线的接口。 输入数据、输出数据以及CPU发给8255A的控制字和从8255A读出的状态信息都是通过该缓冲器传送的。
45
(2) 端口A、端口B、端口C 8255A有三个8位端口(端口A、端口B、端口C),各端口可由程序设定为输入端口或输出端口。
端口C也可以作为输入端口或输出端口,但往往是用来配合端口A和端口B的工作。 在方式字的控制下,端口C可以分成两个4位的端口,分别用来为端口A和端口B提供控制和状态信息。
46
(3) A组控制和B组控制 (4) 读写控制逻辑 A组控制——控制端口A及端口C的高4位。 B组控制——控制端口B及端口C的低4位。
(4) 读写控制逻辑 读写控制逻辑负责管理8255A的数据传输过程。
47
A的控制字 1. 方式选择控制字 方式选择控制字的格式如图14.9所示。
48
图14.9 8255A方式选择控制字 1 D6 D5 D4 D3 D2 D1 D0 方式选择控 制字标识位 A组方式选择 00 方式0
00 方式0 01 方式1 1x 方式2 端口A 1 输入 0 输出 PC3~PC0: 输入 (方式0时) 0 输出 端口B: 输入 B组方式选择: 0 方式0 1 方式1 PC7~PC4: 输入
49
假定要求8255A的各个端口工作于如下方式: 端口A——方式0,输出; 端口B——方式0,输入; 端口C的高4位——方式0,输出; 端口C的低4位——方式0,输入。 那么,相应的方式选择控制字应为 B(83H)。
50
在实验系统中8255A控制口的地址为28BH,则执行如下三条指令即可实现上述工作方式的设定。
MOV DX, 28BH MOV AL, 83H OUT DX , AL; 将方式选择控制字写入控制口
51
2. 端口C按位置1/置0控制字 可以用专门的控制字实现对端口C按位置1/置0操作,用以产生所需的控制功能,这种控制字就是“端口C按位置1/置0控制字”。 该控制字的具体格式如图14.10所示。
52
图14.10 端口C按位置1/置0控制字 D6 D5 D4 D3 D2 D1 D0 无关 1 端口C按位置1/置0 控制字标识位 PC0
D6 D5 D4 D3 D2 D1 D0 x 无关 1: 置1 0: 置0 1 端口C按位置1/置0 控制字标识位 位选择 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
53
需要指出的是,端口C按位置1/置0控制字是对端口C的操作控制信息,因此该控制字必须写入控制口,而不应写入端口C。
控制字的D0位决定是置“1”操作还是置“0”操作,但究竟是对端口C的哪一位进行操作,则决定于控制字中的D3、D2、D1位。
54
例如,要实现对端口C的PC6位置“0”,则控制字应为00001100B(0CH)。
设8255A的控制口地址同上,则执行下列指令即可实现指定的功能: MOV DX,28BH MOV AL,0CH; OUT DX,AL ; 将“端口C按位置1/置0控制字”写入控制口,实现对PC6位置“0”
55
14.4.5 8255A的工作方式 1. 方式0 方式0也叫基本输入/输出方式。
在这种方式下,端口A和端口B可以通过方式选择控制字规定为输入口或者输出口; 端口C分为高4位(PC7~PC4) 和低4位(PC3~PC0) 两个4位端口,这两个4位端口也可由方式选择控制字分别规定为输入口或输出口。
56
这四个并行口共可构成24=16种不同的使用组态。
利用8255A的方式0进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向LED显示器的输出,从二进制开关装置的输入等。
57
2. 方式1 方式1也叫选通的输入/输出方式。 和方式0相比,最主要的差别就是当端口A和端口B工作于方式1时,要利用端口C来接收选通信号或提供有关的状态信号,而这些信号是由端口C的固定数位来接收或提供的,即信号与数位之间存在着对应关系。 这种关系不可以用程序的方法予以改变。
58
(1) 方式1输入 当端口A和端口B工作于“方式1输入”时,端口C控制信号定义如图14.11所示。 该图中还给出了相应的方式选择控制字。
59
图14.11 8255A方式1输入 方式1输入(端口A) D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1/0 D7~D0
INTEA PC4 PC5 PC6,7 2 I/O ____ STBA IBFA PA7~PA0 ___ RD PC3 D7~D0 INTRA 方式1输入(端口A) /0 A组方式1 D7 D6 D5 D D D2 D1 D0 PC6,7 1 输入 0 输出 端口A输入 INTEB PC2 PC1 ____ STBB IBFB PB7~PB0 ___ RD PC0 D7~D0 INTRB 方式1输入(端口B) D7 D6 D5 D D D2 D1 D0 B组方式1 端口B输入
60
对于图14.11中所示的控制信号说明如下: STB(Strobe): 选通信号,低电平有效。它是由外设送给8255A的输入信号,当其有效时,8255A接收外设送来的一个8位数据。 IBF(Input Buffer Full): “输入缓冲器满”信号,高电平有效,它是一个8255A送给外设的联络信号。
61
当IBF为高电平时,表示外设的数据已送进输入缓冲器中,但尚未被CPU取走,通知外设不能送新数据;
IBF信号是由STB使其置位(变为高电平),而由读信号RD的上升沿使其复位(变为低电平)。
62
INTR(Interrupt Request): 中断请求信号,高电平有效。
它是当STB为1、IBF为1且INTE也为1(中断允许) 时被置为高电平。 也就是说,当选通信号结束(STB=1),已将一个数据送进输入缓冲器(IBF=1),并且端口处于中断允许状态(INTE=1) 时,8255A的INTR端被置为高电平,向CPU发出中断请求信号。 当CPU响应中断读取输入缓冲器中的数据时,由读信号RD的下降沿将INTR置为低电平。
63
INTEA(Interrupt Enable): 端口A中断允许信号。INTEA没有外部引出端,它实际上就是端口A内部的中断允许触发器的状态信号。
INTEA由PC4的置位/复位来控制,PC4=1时,使端口A处于中断允许状态。 INTEA controlled by bit set/reset of PC4
64
INTEB : 端口B中断允许信号。与INTEA类似,INTEB也没有外部引出端,它是端口B内部的中断允许触发器的状态信号。
由PC2的置位/复位来控制,PC2=1时,使端口B处于中断允许状态。
65
另外,在方式1输入时,PC6和PC7两位还闲着未用。如果要利用它们,可用方式选择控制字中的D3位来设定。
方式1输入工作时序图如图14.12所示。
66
图14.12 方式1输入工作时序图 tST ___ STB tSIB IBF TSIT tRIB tRIT INTR ___ RD tPH
图 方式1输入工作时序图 tST ___ STB tSIB IBF TSIT tRIB tRIT INTR ___ RD tPH 来自外设的 输入数据 tPS
67
图14.12中的参数说明
68
(2) 方式1输出 当端口A和端口B工作于方式1输出时,方式选择控制字及相应的端口C控制信号定义如图14.13所示。
69
图14.13 8255A方式1输出 方式1输出(端口A) D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 1/0 D7~D0
/0 A组方式1 D7 D6 D5 D D D2 D1 D0 PC4,5 1 输入 0 输出 端口A输出 PA7~PA0 INTEA ____ OBFA ACKA PC7 PC6 D7~D0 ___ WR PC3 INTRA 2 PC4,5 I/O 方式1输出(端口B) D7 D6 D5 D D D2 D1 D0 B组方式1 端口B输出 PB7~PB0 INTEB ____ OBFB ACKB PC1 PC2 D7~D0 INTRB ___ WR PC0
70
对图14.13中所示的控制信号说明如下: OBF(Output Buffer Full): “输出缓冲器满”信号,低电平有效,它是8255A输出给外设的一个控制信号。 当其有效时,表示CPU已经把数据输出给指定端口,通知外设把数据取走。 它是由写信号WR的上升沿置成有效(低电平),而由ACK信号的有效电平使其恢复为高电平。
71
ACK(Acknowledge): 外设响应信号,低电平有效。当其有效时,表明CPU通过8255A输出的数据已经由外设接收。它是对OBF的回答信号。
INTR(Interrupt Request): 中断请求信号,高电平有效。它是8255A的一个输出信号,用于向CPU发出中断请求。INTR是当ACK、OBF和INTE都为“1”时才被置成高电平(向CPU发出中断请求信号);写信号WR的上升沿使其变为低电平(清除中断请求信号)。
72
INTEA: 端口A中断允许信号,由PC6的置位/复位来控制,PC6=1时,端口A处于中断允许状态。
INTEB: 端口B中断允许信号,由PC2的置位/复位来控制,PC2=1时,端口B处于中断允许状态。 另外,在方式1输出时,PC4、PC5两位还闲着未用,如果要利用它们可用方式选择控制字的D3位来设定。
73
图14.14 方式1输出工作时序图 INTR ___ WR OBF ____ ACK 输出 tAK tAIT tWIT tWOB tAOB
图 方式1输出工作时序图 INTR ___ WR OBF ____ ACK 输出 tAK tAIT tWIT tWOB tAOB tWB
74
图14.14中参数说明
75
14.4.6 8255A的状态字 1. 方式1状态字格式 8255A工作于方式1和方式2时的状态字是通过读端口C的内容来获得的。
方式1状态字格式如图14.16所示。
76
图14.16 方式1状态字格式 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 A组 B组
图 方式1状态字格式 D7 D6 D5 D D D2 D1 D0 A组 B组 (a)方式1输入状态字格式 I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB D7 D6 D5 D D D2 D1 D0 A组 B组 (b)方式1输出状态字格式 ____ _____ OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB
77
2. 方式2状态字格式 方式2的状态字也是从端口C读取。 方式2状态字的格式如图14.17所示。
78
OBFA INTE1 IBFA INTE2 INTRA
图 方式2状态字格式 D7 D6 D5 D D D2 D1 D0 A组状态 B组状态 OBFA INTE IBFA INTE INTRA _____ I/O I/O I/O 方式1 方式0 INTEB OBFB INTRB INTEB IBFB INTRB 输出时 输入时
79
A应用举例 例 A工作于方式0,利用8255A将外设开关的二进制状态从端口A输入,经程序转换为对应的LED段选码(字形码) 后,再从端口B输出到LED显示器。 具体连线图如图14.18(a) 所示。 LED显示器如图 14.18(b) 所示。
80
图 14.18 8255 A 的应用 +5 +5 V V 2 2 K K × × 4 4 K0 K0 PA PA CPU CPU D D
A 的应用 +5 +5 V V 2 2 K K × × 4 4 K0 K0 PA PA CPU CPU D D ~D ~D K1 K1 PA PA (8088) (8088) 7 7 1 1 K2 K2 PA PA 2 2 K3 K3 PA PA a b c d e f g h +5 V 120欧姆 74 LS04 LED ( a) 连线图 ( ) 显示器 3 3 +5 V 8255 8255 A A 120 __ __ __ __ a PB PB RD RD RD RD __ __ __ __ b PB PB WR WR WR WR 1 1 c PB PB 2 2 d A A A A PB PB 3 3 e A A A A PB PB 1 1 1 1 4 4 f PB PB 地址 地址 地 地 5 5 g 址 址 PB PB 6 6 译 译 h PB PB 码 码 7 7 74 LS04 LED ( a) 连线图
81
设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)
82
OUT 0D1H,AL ;从B口输出LED段选码,显示相应字形符号
MOV AX,XXXXH ; 延时 DELAY:DEC AX ; JNZ DELAY ; MOV AH, ; 判断是否有键按下 INT 16H ; JZ RDPORTA ; 若无,则继续读端口A MOV AH,4CH ; 否则返回DOS INT 21H CODE ENDS END START
83
例14.2 8255A工作于方式0,用8255A作为以查询方式工作的打印机接口,如图14.19所示。
84
图 A作为打印机接口 CPU 系统总线 8255A PA7~PA0 打印机 PC6 PC2 ___ STB BUSY
85
工作原理为: 当主机开始打印输出时,先测试打印机忙(BUSY) 信号,
当检测到BUSY信号为0时,则主机可通过8255A向打印机输出一个字符。 此时,还需输出一个选通信号(负脉冲) 给打印机的STB端,用此负脉冲作为字符送到打印机输入缓冲器的打入脉冲。
86
PC6作为选通信号输出端,所以PC7~PC4应设定为输出方式。 设打印字符存放在内存2000H单元 。 8255A的端口地址为:
用8255A的端口A作为打印输出数据口,工作于方式0;端口B不用;端口C也工作于方式0,端口C的PC2作为BUSY信号输入端,所以PC3~PC0应设定为输入方式; PC6作为选通信号输出端,所以PC7~PC4应设定为输出方式。 设打印字符存放在内存2000H单元 。 8255A的端口地址为: 端口A—D0H,端口B—D1H,端口C—D2H,控制口—D3H 则初始化及打印控制子程序如下所示: 。
87
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
88
第14章 作业 P 13题 ; 14题
89
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,使副道黄灯亮
90
图14.23 交通灯控制 接系统总线 8255A PC0 PA2 PA1 PA0 PB2 PB1 PB0 K R Y G R Y G
图 交通灯控制 接系统总线 8255A PC PA2 PA1 PA PB2 PB1 PB0 K R Y G R Y G (开关) 主道灯 副道灯
Similar presentations