一、 8255 a 的结构和功能
DESCRIPTION
第九章 可编程并行接口芯片 8255A 及其应用. 一、 8255 A 的结构和功能. 二、 8255A 的控制字. 三、 8255A 的工作方式. 四、 8255A 的应用举例. 习题: 9-6 , 9-7 , 9-10. 并行接口芯片应具有的功能:. ( 1 ) 具有两个以上的输入 / 输出数据端口(锁存 / 缓冲); ( 2 ) 每个数据端口有与 CPU 用应答方式交换信息所必须的控制和状态信号;也有与外设交换信息所必须的控制和状态信号; ( 3 ) 通常每个数据端口还具有能用中断方式与 CPU 交换信息所必须的电路; - PowerPoint PPT PresentationTRANSCRIPT
一、 8255A 的结构和功能
二、 8255A 的控制字
三、 8255A 的工作方式
四、 8255A 的应用举例
第九章 可编程并行接口芯片 8255A 及其应用
习题: 9-6 , 9-7 , 9-10
并行接口芯片应具有的功能:
( 1 ) 具有两个以上的输入 / 输出数据端口(锁存 /缓冲);( 2 ) 每个数据端口有与 CPU 用应答方式交换信息所必须的控制和状态信号;也有与外设交换信息所必须的控制和状态信号;( 3 ) 通常每个数据端口还具有能用中断方式与 CPU交换信息所必须的电路;( 4 ) 具有进行片选和读写控制的电路;( 5 ) 可编程(由程序来选择数据端口,数据传送方向,交换信息的方式等)。
A 组控制
B 组控制
缓冲器
数据总线
DB
oo
o
RDWRA0A1
RESETCS
读 / 写控制逻辑
A 口
上 C口下 C口
B 口
PA7~PA0
PC7~PC4
PC3~PC0
PB7~PB0
内部总线
外设接口CPU 接口 内部逻辑
第一节 8255A 的工作原理
一、 8255A 的结构和功能
端口 A 和端口 B 可用作 8 位 数据 I/O 口,端口 C 既可作为 8 位I/O 口,又可作为两个 4 位 I/O 口,还常用来配合 A 口和 B 口工作,作为控制信号输出、或作为状态信号输入。
( 一 ) 数据端口
8255A 内部包含 3 个 8 位 I/O 端口 A 口、 B 口和 C 口,通过外部 24 根 I/O 线与外设交换数据或进行通信联络。其中 C 口可分为两个 4 位口使用。
A 口
上 C口下 C口
B 口
PA7~PA0
PC7~PC4
PC3~PC0
PB7~PB0
内部总线
( 二 ) 控制逻辑
这是两组根据 CPU 的编程命令控制 8255A 工作的电路,它们内部有控制寄存器,用来接收 CPU 送来的命令字,以决定 A 组、 B 组的工作方式,或对 C 口的每一个位执行置位 / 复位操作。
A 组控制
B 组控制
内部总线
端口 A 和端口 C 的上半部分( PC7~PC4 )由 A 组控制逻辑管理,端口 B 和端口 C 的下半部分( PC3~PC0 )由 B 组控制逻辑管理。
( 三 ) 数据总线缓冲器
是双向三态的 8 位缓冲器 , 用作 8255A 和系统数据总线的接口。
1) 接收 CPU 送来的数据或控制字;
2) 外设传送给 CPU 的数据或状态信息
缓冲器
数据总线
DB
oo
o
RDWRA0A1
RESETCS
读 / 写控制逻辑
内部总线
至数据端口
至控制寄存器
( 四 ) 读 / 写控制逻辑
控制总线的开放与关闭;控制信息传送的路径和方向。
A1 A0=00 ,选中端口 A
A1 A0=01 ,选中端口 B
A1 A0=10 ,选中端口 C
A1 A0=11 ,选中控制字寄存器端口
( 五 ) 端口寻址
A1 A0 RD WR CS 功能
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 数据总线 控制字寄存器
8255A 端口选择表
端口选择信号:
当 8255A 用在 8 位数据总线的微处理器( 8088 )系统中时,端口选择信号输入端 A1 A0 与地址总线的 A1 A0 相连即可,例如端口地址为 60H , 61H , 62H 和 63H 。
在 16 位数据总线的微处理器系统( 8086 )中,通常将端口选择信号输入端 A1 A0 与地址总线的 A2 A1 相连。 8255A 芯片的数据线 D0~D7 既可以接到系统数据总线的低 8 位,也可以接到系统数据总线的高 8 位。为了方便,通常接到系统数据总线的低 8 位,这样 CPU 要求芯片内部的各个端口都使用偶地址。例如端口地址为 F0H , F2H , F4H 和 F6H 。
( 六 ) 方式选择
8255
AB
CB
DB
RD WR D7~D0 A0 A1 CS
PB PAPC
8 8I/O I/O4 4
PB7 ~PB0 PA7 ~PA0PC3 ~PC0 PC7 ~PC4
I/O I/O
8 8 I/OI/O
PB7 ~PB0 PA7 ~PA0
PB PAPC
控制或I/O
控制或I/O
8 8 I/OI/O
PB7 ~PB0 PA7 ~PA0
PB PAPC
I/O控制
方式 0 :基本输入输出
方式 1 :选通输入输出
方式 2 :双向总线
二、 8255A 的控制字1 、方式选择控制字8255A 有 3 种基本的工作方式,在对 8255A 进行初始化编程时,
应向控制寄存器写入方式选择控制字,以规定各端口的工作方式。方式选择控制字格式D7 D6 D5 D4 D3 D2 D1 D0
下 C 口 I/O
1= 输入0= 输出
B 口 I/O 1= 输入0= 输出
B 口方式
0= 方式0 1= 方式 1
上 C 口 I/O
1= 输入0= 输出
特征位 D7=1 A 口方式 :
00= 方式 0 01=方式 1 1x= 方式 2
A 口 I/O
1= 输入0= 输出
例:在一个 8086/8088 系统中,有一片 8255A 芯片,其各个端口的地址分别为 0F8H~0FBH ,现要求各个端口的工作方式为:端口 A 方式 0 输入端口 B 方式 1 输出端口 C (上半部) PC7 ~PC4 输出端口 C (下半部) PC3 输入要求:进行初始化编程
1 0 0 1 10 0 1
分析:根据 8255A 工作模式可确定方式控制字
95H
初始化编程:
MOV AL , 95H
OUT 0FBH , AL
2 、置位 / 复位控制字端口 C 常用作控制或应答信号,通过对 8255A 的控制口写入
置位 / 复位控制字,可使 C 口的任一个引脚的输出单独置 1 或置 0 。
置位 / 复位控制字格式D7 D6 D5 D4 D3 D2 D1 D0
1 置位 0 复位无关位
特征位 D7 = 0
000 选中 PC0 001 选中PC1
111 选中 PC7
位选
择
例:要使端口 C 的 bit3 置位的控制字为: 00000111B ; MOV AL , 00000111B OUT 0FBH , AL 而使端口 C 的 bit3 复位的控制字为: 00000110B ; MOV AL , 00000110B OUT 0FBH , AL
三、 8255A 的工作方式
1 、方式 0 -基本输入输出方式
适用于不需要应答信号的简单 I/O 场合。A 口和 B 口可作为 8 位端口, C 口的高 4 位和低 4 位可作为两
个 4 位的端口,且每个端口均可作为输入口或输出口用。数据输出有锁存,输入不能锁存。
例如,要求 8255A 的 A 口和 B 口均工作于方式 0, A 口和下 C口作输入口 , B 口和上 C 口作输出口 , 设 8255A 各端口地址为 60H~63H, 可用下列指令来设置这种工作方式:
MOV AL , 91H ;方式控制字 10010001B AL OUT 63H , AL ;方式控制字送控制寄存器
2 、方式 1 -选通输入 / 输出方式端口 A 或 B 用作数据口,均可以工作于输入或输出方式。这两
个 8 位数据口的输入、输出数据都能锁存,但必须在联络信号的控制下完成 I/O 操作,端口 C 的部分引脚用来产生或接收这些联络信号。1) 选通输入方式
此时 PC3~5 和 PC0~2 分别用作 A 口和 B 口的状态和控制线 , PC6 和 PC7 用作 I/O 线
PA7~PA0 8
PC4 STBA
PC5 IBFA
PC3 INTRA
PC6PC7
I/O 线
&
INTEA
oRD
方式 1
(A 口 )PB7~PB0 8
PC2 STBB
PC1 IBFB
PC0 INTRB
&
INTEB
oRD
方式1
(B口 )
IBF -输入缓冲器满信号,高电平有效,由 8255A 输出的状态信号,表示输入缓冲器已满,向外设指明不能再送入数据。
INTE -中断允许信号。是控制 8255A 能否向 CPU 发中断请求信号,它没有外部引脚,INTEA 、 INTEB 是由用户对PC4 、 PC2 按位置位实现的。
PA7~PA0 8
PC4 STBA
PC5 IBFA
PC3 INTRA
PC6PC7
I/O 线
&
INTEA
oRD
方式 1 (A口 )
各控制联络信号的意义 STB -数据选通输入信号,低电平有效,由外设输入;
INTR -中断请求信号,高电平有效。是 8255A 向 CPU 发出的请求中断信号,要求 CPU 服务。当 IBF =1 、 STB =1 且 INTE =1 时, INTR =1 。
2) 选通输出方式
这时 PC3 、 PC6 和 PC7 作 A 口的应答信号, PC0 、 PC1 和 PC2 作 B 口的应答信号。余下的 PC4 和 PC5 可作输入或输出线。
PA7~PA0 8
PC6 ACKA
PC7 OBFA
PC3 INTRA
PC4PC5
I/O 线
&
INTEA
oWR
方式 1 输出 (A口 )
PB7~PB0 8
PC2 ACKB
PC1 OBFB
PC0 INTRB
&
INTEB
oWR
方式 1 输出 (B口 )
ACK -外设的回答信号,低电平有效,由外设送给 8255A 。表示 CPU 送到指定端口的数据已被外设接受。
各应答信号的意义:OBF -输出缓冲器满信号,输出,低电平有效。表示 CPU 已输出
数据到指定端口。
INTE -中断允许信号。 INTE
A 、 INTEB 是由用户对 PC6 、PC2 按位置位实现的。
PA7~PA0 8
PC6 ACKA
PC7 OBFA
PC3 INTRA
PC4PC5
I/O 线
&
INTEA
oWR
方式 1 输出 (A口 )
INTR -中断请求信号,高电平有效。当 ACK =1 、OBF =1 且 INTE =1 时,INTR =1 。
3 、方式 2 -双向总线方式 (仅适用于 A口)这时 PA7~PA0 作为双向数据总线, PC3 ~PC7 用作 A 口的联络
控制信号。 PC2~PC0 可用作 B 口的应答信号线 , 或作 I/O 线。
PC3INTRA
PA78
PC7
PC6
OBFA
ACKA
PC4
PC5
PC2~PC03
STBA
IBFA
INTE2
&
~
PA0&
INTE1
1
O
OWR
RD
各信号意义 :INTRA -中断请求信号 ,‘ 1’ 有效 .
OBFA -输出缓冲器满 ,‘ 0’ 有效 . ACKA -外设响应信号 ,‘ 0’ 有效 .
IBFA -输入缓冲器满信号 ,‘ 1’ 有效 .STBA -选通输入信号 ,‘ 0’ 有效 .
4 、 C 口状态字
8255A 工作在方式 0 时, C 口各位作输入输出用。当工作在方式 1 和方式 2 时, C 口产生与外设的联络信号。此时。读取 C 口的内容可检查或测试外设的状态。 C 口的状态字如下:( 1 )方式 1
I/O I/O IBFA输入 INTEA INTRA INTEB IBFB INTRB
D7 D6 D5 D4 D3 D2 D1 D0
I/O I/O输出 INTEA INTRA INTEB OBFB INTRB
D7 D6 D5 D4 D3 D2 D1 D0
OBFA
( 2 )方式 2
*INTE1 INTRAINTE2IBFA
D7 D6 D5 D4 D3 D2 D1 D0
OBFA * *
第二节 8255A 的应用举例
8255A 作为开关 K0~K3 及七段 LED 显示器接口。要求开关设置的二进制信息,由 PC0~PC3 输入,经程序转换为对应的七段 LED 显示器的字形代码后,由 A 口输出显示。
8255A
PA7
PA0
~
驱动器
+5V
+5V
K0
K1
K2
K3PC3
PC2
PC1
PC0
D7~D0
RD WR A1 A2
A B C G2A G2B
G1
Y0 Y1 Y2
O O O
D7~D0
RD WR A0 A1 CSA0
A3A4
A7
8086
系统总线
LS138
接口电路
M/IO&A5
A6
一、基本输入输出应用
各端口地址为: E8H~EEH
8255A 各端口地址确定 :由图可知:
A7 A6 A5 A4 A3 A2 A1 A01 1 1 0 1 0
8255A 方式选择控制字 :
LED 显示器的字形代码表存放在 TABLE 单元开始的内存中 .TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H
DB 80H, 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH
CS
A B C G2A G2B
G1
Y0 Y1 Y2
A0 A3A4
A7LS138
M/IO&A5
A6
按题意设置端口 A 方式 0 输出 , 下 C 口输入 .
1 0 0 0 0× × 1 81H
实现操作的具体程序如下 :
MOV DX, 0E8H ;指向端口 A OUT DX, AL ;输出字形码显示 HLT
MOV DX , 0EEH ;设置 8255A 工作方式 MOV AL , 81H
OUT DX , ALMOV DX , 0ECH ;指向端口 C ,读开关状态 IN AL , DX AND AL , 0FH
LEA BX , TABLE ;显示代码表首地址送 BX
XLAT ;查表,取出相应的字形码送 AL
LED 显示器的结构
a
b
d
ce
f g
dp
LED 显示器的外形
a
b
c
d
e
f
g
dp
共阳极 LED 显示器的结构
a
b
c
d
e
f
g
dp
共阴极 LED 显示器的结构
LED 显示器的工作原理 软件译码法
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
8
2
5
5DB7--DB0
a
b
c
d
e
f
g
dp
方案 1 共阳极 LED 显示器与同相驱动器接口
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a
0(C0H) 1 1 0 0 0 0 0 0
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
9(90H) 1 0 0 1 0 0 0 0
1(F9H) 1 1 1 1 1 0 0 1
2(A4H) 1 0 1 0 0 1 0 03(B0H) 1 0 1 1 0 0 0 0
4(99H) 1 0 0 1 1 0 0 1
5(92H) 1 0 0 1 0 0 1 0
6(82H) 1 0 0 0 0 0 1 0
7(F8H) 1 1 1 1 1 0 0 0
8(80H) 1 0 0 0 0 0 0 0
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a
0(3FH) 0 0 1 1 1 1 1 1
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
a
b
d
ce
f g
dp
9(6FH) 0 1 1 0 1 1 1 1
1(05H) 0 0 0 0 0 1 1 0
2(5BH) 0 1 0 1 1 0 1 13(4FH) 0 1 0 0 1 1 1 1
4(66H) 0 1 1 0 0 1 1 0
5(6DH) 0 1 1 0 1 1 0 1
6(7DH) 0 1 1 1 1 1 0 1
7(07H) 0 0 0 0 0 1 1 1
8(7FH) 0 1 1 1 1 1 1 1
二、七段 LED 显示器接口电路
利用专用接口芯片 7447 驱动 LED 显示器7447 为 BCD— 七段译码器
与单个 LED 的连接
7447
a b c d e f g
13 12 11 10 9 15 14
Vcc
GND
RBI
RBO
LTA B C D
3
4
5
+5V
7 1 2 6
+5V16
8
5V
R= ( 5–1.5 – 0.2 ) V/ 20mA=168
取 R=150
5V
1. 5V
0. 2V
I=20mAR
PA0PA1PA2PA3 PA4 PA5PA6 PA7
7447a b c d e f g
A B C D7447
a b c d e f g
A B C D7447
a b c d e f g
A B C D7447
a b c d e f g
A B C D
PB0PB1PB2PB3 PB4 PB5PB6 PB7
DB0——DB7 DB0——DB7
7447BCD— 七段译码器与多个 LED 的连接
5V
静态显示器的设计
• • •• • • • • •• • •• • • • • •• • •
7447
abcdefg
•••
A
B
C
D
PB0
PB1
PB2
PB3
PA0PA1PA2PA3PA4PA5PA6
8255
动态显示器的设计
PNP
显示控制程序
LEA SI , BUFFMOV CX , FEHMOV DL , 01H
初始化
结束
取显示数据
送段通道口
延时
位码送位通道口
是否最后一位
修改指针,位码
N
Y
MOV AL , [SI]
OUT POTB , ALMOV AL , DLOUT POTA , AL
INC SIROL DL
• • •• • • • • •• • •• • • • • •• • •
PB0
PA0PA1PA2PA3PA4PA5PA6
8255
•••
a
g
•••
•••
PB7
•••
74LS07
NPN