微机原理及应用
主讲:谢维成
http://xweicheng.ys168.com
scxweicheng@yahoo.com.cn
第10章 并行接口芯片8255
引言
CPU与外设之间的信息传送都是通过接口电路来
进行的。
计算 机 外 部设备、计算机 计 算机之间交
换信息称之为计算机通信,计算机通信可分为两大类 :
并行通信: 8位或16位或32位数据同时传输,
速度快,信息率高,成本高
串行通信: 一位一位数据传送(在一条线上顺
序传送),成本低
实现并行通信的接口就是并行接口。
10.1 可编程并行接口芯片8255A(结构)
8255A是可编程的,可通过软件来设置芯片的工作
方式。连接外部设备时,通常不需要 附加 外部 电路 。
8255A的内部结构(见P304图10-1)
由以下几部分组成:
10.1 可编程并行接口芯片8255A(结构)
1.有三个8位数据端口,即端口A 、 B、 C,可用软件使
它们分作输入端口或输出端口。
(1)端口A 一个8位数据输入锁存器
一个8位数据输出锁存器/缓冲器
(2)端口B 一个8位数据输入缓冲器
一个8位数据输出锁存器/缓冲器
(3)端口C 一个8位数据输入缓冲器
一个8位数据输出锁存器/缓冲器
A口和B口可作为独立的输入端口或输出端口,而
C口则常被分成两个4位端口,以配合A口和B口的工作,
输入状态信号和输出控制信号。
10.1 可编程并行接口芯片8255A(结构)
8255内部结构
图 10-1 8255A的内部结构
o
o
o
D
7
~D
0
RD
WR
A
1
A
0
RESET
CS
PA
7
~PA
0
I/O
PC
7
~PC
4
I/O
PC
3
~PC
0
I/O
PB
7
~PB
0
I/O
数据
总线
缓冲嚣
读写
控制
逻辑
A组
控制
B组
控制
内部
总线
A组
A口
A组
C口
B组
B口
B组
C口
10.1 可编程并行接口芯片8255A(结构)
2、A组和B组控制电路
这两组控制电路一方面接收芯片内部总线上的
控制字,另一方面接收来自读/写控制逻辑电路的读/
写命令,以决定两组端口的工作方式和读/写操作。
A组控制电路 控制端口A和端口C的高4位(PC7~PC4)
B组控制电路 控制端口B和端口C的低4位(PC3~PC0)
10.1 可编程并行接口芯片8255A(结构)
o
o
o
D
7
~D
0
RD
WR
A
1
A
0
RESET
CS
数据
总线
缓冲嚣
读写
控制
逻辑
A组
控制
B组
控制
A组
A口
A组
C口
B组
C口
B组
B口
PA
7
~PA
0
I/O
PC
7
~PC
4
I/O
PC
3
~PC
0
内部
总线
I/O
PB
7
~PB
0
I/O
图10-1 8255A的内部结构
10.1 可编程并行接口芯片8255A(结构)
2、A组和B组控制电路
这两组控制电路一方面接收芯片内部总线上的
控制字,另一方面接收来自读/写控制逻辑电路的读/
写命令,以决定两组端口的工作方式和读/写操作。
A组控制电路 控制端口A和端口C的高4位(PC7~PC4)
B组控制电路 控制端口B和端口C的低4位(PC3~PC0)
10.1 可编程并行接口芯片8255A(结构)
3.数据总线缓冲器
是一个双向三态的8位数据缓冲器, 它是8255A与
系统总线的连接接口,输入输出的数据 ,CPU发给
8255A的控制字及外设的状态信息都是通过缓冲器传
送的。
4.读/写控制逻辑
负责管理8 255A的数据传送过程,它接收C S、 A1、
A0和 控 制 信 号 RD、WR、RESET, 将这些信号进行组合,
得到对 A组控制和B组控制的控制命令,以完成对数据 、
状态信息及控制信息的传输。
10.1 可编程并行接口芯片8255A(结构)
数据缓冲和读写控制逻辑
o
o
o
D
7
~D
0
RD
WR
A
1
A
0
RESET
CS
数据
总线
缓冲嚣
读写
控制
逻辑
A组
控制
B组
控制
A组
A口
A组
C口
B组
C口
B组
B口
PA
7
~PA
0
I/O
PC
7
~PC
4
I/O
PC
3
~PC
0
内部
总线
I/O
PB
7
~PB
0
I/O
图10-1 8255A的内部结构
8255A的引脚信号
8255A
CS
WR
RD
PA
7
~PA
0
D
7
~D
0
A口
PB
7
~PB
0
B口
PC
7
~PC
0
A
1
C口
A
0
RESET
图10-X 8255A的引脚信号
10.2 方式选择
8255A的控制字
8255A通过向 控制端口 写控制字,来决定各端口
的工作。
控制字分为二类:
一类是芯片各端口的 方式选择控制字 ,它可使
8255A的3个数据端口工作在不同的工作方式。
另一类是 C端口按位置位/复位控 制字 ,它可对C
端口的某一位置1或置0。
10.2 方式选择
1. 方式选择控制字
先介绍8255A的三种工作方式
方式0:基本的输入/输出。
在此方式下,A 、 B、 C可分别设置成输入或输出。
方式1:选通输入/输出方式。
只有A口、B口可工作在方式1,它们要分别占用C
口三条线作为联络线,C口的余下线只能工作在方式0 。
10.2 方式选择
方式2:双向传送方式
只有A口可工作在方式2,此时C口有5条线 用 来
作A口和外设之间的联络线,C口剩下的3 条线视B 口
而定,若B口工作在方式0,亦为方式0;若B 口 工 作 在
方式1,则作B口联络线。
10.2 方式选择
方式选择控制字的格式如下图所示:
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
特征位
A组方式选择
00=方式0
01=方式1
1×=方式2
A口:
1=输入
0=输出
PC
7
~PC
4
: 1=输入
0=输出
B组方
式选择
:
1=方式1
0=方式0
B口
1=输入
1=输入
0=输出
0=输出
PC
3
~PC
0
:
特征位
1有效
图10-3 8255A方式选择控制字
10.2 方式选择
举例: 设A口、B口、C口均工作在方式0,要求A口、B
口作输出,C口作输入。
方式选择控制字为: 10001001B=89H
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
1
00 0 0
0
11
特
征
位
A 组
方式0
A口
C
高
输
入
C
低
输
入
B口
输
出
B组
方式0
10.2 方式选择
程序编写
方式 选择 控制 字应 送入控制口,可用如下两条
指令完成:(设控制口地址为83H)
MOV AL,89H
OUT 83H,AL
2.C端口按位置位/复位控制字
其格式如下:
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0 0 0 PC
0
0 0 1 PC
1
0 1 0 PC
2
0 1 1 PC
3
1 0 0 PC
4
1 0 1 PC
5
1 1 0 PC
6
1 1 1 PC
7
C端口置位/复位标志
0=有效
位
选
择
0复位
1置位无效
图10-4 C端口按位置位/复位控制字
10.2 方式选择
C端口的数据位常作为控制位用。此控制字 只
影响其中某一位,其它位状态不变。
例:将PC5复位,其控制字为:
00001010B 即0AH
若将PC3置位,其控制字为:
0000111B 即 07H
注意:此控制字尽管是对端口 C进行操 作, 但此
控制字必须写入控制口。
10.2 方式选择
例: 设控制口地址为22B H, 对P C5进行复位的
指令段为:
MOV AL,0AH
MOV DX,22BH
OUT DX,AL
10.3 方式0
1、基本功能
方式0也叫 基本的输入/输出 方式 ,参加这种方
式传送数据的有两个8位端口(A口和B口)及两 个 4位
端口(C口的高4位及低4位)
10.3 方式0
方式0的特点为:
①四个端口中的任一端口既可 作输 入口 ,也可作 输出
口,各端口之间没有必然的联系。
②各个端口的输入或输出,可以有16种不同的组合。
③输出是锁存的,输入是不锁存的。
2、方式0举例
设8255A的A口、B口均工 作 在 方 式 0,A 口作 输入
(开关量)B口作输出。原理图如下:
10.3 方式0
图10-5 方式0举例
D
7
~D
0
CS
WR
RD
PA
7
PB
7
PA
0
PB
0
R
R
发
光
二
极
管
8255A
A
1
A
0
RESET
R
+5V
R
驱
动
器
10.3 方式0
设8255A的 A口地址为228H
B口地址为229H
C口地址为22AH
控制口地址为22BH
程序段为:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AL,90H ;方式控制字
MOV DX,22BH
OUT DX,AL
1 0 0 1 0 0 0 0
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
10.3 方式0
MOV SI,8000H
LP: MOV DI,6000H
LP1: MOV DX,228H
IN AL,DX ;读入A口开关状态
MOV DX,229H
OUT DX,AL ;B口输出
DEC DI
JNZ LP1
DEC SI
JNZ LP
RET
MAIN ENDP
CODE ENDS
END START
IN AL,DX
10.3 方式0
D
7
~D
0
CS
WR
RD
PA
7
PB
7
PA
0
PB
0
R
R
发
光
二
极
管
‘0’
‘1’
图10-5 方式0举例
8255A
A
1
A
0
RESET
R
+5V
R
驱
动
器
10.3 方式0
MOV SI,8000H
LP: MOV DI,6000H
LP1: MOV DX,228H
IN AL,DX ;读入A口开关状态
MOV DX,229H
;B口输出
DEC DI
JNZ LP1
DEC SI
JNZ LP
RET
MAIN ENDP
CODE ENDS
END START
OUT DX,AL
10.3 方式0
图10-5 方式0举例
D
7
~D
0
CS
WR
RD
PA
7
PB
7
PA
0
PB
0
R
R
发
光
二
极
管
低电平
8255A
A
1
A
0
RESET
R
R
高电平
驱
动
器
+5V
10.3 方式0
MOV SI,8000H
LP: MOV DI,6000H
LP1: MOV DX,228H
IN AL,DX ;读入A口开关状态
MOV DX,229H
;B口输出
DEC DI
JNZ LP1
DEC SI
JNZ LP
RET
MAIN ENDP
CODE ENDS
END START
OUT DX,AL
10.4 方式1
1、方式1的基本功能
方式 1也叫选通的输入/输出方式。端口A和端
口B均分别可设置为输入或输出。和方式0相比 , 其
差别主要是要利用C端口提供选通信号和应答信号,
而 这 些 信 号 与 端口C中的数位之间有着固定的对应
关系,这种关系不是程序可以改变的。
2、方式1输入情况下有关信号规定及时序
10.4 方式1
①方式1输入端口对应控制信号如下图示:
B口方式 1输入
A口方式 1输入
PC
3
&
INTE
A
PC
4
PC
5
PC
6、 7
PA
7
~PA
0
STB
A
IBF
A
INTR
A
I/O
书上有错
PC
0
&
INTE
B
PC
1
PB
7
~PB
0
STB
B
IBF
B
PC
2
INTR
B
方式控制字 方式控制字
图10-11 方式1时输入端口的信号
1 0 1 1
1/ 0
1
1 1
10.4 方式1
1.STB 选通信号输入,低电平有效。这 是 外 设
送给8255A的输入信号,当其有效时,输入设备把
数据送入8255A的输入缓冲器(A口用PC 4、 B口用 PC2
作选通输入端)
2.IBF 输入缓冲器满信号,高电平有效 。 这 是
8255A输出的状态信号,当其有效时表示数据已输
入至输入缓冲器(A口用PC5、B口用PC1作IBF)
3.INTR 中断请求信号,高电平有效。这是82 55A
送往C PU的中断请求信号,以要求C PU服务(A口用
PC3、B口用PC0作INTR)
10.4 方式1
4.INTE 中断允许信号,实际上这是一个 控 制 中
断允许或中断屏蔽的信号。INTE没有外部引出端,
它是通过对C端口按位置位/复位来控制的。对 方 式
1输入而言:
允许8255A的A口中断,将PC4置位
禁止8255A的A口中断,将PC4复位
允许8255A的B口中断,将PC2置位
禁止8255A的B口中断,将PC2复位
10.4 方式1
②方式1的输入时序(参见P314图10-12)
图10-12 方式1的输入时序
t
SIT
t
RIT
t
RIB
?
??
t
ST
STB
t
SIB
t
PH
t
PS
来自外设的
输入数据
INTR
RD
?
IBF
10.4 方式1
当外设数据准备好,并已输至8255A的端
口数据线上,外设发出STB信号将数据装入
8255A的输入缓冲器,STB下降沿 经
t
SIB
时间后,IBF变高,通知外设停止送数,此
信号可提供CPU查询,而STB的上升沿 后
经过t
SIT
向CPU发出INTR信号(如果INTE=1),
若CPU允许响应中断,在中断服务程序中,CPU
用IN指令读入数据,在RD下降沿经t
RIT
就清除
中断请求,在RD上升沿经t
RIB
使IBF变低,表示
数据已读至CPU,缓冲器空,告知外设可输入
新的数据,开始下一个数据输入过程。
10.4 方式1
②方式1的输入时序(参见P314图10-12)
图10-12 方式1的输入时序
t
SIT
t
RIT
t
RIB
?
??
t
ST
STB
?
t
SIB
t
PH
t
PS
来自外设的
输入数据
INTR
RD
IBF
10.4 方式1
当外设数据准备好,并已输至8255A的端
口数据线上,外设发出STB信号将数据装入
8255A的输入缓冲器,STB下降沿 经
t
SIB
时间后,IBF变高,通知外设停止送数,此
信号可提供CPU查询,而STB的上升沿 后
经过t
SIT
向CPU发出INTR信号(如果INTE=1),
若CPU允许响应中断,在中断服务程序中,CPU
用IN指令读入数据,在RD下降沿经t
RIT
就清除
中断请求,在RD上升沿经t
RIB
使IBF变低,表示
数据已读至CPU,缓冲器空,告知外设可输入
新的数据,开始下一个数据输入过程。
10.4 方式1
②方式1的输入时序(参见P314图10-12)
t
SIT
t
RIT
t
RIB
?
??
t
ST
STB
t
SIB
t
PH
t
PS
来自外设的
输入数据
INTR
RD
?
IBF
图10-12 方式1的输入时序
10.4 方式1
若A口、B口同时申请中断,内部无排队,
优先权一样,要求硬件排队。
设A口、B口均工作在方式1的输入,则
方式控制字为:
1 0 1 1 1 1 1 0=BEH
特 A PC
6
B B 无
征A口入 PC
7
方式1 入效
位 方式 1 入
允许A口中断 00001001=09H(PC
4
置位)
允许B口中断 00000101=05H(PC
2
置位)
10.4 方式1
①方式1输出端口对应控制信号如下图示:
B口方式 1输出
A口方式 1输出
PC
3
&
INTE
A
PC
6
PC
7
PC
4、 5
PA
7
~PA
0
ACK
A
OBF
A
PC
0
&
INTE
B
PC
2
PC
1
PB
7
~PB
0
ACK
B
OBF
B
INTR
B
书上有错
INTR
A
I/0
方式控制字 方式控制字
图10-8 方式1时输出端口的信号
1 0 1 0
1/0
1 1 0
10.4 方式1
1.OBF 输出缓冲器满信号,低电平有效 。 这 是
8255A输出给外设的一个信号,当其有效, 表示C PU已
经把数据输出至指定的端口,外设可把数据取走(A
口用PC7、B口用PC1作OBF)
2.ACK 外设的响应信号,低电平有效。当其有效,
告知C PU输出给8255A的数据已 由 外 设 取 走 (A口用
PC6、B口用PC2作ACK)
10.4 方式1
3.INTR 中断请求信号,高电平有效。当外设(输
出装置)已接受了CP U输出的数据后,用I NTR向C PU提
出 新 的 中 断 请 求,要求C PU继续输出数据(A口用 PC3、
B口用PC0作INTR)
4.INTE 中断 允许 信号 ,其 意义与方式1的输入情
况一样。
允许A口中断 PC6置位
允许B口中断 PC2置位
10.4 方式1
②方式1的输出时序如下图示:(参见P316图10-14)
?
?
?
t
WOB
t
AOB
t
AK
t
AIT
WR
OBF
ACK
数据有效
INTR
t
WIT
t
WB
送往外设的数据
图10-14 方式1的输出时序
10.4 方式1
输出过程是由CPU响应中断开始,在中断
服务程序中,CPU向8255A输出数据,发出WR
写信号,WR的上升沿一方面清除中断请求
INTR,表示CPU已经响应了中断; 另一方面
使OBF有效,通知外设接收数据,在WR上升
沿经过t
WB
时间数据就输出了。当外设接收
数据后, 发出ACK信号,其下降沿使OBF无
效,而其上升沿使INTR有效,发出新的中断
请求,从而开始一个新的输出过程。
10.4 方式1
设 A口、B口均工作在方式1输出,其方
式控制字为:
1 0 1 0 0 1 0 0 = A4H
特 A PC
4
B B 无
征A口出 PC
5
方式1 出效
位 方式1 出
允许A口中断 00001101=0DH (PC
6
置位)
允许B口中断 00000101=05H (PC
2
置位)
Summary
? Question and Problem ?