本章主要教学内容
并行输入输出接口技术的概念和功能
8255A的内部结构及引脚
8255A的工作方式及其应用第 9章 并行接口
9.1 概述并行输入 /输出就是在计算机中把一个字符的几个位同时进行传输,它具有传输速度快、效率高的优点。由于并行通信所采用的电缆较多,不太适合长距离传输。所以,并行通信通常用在数据传输率要求较高、而传输的距离相对较短的场合。
实现并行输入 /输出的接口就是并行接口。通常,一个并行接口可设计为输出接口,例如连接一台打印机;也可设计为输入接口,例如连接键盘;还可设计成双向通讯接口,既可作为输入接口又可作为输出接口,例如连接像磁盘驱动器这样的需要双向通路的设备。
图 9-1是典型的并行接口和外设连接的示意图 。
从图中可以看到,并行接口左边是与 CPU连接的总线,右边用一个通道和输入设备相连,另一个通道和输出设备相连,输入和输出都有独立的信号交换联络控制线 。 在并行接口内部用控制寄存器来寄存
CPU对它的控制命令,用状态寄存器来提供各种工作状态供 CPU查询,此外,还有供输出和输入数据用的输出数据锁存器和输入数据缓冲器 。
控制寄存器输入缓冲寄存器输出缓冲寄存器状态寄存器数据总线读出信号写入信号复位准备好中断请求地址译码
C P U
输入设备数据输入准备好数据输入回答数据输入输出设备数据输出数据输出准备好数据输出回答图 9–1并行接口与外设连接示意图并行接口的基本工作原理分析如下:
( 1) 数据的输入过程当外设把数据送到数据输入线上时,通过,数据输入准备好,状态线通知接口取数 。 接口在把数据锁存到输入缓冲器的同时,把数据输入回答线置
,1”,用来通知外设,接口的数据输入缓冲器
,满,,禁止外设再送数据 。 同时把内部状态寄存器中,输入准备好,状态位置,1”,以便 CPU对其进行查询或向 CPU申请中断 。 在 CPU读取接口中的数据后,接口将自动清除,输入准备好,状态位和
,数据输入回答,信号,以便外设输入下一个数据 。
( 2) 数据的输出过程当数据输出缓冲器,空闲,时,接口中,输出准备好,状态位置,1”。 在接收到 CPU的数据后,
,输出准备好,状态位复位 。 数据通过输出线送到外设,同时,由,数据输出准备好,信号线通知外设取数据 。 当外设接收一个数据时,回送一个,数据输出回答,信号,通知接口准备下一次输出数据
。 接口将撤消,数据输出准备好,信号并且再一次置,输出准备好,状态位为,1”,以便 CPU输出下一个数据 。
9.2 可编程并行接口芯片 8255A
8255A是 Intel公司生产的通用可编程并行接口芯片,
它有 3个 8位并行输入 /输出端口,即 A口,B口和 C口,可利用编程方法来设置这 3个端口是作为输入端口还是作为输出端口;有 3种工作方式,分别为方式 0,方式 1,方式 2;有 3
种数据传送方式,分别为无条件传递方式,查询式传递方式和中断传送方式 。
8255A芯片的另一个特点是对端口 C的操作,C口既可作为数据口也可作为控制口 。 当 C 口作为数据口时,可以输出 8位数据或分别作为两个 4位数据口输出,此外,还可对端口 C的每 —位进行操作,比如设置某一位为输入或输出,
这样可以为位控方式提供了便利条件 。
9.2.1 8255A内部结构及引脚特性
1,8255A内部结构
8255A芯片的内部结构如图 9-2 所示,它包括 4个部分:数据总线缓冲器;读写控制逻辑; A组和 B组控制电路;端口 A,B,C。
端口 A
数据缓冲器读 / 写控制逻辑端口 C
上半部端口 C
下半部端口 B
A 组控制器
B 组控制器
D 0 -
D 7
RD
WR
0A
1A
RES E T
CS
PA 0 - PA 7
PC 4 - PC 7
PC 0 - PC 3
PB 0 - PB 7
内部数据总线图 9-2 8255A芯片的内部结构
2,8255A引脚特性及其与外部的连接
8255A并行接口芯片有 40条引脚,如图 9-3
所示。这 40条引脚可分为与外设连接和与 CPU
连接两类引脚 。
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
3 1
3 0
2 9
2 8
2 7
2 6
2 5
2 4
2 3
2 2
2 1
4 0
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
8 2 5 5
RD
3PA
2PA
1PA
0PA
WR
CS
G ND
0A
1A
7PC
6PC
7PB
6PB
5PB
4PB
3PB2PB
1PB
0PB
0PC
1PC
2PC
3PC
4PC
5PC 5D
4D
V CC
R E S E T
1D
6D
2D
7PA
5PA
6PA
3D
7D
0D
4PA
图 9-3 8255引脚图
9.2.2 8255A的工作方式
1,8255A控制字
8255A是可编程接口芯片,所谓可编程就是用指令的方法先对该芯片进行初始化,决定芯片的端口是处于输入数据状态还是处于输出数据状态,以及每个端口工作在何种方式下 。 工作方式和工作状态的建立是向
8255A的控制口写入相应的控制字来完成的 。
8255A共有两个控制字,即工作方式控制字和相对 C口进行置位或复位的控制字。
( 1) 工作方式控制字
8255A的工作方式控制字格式和各位的含义如图 9-4所示 。 工作方式控制字用来设定 A,B 口和 C口的数据传送方向是输入还是输出,设定各口的工作方式是 3种方式的哪一种 。 如前所述,
8255A的 3种工作方式分别是方式 0,方式 l和方式 2。
A口可以工作在 3种方式中的任何 —种,B口只能用于前两种工作方式,C口只能工作在方式 0。
D
6
D
5
D
4
D
3
D
2
D
1
D
0
D
7
C 口 下 半 部
1 输 入
0 输 出
B 口 选 择
1 输 入
0 输 出
B 口 方 式
0 方 式 0
1 方 式 1
C 口 上 半 部
1 输 入
0 输 出
A 口 选 择
1 输 入
0 输 出
0 0 方 式 0
0 1 方 式 1
1 X 方 式 2
A 口 方 式特 征 位图 9-4 工作方式控制字格式
( 2) 端口 C的置位 /复位控制字端口 C的置位 /复位控制字可实现对端口 C的每一位进行控制 。 置位是使该位输出为,1”,复位是使该位输出为
,0”。
控制字的格式如图 9-5所示 。
X X X D
3
D
2
D
1
D
0
D
7
位 控 制
1 置 位特 征 位位 选 择
0 复 位图 9-5 端口 C的置位 /复位控制字格式
2,8255A工作方式
8255A的 3种工作方式分别讨论如下:
( 1) 方式 0:基本输入 /输出方式方式 0是一种基本输入 /输出方式,它不需要应答式的联络信号,不使用中断,有两个 8位端口
( A口和 B口 ) 和两个 4位端口 ( C口的上半部和 C
口的下半部 ),任何一个端口都可以作为输入或输出端口 。 输出数据可被锁存,输入数据不锁存 。
各端口的输入 /输出方向可有 16种不同的组合 。
( 2) 方式 1:选通输入 /输出方式在这种工作方式下,端口 A和端口 B为数据传输口,可通过工作方式控制字设定为数据输入或数据输出。端口 C的某些位作为控制端口,配合 A口和 B口进行数据的输入和输出。方式 1通常用于查询方式或中断方式传送数据。
( 3) 方式 2:双向选通输入 /输出方式只有 A口可以采用这种工作方式 。 在这种方式下,可以使外部设备利用端口 A的 8位数据线与 CPU之间分时进行双向数据传送,也就是说,可在单 —的 8位数据线上既输出数据给外部设备,也从外部设备输入数据 。 输入或输出的数据都是锁存的 。 工作时既可采用查询方式,也可采用中断方式传输数据 。
当端口 A工作在方式 2时,使用 PC3~ PC7作为控制和状态信息,也就是把方式 1输入数据和方式 1输出数据的控制信号组合起来 。 端口 B可工作在方式 0或方式 1,如果工作在方式 1,
可利用 PC0~ PC2作为控制和状态信号 。
9.2.3 8255A的编程
8255A工作时首先要初始化,即要写入控制字,来指定其工作方式,接着还要用控制字将中断标志 INTE置
,1”或置,0”,这样就可以编程将数据从数据总线通过
8255A送出,或由外设通过 8255A的某口将数据送至数据总线,由 CPU接收 。
通过下面的几个例子来说明如何对 8255A进行编程 。
【 例 9.3】 假设在一个系统中,要求 8255A工作在方式 0。 且 A口作为输入,B口,C口作为输出 。 控制字和连接电路图如图 9-10所示 。
地址译码器
7PA
7PC
0PC
CS
1A
0A
WR
RD
0D~7D
0PA
8255
9A
2A
0A
1A
0D~7D
IO W
IO R ~
~
7PB
0PB~
1 0 0 1 0 0 0 0
D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
D 7 = 1,方式标志位有效
D 6,D 5 = 0 0,A 口方式0
D 4 = 1,A 口输入
D 3 = 0,C 口高四位输出
D 2 = 0,B 口方式0
D 1 = 0,B 口输出
D 0 = 0,C 口低四位输出图 9-10 A口,B口,C口工作在方式 0
设片选信号 CS由 A9~ A2决定,设为 10111100B,当 A1A0= 11时,
控制字地址为 2F3E,其工作程序如下:
MOV AL,90 ;方式 0,A口输入,B,C口输出
MOV DX,2F3H ; 控制寄存器地址 DX
OUT DX,AL ;控制字送控制寄存器
MOV DX,2F0H ; A口地址送 DX
IN AL,DX ;从 A口读入数据
MOV DX,2F1H ; B口地址送 DX
MOV AL,DATA1 ;要输出的数据 DATA1送 AL
OUT DX,AL ; 将输出的数据 DATA1送 B口
MOV DX,2F2H ; C口地址送 DX
MOV AL,DATA2 ; 要输出的数据 DATA2送 AL
OUT DX,AL ; 将 DATA2送 C口输出
【 例 9.4】 假设在一个系统中,8255A工作在方式 1,A口输入,B口输出,PC4,PC5为输入,禁止 B口中断,其控制字和连接电路图如 9-11所示 。
设控制字地址为 2F3H,其初始化程序如下:
MOV AL,0AEH ; A口输出,B口输入
MOV DX,2F3H ; 控制寄存器地址 DX
OUT DX,AL ; 控制字送控制寄存器
MOV DX,09H ; A口的 INTE( PC4置 1)
OUT DX,AL ; 控制字送控制寄存器
MOV AL,04HH ; B口的 INTE( PC2置 1)
OUT DX,AL ; 控制字送控制寄存器地址译码器
CS
1A
0A
WR
RD
0D~7D
B 口
8255
9A
2A
0A
1A
0D~7D
IO W
IO R
PC 2
1 0 1 0 1 1 1 X
D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
D 7 = 1,方式标志位有效
D 6,D 5 = 0 0,A 口方式1
D 4 = 0,A 口输出
D 3 = 1,C 口高四位输入
D 2 = 1,B 口方式1
D 1 = 1,B 口输入
D 0 = 0,C 口低四位任意
D 7 -D 0
PC 1
A 口
PC 7
PC 6
PC 4 PC 5
外部设备
STBB
IBFB
OBFA
ACKA
I/O
控制字图 9-11 A口,B口,C口工作在方式 1
9.3 8255A的应用并行接口芯片在微型计算机与外部设备的通信中是经常用到的,下面我们分析 8255A与打印机及两台微机之间并行传送数据的应用实例。
9.3.1 8255A与打印机接口打印机可以打印计算机送来的 ASCII码字符,由于
ASCII码字符为 8位,因此,我们可以用 8255A来作打印机的接口。
5.2.1 PC总线
PC总线也叫做 PC/XT总线,是早期 PC/XT微机中采用的系统总线,它支持 8位数据传输和 10位寻址空间,最大通信速率为 5 MB/s。 它有 62根引脚,可插入符合 PC总线的各种扩展板,以扩展微机的功能 。 其特点是把 CPU视为总线的唯一总控设备,其余外围设备均为从属设备 。 具有价格低,可靠性好,兼容性好和使用灵活等优点 。
PC总线 62条引脚信号通过一个 31脚分为 A,B两面连接插槽,其中 A面为元件面,B面为焊接面 。 这 62条引脚信号分为地址线,数据线,控制线,状态线,辅助线与电源等 5类接口信号线 。
【 例 9.5】 打印机工作时序如图 9-12所示 。 用 8255A
设计打印机的接口电路和程序 。ST RO BE
0D~7D
A C K
B U S Y
图 9-12 打印机工作时序工作原理分析:数据接口将数据传送到打印机的数据端口,
利用一个负脉冲启动锁存,然后由打印机处理 。 同时打印机送出高电平信号 BUSY,表示打印机忙于打印 。 一旦 BUSY变为低电平,表示打印结束,即可接收下一数据 。 可以利用 8255A
工作方式 0实现上述打印控制 。
硬件连接如图 9-13所示,8255A的地址线 A1,A0与计算机的
A1,A0连接,片选信号由 74LS138译码器产生 。
根据连线可知 8255A的 A口,B口,C口及控制口的地址为:
1CH,1DH,1EH,1FH。
7PA
0D~7D
S TB
B U SY
7PC
0PC
CS
1A
0A
WR
RD
0D~7D
0PA
8255
138LS74
0Y
7A
6A
5A
0A
1A
0D~7D
I O W
I O R
打印机
~
图 9-13 8255与打印机接口电路接口的程序编制如下:
MOV AL,81H ;控制字,方式 0,A,B,C口 ( 高 4位 )
输出; C口低 4位输入
OUT 1FH,AL ;送控制字
WAITING,IN AL,1EH ;读 C口
TEST AL,01H ;测试 PC0是 1否?
JNZ WAITING ;是 1,打印机忙,等待
MOV AL,BL ;是 0,送数据至打印机
OUT 1CH,AL ;
MOV AL,0FH ;
OUT 1EH,AL ;置 C口高 4位和低 4位为 1
MOV AL,0F0H ;
OUT 1EH,AL ;
9.3.2 双机并行通信
1,查询方式的双机并行通信
【 例 9.6】 假设甲乙两台微机之间并行传送 1KB数据 。 甲机发送,乙机接收 。 甲机的 8255A采用方式 1工作,乙机的 8255A采用方式 0工作 。 两台微机的 CPU与接口之间都采用查询方式交换数据 。
( 1) 接口电路的设计接口电路的连接如图 9-14所示 。 甲机的 8255A是方式 1发送,乙机的 8255A是方式 0接收数据,另外,选用引脚 PC7和
PC3作为联络线 。 差别:甲机的 8255A是方式 1,其联络线是固定的,不可替换;乙机的 8255A是方式 0,其联络线是不固定的,可以选择 。 例如,可选择 PC4和 PC1或 PC5和 PC2等任意组合 。
8255A
PA 7 ~PA 0
PC 7
PC 3
8255A
PA 7 ~PA 0
PC 7
PC 6
A CK
O BF
甲(发 送)
CPU
乙(接 收)
CPU
方式0 方式0
图 9-14 查询方式的双机通信
( 2) 接口程序设计接口驱动程序包括发送程序和接收程序 。
甲机发送的程序段如下:
MOV DX,303H ; 8255A命令端口
MOV AL,l010000B ; 初始化工作方式字
OUT DX,AL
MOV AL,0DH ;置发送允许 INTEA=1
OUT DX,AL
MOV SI,OFFSET BUFS ; 设置发送数据区的指针
OUT CX,3FFH ; 发送字节数
MOV DX,300H ; 向端口 A写第 1个数,产生第 1个信号
MOV AL,[SI] ; 送给乙机,以便获取乙机的信号
OUT DX,AL
INC SI ; 内存地址加 1
DEC CX ; 传送字节数减 1
LOP,MOV DX,302H ; 8255A状态端口 (端口 C)
IN AL,DX ; 查发送中断请求 INTRSA= 1
AND AL,08H ; 是否 PC3= l
JZ LOP ; 若无中断请求则等待;若有向端口 A写数
MOV DX,300H ; 8255A端口 PA地址
MOV AL,[SI] ; 从内存取数
OUT DX,AL ; 通过端口 A向乙机发送第 2个数据
INC SI ; 内存地址加 1
DEC CX ; 字节数减 1
JNZ LOP ; 字节未完,继续
MOV AH,4CH ; 己完,退出
INT 21H ;返回 DOS
BUFS DB … ; 定义 1024个数据乙机接收的程序段如下:
MOV DX,303H ; 8255A命令端口
MOV AL,l0011000B ; 初始化工作方式字
OUT DX,AL
MOV AL,00000111B ; PC3= 1
OUT DX,AL
MOV DI,OFFSETBUFR ; 设置接收数据区的指针
MOV CX,3FFH ; 接收字节数
L1,MOV DX,302H ; 8255A端口 PC
IN AL,DX ; 查甲机的 =0?(乙机的 PC7= 0)
AND AL,80H ; 查甲机是否有数据发来
JNZ L1 ; 若无数据发来,则等待;若有数据,则从端口 A读数
MOV DX,300H ; 8255A端口 PA地址
IN AL,DX ; 从端口 A读入数据
MOV [DI],AL ; 存入内存
MOV DX,303H ; 产生信号,并发回给甲机
MOV DX,00000110B ; P3置,0”
OUT DX,AL
INC DI ; 内存地址加 1
DEC CX ; 字节数减 1
JNZ L1 ; 字节未完,则继续
MOV AX,4C00H ; 己完,退出
INT 21H ; 返回 DOS
BUFR DB l024 DUP(?)
2,中断方式的双机并行通信
【 例 9.7】 给定主从两个微机进行并行传送,共传送 255个字节 。 主机的 8255A采用方式 2,并以中断方式传送数据 。
从机的 8255A采用方式 0,以查询方式传送数据 。
( 1) 接口电路设计接口电路中使用中断控制器 8259A,利用 IBM PC的中断系统将 8255A的中断请求线 INTR接到系统总线的 IRQ2上 。
由于在方式 2下输入中断请求和输出中断请求共用一条线,
因此,需要在中断服务程序中用读取状态字的办法查询
IBF和 OBF状态位来决定执行输入还是输出操作 。
接口电路的连接如图 9-15所示 。 主机的 8255A的端口 PA双向传送,既输出又输入 。 它的中断请求线接到 8259A的 IR2
上 。 从机的 8255A的端口 PA和端口 PB是单向传送,分别作为输出和输入 。
8255A
PA 0 ~P A 7
PC 7
PC 4
8255A
PC 6
PC 5
PB 0 ~P B 7
PC 0 ~P C 2
PA 0 ~P A 7
PC 1
PC 7
PC 6
PC 0
PB 0 ~P B 7
PC 2 ~P C 5
OBF
STB
ACK
IBF
从机
IR 0
IR 2
IR 7
PC 3
8259A
INTA
INT
主机
INTR
INTA
系统总线图 9-15 中断方式的双机并行通信
8255A初始化及主程序:
MOV DX,303H ;8255A控制端口
MOV AL,0C0H ; 方式字:端口 A为 2方式
OUT DX,AL
MOV AL,09H ; 置位 PC4,设置 INTE2= 1,输入中断允许
OUT DX,AL
MOV AL,0DH ; 置位 PC6,设置 INTE1= 1,输入中断允许
OUT DX,AL
MOV SI,300H ; 发送数据块首址
MOV DI,410H ; 接收数据块首址
MOV CX,0FFH ; 发送与接收字节数为 255
……
AGAIN,STI ;开中断
HTL ; 等持中断
DEC CX ; 字节数减 1
JNZ AGAIN ; 未完,继续
MOV AX,4C00H
INT 21H ; 返回 DOS
中断服务程序:
T_R PROC FAR ; 中断服务程序入口
ASSUME CS,CODE,DS,DATA,SS,STACK
PUSH AX ; 保存现场
PUSH DX
PUSH DI
PUSH SI
MOV DX,303H ;8255A控制端口
MOV AL,08H ; 复位 PC4,设置 INTE2= 0,输入中断允许
OUT DX,AL
MOV AL,0CH ;复位 PC6,设置 INTE1= 1,输入中断允许
OUT DX,AL
CLI ; 关中断
MOV DX,302H ;8255A状态端口
IN AL,DX ; 查中断源,读状态字
MOV AH,AL ; 保存状态字
AND AL,20H ; 状态位 IBF= 1,是输入中断
JZ OUTP ; 不是,则跳输出程序 OUTP
INP,MOV DX,303H ; 是,则从端口 A读数
IN AL,DX
MOV [DI],AL ; 存入内存区
INC DI ; 接收数据块内存地址加 1
DEC CX
OUTP,MOV DX,303H ; 向端口 A写数
MOV AL,[SI] ; 从内存取数
OUT DX,AL ; 输出
INC SI ; 发送数据块内存地址加 1
DEC CX
RETURN,MOV DX,303H ; 8255A控制端口
MOV AL,0DH ; 允许输出中断
OUT DX,AL
MOV AL,09H ; 允许输入中断
OUT DX,AL
MOV AL,62H ; OCW2,中断结束
OUT 20H,AL
POP SI
POP DI
POP DX
POP AX
STI
IRET ; 中断返回
T_R ENDP
本章小结本章主要介绍了并行输入 /输出接口的有关概念,
工作原理和特点,对可编程接口芯片 8255A的内部结构,引脚功能,编程结构和主要应用进行了讨论 。
8255A为可编程的并行接口芯片,可为外设提供 3个 8位并行接口,即端口 A,端口 B和端口 C,同时又可分为两组,工作在三种工作方式,即方式 0
( 基本的输入 /输出工作方式 ),方式 1( 选通的输入 /输出方式 ) 和方式 2( 双向选通输入 /输出方式 ) 。
8255A内部共有 4个端口,占用 4个连续的 I/O地址。 4个端口占用 I/O端口从低到高的顺序为 A口,B
口,C口和控制寄存器。
8255A有两类控制字:一类用于定义各端口的工作方式,称为方式选择控制字;另一类用于对 C
端口的一位进行置位或复位操作,称为 C端口置位 /
复位控制字。 8255A各数据端口的工作方式由方式选择控制字进行设置。对 8255A进行初始化编程时,
通过向控制字寄存器写入方式选择控制字,可以让
3个数据端口以用户需要的方式工作。
本章小结第 9章内容到此结束谢谢各位 !
并行输入输出接口技术的概念和功能
8255A的内部结构及引脚
8255A的工作方式及其应用第 9章 并行接口
9.1 概述并行输入 /输出就是在计算机中把一个字符的几个位同时进行传输,它具有传输速度快、效率高的优点。由于并行通信所采用的电缆较多,不太适合长距离传输。所以,并行通信通常用在数据传输率要求较高、而传输的距离相对较短的场合。
实现并行输入 /输出的接口就是并行接口。通常,一个并行接口可设计为输出接口,例如连接一台打印机;也可设计为输入接口,例如连接键盘;还可设计成双向通讯接口,既可作为输入接口又可作为输出接口,例如连接像磁盘驱动器这样的需要双向通路的设备。
图 9-1是典型的并行接口和外设连接的示意图 。
从图中可以看到,并行接口左边是与 CPU连接的总线,右边用一个通道和输入设备相连,另一个通道和输出设备相连,输入和输出都有独立的信号交换联络控制线 。 在并行接口内部用控制寄存器来寄存
CPU对它的控制命令,用状态寄存器来提供各种工作状态供 CPU查询,此外,还有供输出和输入数据用的输出数据锁存器和输入数据缓冲器 。
控制寄存器输入缓冲寄存器输出缓冲寄存器状态寄存器数据总线读出信号写入信号复位准备好中断请求地址译码
C P U
输入设备数据输入准备好数据输入回答数据输入输出设备数据输出数据输出准备好数据输出回答图 9–1并行接口与外设连接示意图并行接口的基本工作原理分析如下:
( 1) 数据的输入过程当外设把数据送到数据输入线上时,通过,数据输入准备好,状态线通知接口取数 。 接口在把数据锁存到输入缓冲器的同时,把数据输入回答线置
,1”,用来通知外设,接口的数据输入缓冲器
,满,,禁止外设再送数据 。 同时把内部状态寄存器中,输入准备好,状态位置,1”,以便 CPU对其进行查询或向 CPU申请中断 。 在 CPU读取接口中的数据后,接口将自动清除,输入准备好,状态位和
,数据输入回答,信号,以便外设输入下一个数据 。
( 2) 数据的输出过程当数据输出缓冲器,空闲,时,接口中,输出准备好,状态位置,1”。 在接收到 CPU的数据后,
,输出准备好,状态位复位 。 数据通过输出线送到外设,同时,由,数据输出准备好,信号线通知外设取数据 。 当外设接收一个数据时,回送一个,数据输出回答,信号,通知接口准备下一次输出数据
。 接口将撤消,数据输出准备好,信号并且再一次置,输出准备好,状态位为,1”,以便 CPU输出下一个数据 。
9.2 可编程并行接口芯片 8255A
8255A是 Intel公司生产的通用可编程并行接口芯片,
它有 3个 8位并行输入 /输出端口,即 A口,B口和 C口,可利用编程方法来设置这 3个端口是作为输入端口还是作为输出端口;有 3种工作方式,分别为方式 0,方式 1,方式 2;有 3
种数据传送方式,分别为无条件传递方式,查询式传递方式和中断传送方式 。
8255A芯片的另一个特点是对端口 C的操作,C口既可作为数据口也可作为控制口 。 当 C 口作为数据口时,可以输出 8位数据或分别作为两个 4位数据口输出,此外,还可对端口 C的每 —位进行操作,比如设置某一位为输入或输出,
这样可以为位控方式提供了便利条件 。
9.2.1 8255A内部结构及引脚特性
1,8255A内部结构
8255A芯片的内部结构如图 9-2 所示,它包括 4个部分:数据总线缓冲器;读写控制逻辑; A组和 B组控制电路;端口 A,B,C。
端口 A
数据缓冲器读 / 写控制逻辑端口 C
上半部端口 C
下半部端口 B
A 组控制器
B 组控制器
D 0 -
D 7
RD
WR
0A
1A
RES E T
CS
PA 0 - PA 7
PC 4 - PC 7
PC 0 - PC 3
PB 0 - PB 7
内部数据总线图 9-2 8255A芯片的内部结构
2,8255A引脚特性及其与外部的连接
8255A并行接口芯片有 40条引脚,如图 9-3
所示。这 40条引脚可分为与外设连接和与 CPU
连接两类引脚 。
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
3 1
3 0
2 9
2 8
2 7
2 6
2 5
2 4
2 3
2 2
2 1
4 0
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
8 2 5 5
RD
3PA
2PA
1PA
0PA
WR
CS
G ND
0A
1A
7PC
6PC
7PB
6PB
5PB
4PB
3PB2PB
1PB
0PB
0PC
1PC
2PC
3PC
4PC
5PC 5D
4D
V CC
R E S E T
1D
6D
2D
7PA
5PA
6PA
3D
7D
0D
4PA
图 9-3 8255引脚图
9.2.2 8255A的工作方式
1,8255A控制字
8255A是可编程接口芯片,所谓可编程就是用指令的方法先对该芯片进行初始化,决定芯片的端口是处于输入数据状态还是处于输出数据状态,以及每个端口工作在何种方式下 。 工作方式和工作状态的建立是向
8255A的控制口写入相应的控制字来完成的 。
8255A共有两个控制字,即工作方式控制字和相对 C口进行置位或复位的控制字。
( 1) 工作方式控制字
8255A的工作方式控制字格式和各位的含义如图 9-4所示 。 工作方式控制字用来设定 A,B 口和 C口的数据传送方向是输入还是输出,设定各口的工作方式是 3种方式的哪一种 。 如前所述,
8255A的 3种工作方式分别是方式 0,方式 l和方式 2。
A口可以工作在 3种方式中的任何 —种,B口只能用于前两种工作方式,C口只能工作在方式 0。
D
6
D
5
D
4
D
3
D
2
D
1
D
0
D
7
C 口 下 半 部
1 输 入
0 输 出
B 口 选 择
1 输 入
0 输 出
B 口 方 式
0 方 式 0
1 方 式 1
C 口 上 半 部
1 输 入
0 输 出
A 口 选 择
1 输 入
0 输 出
0 0 方 式 0
0 1 方 式 1
1 X 方 式 2
A 口 方 式特 征 位图 9-4 工作方式控制字格式
( 2) 端口 C的置位 /复位控制字端口 C的置位 /复位控制字可实现对端口 C的每一位进行控制 。 置位是使该位输出为,1”,复位是使该位输出为
,0”。
控制字的格式如图 9-5所示 。
X X X D
3
D
2
D
1
D
0
D
7
位 控 制
1 置 位特 征 位位 选 择
0 复 位图 9-5 端口 C的置位 /复位控制字格式
2,8255A工作方式
8255A的 3种工作方式分别讨论如下:
( 1) 方式 0:基本输入 /输出方式方式 0是一种基本输入 /输出方式,它不需要应答式的联络信号,不使用中断,有两个 8位端口
( A口和 B口 ) 和两个 4位端口 ( C口的上半部和 C
口的下半部 ),任何一个端口都可以作为输入或输出端口 。 输出数据可被锁存,输入数据不锁存 。
各端口的输入 /输出方向可有 16种不同的组合 。
( 2) 方式 1:选通输入 /输出方式在这种工作方式下,端口 A和端口 B为数据传输口,可通过工作方式控制字设定为数据输入或数据输出。端口 C的某些位作为控制端口,配合 A口和 B口进行数据的输入和输出。方式 1通常用于查询方式或中断方式传送数据。
( 3) 方式 2:双向选通输入 /输出方式只有 A口可以采用这种工作方式 。 在这种方式下,可以使外部设备利用端口 A的 8位数据线与 CPU之间分时进行双向数据传送,也就是说,可在单 —的 8位数据线上既输出数据给外部设备,也从外部设备输入数据 。 输入或输出的数据都是锁存的 。 工作时既可采用查询方式,也可采用中断方式传输数据 。
当端口 A工作在方式 2时,使用 PC3~ PC7作为控制和状态信息,也就是把方式 1输入数据和方式 1输出数据的控制信号组合起来 。 端口 B可工作在方式 0或方式 1,如果工作在方式 1,
可利用 PC0~ PC2作为控制和状态信号 。
9.2.3 8255A的编程
8255A工作时首先要初始化,即要写入控制字,来指定其工作方式,接着还要用控制字将中断标志 INTE置
,1”或置,0”,这样就可以编程将数据从数据总线通过
8255A送出,或由外设通过 8255A的某口将数据送至数据总线,由 CPU接收 。
通过下面的几个例子来说明如何对 8255A进行编程 。
【 例 9.3】 假设在一个系统中,要求 8255A工作在方式 0。 且 A口作为输入,B口,C口作为输出 。 控制字和连接电路图如图 9-10所示 。
地址译码器
7PA
7PC
0PC
CS
1A
0A
WR
RD
0D~7D
0PA
8255
9A
2A
0A
1A
0D~7D
IO W
IO R ~
~
7PB
0PB~
1 0 0 1 0 0 0 0
D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
D 7 = 1,方式标志位有效
D 6,D 5 = 0 0,A 口方式0
D 4 = 1,A 口输入
D 3 = 0,C 口高四位输出
D 2 = 0,B 口方式0
D 1 = 0,B 口输出
D 0 = 0,C 口低四位输出图 9-10 A口,B口,C口工作在方式 0
设片选信号 CS由 A9~ A2决定,设为 10111100B,当 A1A0= 11时,
控制字地址为 2F3E,其工作程序如下:
MOV AL,90 ;方式 0,A口输入,B,C口输出
MOV DX,2F3H ; 控制寄存器地址 DX
OUT DX,AL ;控制字送控制寄存器
MOV DX,2F0H ; A口地址送 DX
IN AL,DX ;从 A口读入数据
MOV DX,2F1H ; B口地址送 DX
MOV AL,DATA1 ;要输出的数据 DATA1送 AL
OUT DX,AL ; 将输出的数据 DATA1送 B口
MOV DX,2F2H ; C口地址送 DX
MOV AL,DATA2 ; 要输出的数据 DATA2送 AL
OUT DX,AL ; 将 DATA2送 C口输出
【 例 9.4】 假设在一个系统中,8255A工作在方式 1,A口输入,B口输出,PC4,PC5为输入,禁止 B口中断,其控制字和连接电路图如 9-11所示 。
设控制字地址为 2F3H,其初始化程序如下:
MOV AL,0AEH ; A口输出,B口输入
MOV DX,2F3H ; 控制寄存器地址 DX
OUT DX,AL ; 控制字送控制寄存器
MOV DX,09H ; A口的 INTE( PC4置 1)
OUT DX,AL ; 控制字送控制寄存器
MOV AL,04HH ; B口的 INTE( PC2置 1)
OUT DX,AL ; 控制字送控制寄存器地址译码器
CS
1A
0A
WR
RD
0D~7D
B 口
8255
9A
2A
0A
1A
0D~7D
IO W
IO R
PC 2
1 0 1 0 1 1 1 X
D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
D 7 = 1,方式标志位有效
D 6,D 5 = 0 0,A 口方式1
D 4 = 0,A 口输出
D 3 = 1,C 口高四位输入
D 2 = 1,B 口方式1
D 1 = 1,B 口输入
D 0 = 0,C 口低四位任意
D 7 -D 0
PC 1
A 口
PC 7
PC 6
PC 4 PC 5
外部设备
STBB
IBFB
OBFA
ACKA
I/O
控制字图 9-11 A口,B口,C口工作在方式 1
9.3 8255A的应用并行接口芯片在微型计算机与外部设备的通信中是经常用到的,下面我们分析 8255A与打印机及两台微机之间并行传送数据的应用实例。
9.3.1 8255A与打印机接口打印机可以打印计算机送来的 ASCII码字符,由于
ASCII码字符为 8位,因此,我们可以用 8255A来作打印机的接口。
5.2.1 PC总线
PC总线也叫做 PC/XT总线,是早期 PC/XT微机中采用的系统总线,它支持 8位数据传输和 10位寻址空间,最大通信速率为 5 MB/s。 它有 62根引脚,可插入符合 PC总线的各种扩展板,以扩展微机的功能 。 其特点是把 CPU视为总线的唯一总控设备,其余外围设备均为从属设备 。 具有价格低,可靠性好,兼容性好和使用灵活等优点 。
PC总线 62条引脚信号通过一个 31脚分为 A,B两面连接插槽,其中 A面为元件面,B面为焊接面 。 这 62条引脚信号分为地址线,数据线,控制线,状态线,辅助线与电源等 5类接口信号线 。
【 例 9.5】 打印机工作时序如图 9-12所示 。 用 8255A
设计打印机的接口电路和程序 。ST RO BE
0D~7D
A C K
B U S Y
图 9-12 打印机工作时序工作原理分析:数据接口将数据传送到打印机的数据端口,
利用一个负脉冲启动锁存,然后由打印机处理 。 同时打印机送出高电平信号 BUSY,表示打印机忙于打印 。 一旦 BUSY变为低电平,表示打印结束,即可接收下一数据 。 可以利用 8255A
工作方式 0实现上述打印控制 。
硬件连接如图 9-13所示,8255A的地址线 A1,A0与计算机的
A1,A0连接,片选信号由 74LS138译码器产生 。
根据连线可知 8255A的 A口,B口,C口及控制口的地址为:
1CH,1DH,1EH,1FH。
7PA
0D~7D
S TB
B U SY
7PC
0PC
CS
1A
0A
WR
RD
0D~7D
0PA
8255
138LS74
0Y
7A
6A
5A
0A
1A
0D~7D
I O W
I O R
打印机
~
图 9-13 8255与打印机接口电路接口的程序编制如下:
MOV AL,81H ;控制字,方式 0,A,B,C口 ( 高 4位 )
输出; C口低 4位输入
OUT 1FH,AL ;送控制字
WAITING,IN AL,1EH ;读 C口
TEST AL,01H ;测试 PC0是 1否?
JNZ WAITING ;是 1,打印机忙,等待
MOV AL,BL ;是 0,送数据至打印机
OUT 1CH,AL ;
MOV AL,0FH ;
OUT 1EH,AL ;置 C口高 4位和低 4位为 1
MOV AL,0F0H ;
OUT 1EH,AL ;
9.3.2 双机并行通信
1,查询方式的双机并行通信
【 例 9.6】 假设甲乙两台微机之间并行传送 1KB数据 。 甲机发送,乙机接收 。 甲机的 8255A采用方式 1工作,乙机的 8255A采用方式 0工作 。 两台微机的 CPU与接口之间都采用查询方式交换数据 。
( 1) 接口电路的设计接口电路的连接如图 9-14所示 。 甲机的 8255A是方式 1发送,乙机的 8255A是方式 0接收数据,另外,选用引脚 PC7和
PC3作为联络线 。 差别:甲机的 8255A是方式 1,其联络线是固定的,不可替换;乙机的 8255A是方式 0,其联络线是不固定的,可以选择 。 例如,可选择 PC4和 PC1或 PC5和 PC2等任意组合 。
8255A
PA 7 ~PA 0
PC 7
PC 3
8255A
PA 7 ~PA 0
PC 7
PC 6
A CK
O BF
甲(发 送)
CPU
乙(接 收)
CPU
方式0 方式0
图 9-14 查询方式的双机通信
( 2) 接口程序设计接口驱动程序包括发送程序和接收程序 。
甲机发送的程序段如下:
MOV DX,303H ; 8255A命令端口
MOV AL,l010000B ; 初始化工作方式字
OUT DX,AL
MOV AL,0DH ;置发送允许 INTEA=1
OUT DX,AL
MOV SI,OFFSET BUFS ; 设置发送数据区的指针
OUT CX,3FFH ; 发送字节数
MOV DX,300H ; 向端口 A写第 1个数,产生第 1个信号
MOV AL,[SI] ; 送给乙机,以便获取乙机的信号
OUT DX,AL
INC SI ; 内存地址加 1
DEC CX ; 传送字节数减 1
LOP,MOV DX,302H ; 8255A状态端口 (端口 C)
IN AL,DX ; 查发送中断请求 INTRSA= 1
AND AL,08H ; 是否 PC3= l
JZ LOP ; 若无中断请求则等待;若有向端口 A写数
MOV DX,300H ; 8255A端口 PA地址
MOV AL,[SI] ; 从内存取数
OUT DX,AL ; 通过端口 A向乙机发送第 2个数据
INC SI ; 内存地址加 1
DEC CX ; 字节数减 1
JNZ LOP ; 字节未完,继续
MOV AH,4CH ; 己完,退出
INT 21H ;返回 DOS
BUFS DB … ; 定义 1024个数据乙机接收的程序段如下:
MOV DX,303H ; 8255A命令端口
MOV AL,l0011000B ; 初始化工作方式字
OUT DX,AL
MOV AL,00000111B ; PC3= 1
OUT DX,AL
MOV DI,OFFSETBUFR ; 设置接收数据区的指针
MOV CX,3FFH ; 接收字节数
L1,MOV DX,302H ; 8255A端口 PC
IN AL,DX ; 查甲机的 =0?(乙机的 PC7= 0)
AND AL,80H ; 查甲机是否有数据发来
JNZ L1 ; 若无数据发来,则等待;若有数据,则从端口 A读数
MOV DX,300H ; 8255A端口 PA地址
IN AL,DX ; 从端口 A读入数据
MOV [DI],AL ; 存入内存
MOV DX,303H ; 产生信号,并发回给甲机
MOV DX,00000110B ; P3置,0”
OUT DX,AL
INC DI ; 内存地址加 1
DEC CX ; 字节数减 1
JNZ L1 ; 字节未完,则继续
MOV AX,4C00H ; 己完,退出
INT 21H ; 返回 DOS
BUFR DB l024 DUP(?)
2,中断方式的双机并行通信
【 例 9.7】 给定主从两个微机进行并行传送,共传送 255个字节 。 主机的 8255A采用方式 2,并以中断方式传送数据 。
从机的 8255A采用方式 0,以查询方式传送数据 。
( 1) 接口电路设计接口电路中使用中断控制器 8259A,利用 IBM PC的中断系统将 8255A的中断请求线 INTR接到系统总线的 IRQ2上 。
由于在方式 2下输入中断请求和输出中断请求共用一条线,
因此,需要在中断服务程序中用读取状态字的办法查询
IBF和 OBF状态位来决定执行输入还是输出操作 。
接口电路的连接如图 9-15所示 。 主机的 8255A的端口 PA双向传送,既输出又输入 。 它的中断请求线接到 8259A的 IR2
上 。 从机的 8255A的端口 PA和端口 PB是单向传送,分别作为输出和输入 。
8255A
PA 0 ~P A 7
PC 7
PC 4
8255A
PC 6
PC 5
PB 0 ~P B 7
PC 0 ~P C 2
PA 0 ~P A 7
PC 1
PC 7
PC 6
PC 0
PB 0 ~P B 7
PC 2 ~P C 5
OBF
STB
ACK
IBF
从机
IR 0
IR 2
IR 7
PC 3
8259A
INTA
INT
主机
INTR
INTA
系统总线图 9-15 中断方式的双机并行通信
8255A初始化及主程序:
MOV DX,303H ;8255A控制端口
MOV AL,0C0H ; 方式字:端口 A为 2方式
OUT DX,AL
MOV AL,09H ; 置位 PC4,设置 INTE2= 1,输入中断允许
OUT DX,AL
MOV AL,0DH ; 置位 PC6,设置 INTE1= 1,输入中断允许
OUT DX,AL
MOV SI,300H ; 发送数据块首址
MOV DI,410H ; 接收数据块首址
MOV CX,0FFH ; 发送与接收字节数为 255
……
AGAIN,STI ;开中断
HTL ; 等持中断
DEC CX ; 字节数减 1
JNZ AGAIN ; 未完,继续
MOV AX,4C00H
INT 21H ; 返回 DOS
中断服务程序:
T_R PROC FAR ; 中断服务程序入口
ASSUME CS,CODE,DS,DATA,SS,STACK
PUSH AX ; 保存现场
PUSH DX
PUSH DI
PUSH SI
MOV DX,303H ;8255A控制端口
MOV AL,08H ; 复位 PC4,设置 INTE2= 0,输入中断允许
OUT DX,AL
MOV AL,0CH ;复位 PC6,设置 INTE1= 1,输入中断允许
OUT DX,AL
CLI ; 关中断
MOV DX,302H ;8255A状态端口
IN AL,DX ; 查中断源,读状态字
MOV AH,AL ; 保存状态字
AND AL,20H ; 状态位 IBF= 1,是输入中断
JZ OUTP ; 不是,则跳输出程序 OUTP
INP,MOV DX,303H ; 是,则从端口 A读数
IN AL,DX
MOV [DI],AL ; 存入内存区
INC DI ; 接收数据块内存地址加 1
DEC CX
OUTP,MOV DX,303H ; 向端口 A写数
MOV AL,[SI] ; 从内存取数
OUT DX,AL ; 输出
INC SI ; 发送数据块内存地址加 1
DEC CX
RETURN,MOV DX,303H ; 8255A控制端口
MOV AL,0DH ; 允许输出中断
OUT DX,AL
MOV AL,09H ; 允许输入中断
OUT DX,AL
MOV AL,62H ; OCW2,中断结束
OUT 20H,AL
POP SI
POP DI
POP DX
POP AX
STI
IRET ; 中断返回
T_R ENDP
本章小结本章主要介绍了并行输入 /输出接口的有关概念,
工作原理和特点,对可编程接口芯片 8255A的内部结构,引脚功能,编程结构和主要应用进行了讨论 。
8255A为可编程的并行接口芯片,可为外设提供 3个 8位并行接口,即端口 A,端口 B和端口 C,同时又可分为两组,工作在三种工作方式,即方式 0
( 基本的输入 /输出工作方式 ),方式 1( 选通的输入 /输出方式 ) 和方式 2( 双向选通输入 /输出方式 ) 。
8255A内部共有 4个端口,占用 4个连续的 I/O地址。 4个端口占用 I/O端口从低到高的顺序为 A口,B
口,C口和控制寄存器。
8255A有两类控制字:一类用于定义各端口的工作方式,称为方式选择控制字;另一类用于对 C
端口的一位进行置位或复位操作,称为 C端口置位 /
复位控制字。 8255A各数据端口的工作方式由方式选择控制字进行设置。对 8255A进行初始化编程时,
通过向控制字寄存器写入方式选择控制字,可以让
3个数据端口以用户需要的方式工作。
本章小结第 9章内容到此结束谢谢各位 !