可编外围接口芯片 8255a 及其应用
DESCRIPTION
可编外围接口芯片 8255A 及其应用. 8255A 的工作原理. 可编程并行 I/O 应具有的功能:. 1 、具有缓冲、锁存功能的数据端口;. 2 、每个端口都具有与 CPU 交换必须的状态和控制信息,也具有与外设交换必须的状态和控制信息(的握手信号);. 3 、具有中断方式实现 I/O 的有关电路;. 4 、片选和连接控制电路;. 5 、可通过 CPU 对芯片的编程,选择数据端口、数据传送方向,选择查询或中断通信方式。. 与外设连接的数据端口. 与 CPU 连接的接口电路. PA7~PA0. A 口. A 组控制. DB. 总线 - PowerPoint PPT PresentationTRANSCRIPT
可编外围接口芯片 8255A 及其应用
8255A 的工作原理可编程并行 I/O 应具有的功能:1 、具有缓冲、锁存功能的数据端口;
2 、每个端口都具有与 CPU 交换必须的状态和控制信息,也具有与外设交换必须的状态和控制信息 ( 的握手信号 ) ; 3 、具有中断方式实现 I/O 的有关电路; 4 、片选和连接控制电路; 5 、可通过 CPU 对芯片的编程,选择数据端口、数据传送方向,选择查询或中断通信方式。
A 组控制
B 组控制
DB
RDWRA0A1
RESETCS
读 / 写控制逻辑
A 口
B 口
上 C口下 C口
PA7~PA0
PC7~PC4
PC3~PC0
PB7~PB0
内部总线
总线缓冲器
内部控制逻辑电路
与 CPU 连接的接口电
路
与外设连接的数据端口
一、结构和工作原理
1 、 数据端口
三个 8bit 的数据端口 PA 、 PB 、PC
PA :可用于输入、输出或双向
PB :可用于输入、输出,
但不能用于双向
PC :可用于输入、输出。
可分为二个 4bit 端口作为 PA 、PB 口状态、控制信号的通路
B 口
PA7~PA0
PC7~PC4
PC3~PC0
PB7~PB0
内部总线
上 C 口
下 C 口
A 口
2 、 控制逻辑
控制寄存器:存放来自CPU 对 8255 的控制命令字。以决定PA 、 PB 、 PC 端口的工作方式。 A 组控制电路的控制对象:
PA 口、 PC 口上半部(PC7~PC4)
B 组控制电路的控制对象:
PB 口、 PC 口下半部(PC3~PC0)
A 组控制
B 组控制
内部总线
A 口
上 C 口
下 C 口
B 口
3 、数据总线缓冲器
8bit 三态数据缓冲器:
连通 CPU 的 DB 与 8255 的内部总线是 CPU 执行IN 、 OUT 指令的数据通道。 RESET
读写控制逻辑
DB
RDWRA0A1
CS
内部总线
至数据端口
至控制寄存器
数据总线
缓冲器
4 、 读 / 写控制逻辑 与 CPU 的 AB 、 CB 连接,实现 CPU 对 8255 的控制。
A15 ~ A2 A1 A0 端口 0 0 PA
0 1 PB 1 0 PC 1 1 控制口
系统接口地址译码确定 CS
RD CPU 从 8255 读入数据或状态
WR CPU 向 8255 写出数据或命令
RESET 总清,使PA 、 PB 、 PC 初始化为输入状态 CS 、 A1 、 A0 选择8255 内部的 4 个寄存器
RESET
读写控制逻辑
DB
RDWRA0A1
CS
内部总线
至数据端口
至控制寄存器
数据总线
缓冲器
4 、 8255 与 CPU 的连接
8255(1)
A0A1CS
D7~D0
RDWRRESET
PA
PB
PC
8255(2)
A0A1CS
D7~D0
RDWRRESET
PA
PB
PC
A0A1
译码
200H
208H
D7 ~ D0
RDWR
RESET
8088
CPU
208H ~ 20BH
200H ~ 203H
A15~A2
M/IO
二、 8255A 的控制字1 、工作方式控制字
2 、位控 ( 置位 / 复位 ) 方式的数据输出
端口 C 有一种特殊的控制方式,可以将端口 C 的某一位置 1或清 0 ,而不影响端口 C 其他位的状态
三、 8255A 的工作方式
1 、方式 0 基本输入输出方式适用于不需要握手信号的简单 I/O 场合。
2 、方式 1 -选通输入输出方式
指定端口有 PA 、 PB 、 PC
输入或输出都通过选通握手信号实现。
指定端口有 PA 、 PB ;握手信号专用通道是 PC ,不再作为数据端口。
在满足握手条件时, 8255 向 CPU 申请中断,在中断服务程序中执行 IN 或 OUT 指令对指定端口读入或写出。
选通输入方式
CPU 8255 外设PA 数据线
INTRA PC3
PC4 STBA
PC5 IBFA
PB 数据线 INTRB PC0
PC1 IBFB
PC2 STBB
选通输出方式
CPU 8255 外设PA 数据线
INTRA PC3
PC6 ACKA
PC7 OBFA
PB 数据线
INTRB PC0
PC1 OBFB
PC2 ACKB
方式 1 选通输入输出方式
选通输入信号说明
IBF -输入缓冲器满信号,高电平有效。由 8255A 输出的状态信号,表示输入锁存器已满,向外设指明不能再送入数据。
INTE -中断允许信号。是控制8255A 能否向 CPU 发中断请求信号,它没有外部引脚,INTEA 、 INTEB 是由用户对 PC4 、 PC2 按位置位实现的。INTR -中断请求信号,高电平
有效。是 8255A 向 CPU 发出的请求中断信号,要求CPU 服务。当 IBF =1 、 STB =1 且 INTE =1时, INTR =1 。
STB -选通输入,低电平有效,外设数据输入送输入缓冲器;
STBA
IBFA
INTRA
I/O 线
PA7~PA0 8
PC3
PC6PC7
&
INTEA
RD
方式 1 输入 (A口 )
PC5
PC4
方式 1 输入时序图
选通输出信号说明
ACK -外设的回答信号,低电平有效,由外设送给 8255A 。表示 CPU 送到指定端口的数据已被外设接受。
OBF -输出缓冲器满信号,输出,低电平有效。表示 CPU已输出数据到指定端口。
INTR -中断请求信号,高电平有效。
INTE -中断允许信号。 INTEA 、 INTEB 是由用户对PC6 、 PC2 按位置位实现的
PA7~PA0 8
PC6 ACKA
PC7 OBFA
PC3 INTRA
PC4PC5
I/O 线
&
INTEA
WR
方式 1 输出 (A 口 )
方式 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
WR
RD
8255A 的应用举例例:检测开关状态 ( 断开 / 闭合 ) 并在 LED 显示 ( 亮 / 暗 )
…K7
K0
…LED7
LED0
PA7
PA0
PB0
PB7
D7~D0
RDWRRESET
G1G2AG2BCBA
Y4 CS
A1A0
D7~D0
RDWR
RESETM/IO
A4
A5
A6
A7
A3A0A2A1
8255A8086
74LS138
+5V
PA 口: 11110000 0FOH PB 口: 11110010 0F2H
PC 口: 11110100 0F4H 控制口: 11110110 0F6H
R
+5V
K 上拉电阻
K 状态 PA7
断开 1
闭合 0
开关状态的检测
PA7
8255
限流电阻
LED
PB7
8255
PB7 LED 状态1 亮0 暗
发光二极管的控制
下 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= 输出
D0D1D2D3D4D5D6D7
A 组 B 组
1
A 口:基本输入,方式 0
B 口:基本输出,方式 0
1 0 0 1 0 0 0 0
MOV DX , 0F6HMOV AL , 90HOUT DX , AL ;向控制口写方式控制字
TEST : MOV DX , 0F0HIN AL , DX ;从 PA 口读入 8 个开关状
态MOV DX , 0F2H
OUT DX , AL ;开关状态送 PB 口,由 LED 显示
JMP TEST ;不断循环CALL DELAY ;延时
二、键盘接口
矩阵键盘接口的特点:1 、键盘由触点按键 ( 开关 ) 组成的矩阵形式。在行与列的交叉点位置安装按键。当按键闭合,相应的行和列连接。
0 1 2 3
4 5 6 7
8 9 A B
C D E F
+ Vcc10K
10K
2 、按键具有弹性,在闭合和断开的过程中有抖动。需要采取消抖措施。
抖动
抖动断开 闭合闭合
1
采取延时 10ms ,再检测的消抖措施
例:用 8255A 芯片端口 A 做行线端口,端口 B 做列线端口,构成扫描键盘
两种键盘扫描方法正向扫描法: A 口输出 00H , B 口读入键盘列线值。如果无键按下,则 B 口读入低 4 位值为 0FH ,否则,就有键按下。如果有键按下, A 口输出 FEH ,如果 B 口读入有 0 ,则第一行有键按下;如果没有, A 口输出 FDH ,再查下去
反转扫描法: A 口输出, B 口输入。 A 口输出 00H , B 口读入键盘列线值。如果无键按下,则 B 口读入低 4 位值为0FH ,否则,就有键按下。如果有键按下,将 8255A 的 A 口设置为输入, B 口为输出。把 B 口读入的列值从 B 口输出,同时从 A 口读入行值。用读入的行、列值查表,可以确定是哪一个键被按下
KEYSCAN PROC NEAR
BEGIN: MOV DX , XXH ;置 8255A 控制口地址MOV AL , 82H ; A 方式 0 输出 ,B 方式
0 输入OUT DX , AL ;输出 8255A 方式控制
字LOOP1 : MOV DX , XXH ; A 口地址送 DX
MOV AL , 00H
OUT DX , AL ; A 口输出 00H 扫描键盘
MOV DX , XXH ; B 口地址送 DX 中IN AL , DX ;读入键盘列值AND AL , 0FH ;保留低 4 位CMP AL , 0FH
JE LOOP1 ;无键按下,重新扫描CALL DELAY ;有键按下,延时去抖动
反转扫描法程序
IN AL , DX ;再次读 B 口,检查有无键按下AND AL , 0FH ;保留低 4 位CMP AL , 0FH
JE LOOP1 ;无键按下,重新扫描MOV KEY , AL ;有键按下,列值保存在 KEY 单元MOV DX , XXH ;置 8255A 控制口地址MOV AL , 90H ; B 口方式 0 输出, A 口方式 0 输入OUT DX , AL ;输出 8255A 方式控制字MOV DX , XXH ; B 口地址送 DX 中MOV AL , KEY ;从 KEY 单元取出列值OUT DX , AL ;向 B 口输出列值,反向扫描MOV DX , 208H ; A 口地址送 DX
IN AL , DX ;从 A 口读入行值AND AL , 1FH ;保留低 5 位
CMP AL , 1FH
JE BEGIN ;无键按下,重新扫描CALL KEYVALUE ;查表获得按键编码MOV DX , XXH ; B 口地址送 DX 中MOV AL, 0
OUT DX , AL ;向 B 口输出列值,反向扫描MOV DX , XXH ; A 口地址送 DX
W2:IN AL , DX ;从 A 口读入行值AND AL , 1FH ;保留低 5 位CMP AL , 1FH
JNE W2 ;未释放,等待RET
KEYSCAN ENDP
三、七段 LED 显示器及接口电路
DP
a
d
b
c
f
e
gDP
g
fe
dcb
a
阴极
共阴极 LED
DP
g
fe
dcb
a
阳极
共阳极 LED
+VCC
反相驱动器
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
8255A
DB
7 ~DB0
共阴极 LED 显示器接口电路
DP
g
fe
dcb
a
阴极
共阴极 LED
a
d
b
c
f
e
g
DP
g f e d c b a
D6 D5 D4 D3 D2 D1 D0
0 1 0 0 0 0 0 0 40H
1 1 1 1 1 0 0 1 79H
2 0 1 0 0 1 0 0 24H
3 0 1 1 0 0 0 0 30H
4 0 0 1 1 0 0 1 19H
E 0 0 0 0 1 1 0 06H
F 0 0 0 1 1 1 0 0EH
… … … … … … … …
显 示 代 码
DB 40H,79H,24H,30H,19H,12H,02H,78HTABLE DB 40H,79H,24H,30H,19H,12H,02H,78H
DISPY: MOV BX , OFFSET TABLE MOV AL , COUNT
XLATMOV DX , POR OUT DX , AL
查表显示数字的程序
例: 8255A 作为开关 K0~K3 及七段 LED 显示器接口。要求开关设置的二进制信息,由 PC0~PC3 输入,经程序转换为对应的七段 LED 显示器的字形代码后,由 PA 口输出显示。
8255A
PA7
PA0
~ 驱动
+5V
+5V
K0
K1
K2
K3PC3
PC2
PC1
PC0
D7~D0
RD WR A0 A1 CS
D7~D0
RD WR A0 A1
A B C G2A G2B G1
Y0 Y1 Y2
O O O
&
A2 A3
A9M /IO
8088
LS138
CPU
8255A 各端口地址确定 :
由图可知: A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 0 0 0 1 0 各端口地址为: 388H~38BH
8255A 方式选择控制字 :按题意设置端口 A 方式 0 输出 , 下 C 口输入 .控制字为 :1000×0×1 = 81H ( 或 83H 等 )
LED 显示器的字形代码表存放在 TABLE 单元开始的内存中 .
TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H
DB 40H,79H,24H,30H,19H,12H,02H,78H
A B C G2A G2B G1
Y0 Y1 Y2 &
A2 A3
A9LS138
CS
M/IO
A4 A5~
MOV DX, 38BH ; 设置 8255A 工作方式 MOV AL, 81H
OUT DX, AL MOV DX, 38AH ; 指向端
口 C, 读开关状态 IN AL, DX AND AL, 0FH
LEA BX, TABLE ; 显示代码表首地址送 BX XLAT
; 查表 , 取出相应的字形码送AL MOV DX, 388H ; 指向端口 A
OUT DX, AL ; 输出字形码显示 HLT
第九章作业• 9 , 10