输出接口芯片8255A

Download Report

Transcript 输出接口芯片8255A

第十章 并行输入输出接口芯片8255A
一、8255A的引脚
(1) 有24可用于与外设相连接的I/O引脚,这24条引
脚分属于A,B,C三个端口
(2) 有三种主要工作方式:方式0,方式1,方式2
Intel系列的8位并行接口芯片
通用性强,使用灵活
可用程序设置和改变芯片的工作方式
是一种典型的可编程并行接口芯片
40个引脚,双列直插式
PA3
PA2
PA1
PA0
RD
CS
GND
A1
A0
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
PB0
PB1
PB2
8255A
PA4
PA5
PA6
PA7
WR
RESET
D0
D1
D2
D3
D4
D5
D6
D7
Vcc
PB7
PB6
PB5
PB4
PB3
二、8255A内部结构
A组控
制逻辑
D7-D0
RD
WR
A1
A0
RESET
CS
数据
总线
缓冲器
读/写
逻辑
控制
B组控
制逻辑
A组
端口A
PA7~PA0
A组
端口C
高四位
PC7~PC4
B组
端口C
低四位
B组
端口B
PC3~PC0
PB7~PB0
三、引脚基本操作
A1
A0
RD
WR
CS
0
0
1
0
1
0
0
0
0
1
1
1
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
0
0
X
1
X
X
1
X
X
0
1
X
1
1
X
0
0
操作
端口A
端口B
端口C
数据总线
数据总线
数据总线
数据总线
数据总线
数据总线
数据总线
端口A
端口B
端口C
控制字寄存器
数据总线三态
非法状态
数据总线三态
基本输入/输出方式(方式0)
选通工作方式(方式1)
双向传送方式(方式2)(仅A口)
某端口工作于哪一种方式,可通过软件编程来
指定。即向8255写入方式控制字来决定其工作方
式,
l  8255A有两种控制字,由写入内容
的D7位区分:
D7=1, 方式控制字
设定A口、B口、C口的工作状态和工作方式。
工作状态:
工作方式:
D7=0 , C口按位置位/复位控制字
使C口中的某一位为1(置位)或0(复位)。
方
式
控
制
字
各
位
含
义
D7
1
D6
D5
D4
D3
D2
D1
D0
0 输出
PC3~PC0 1 输入
B口 0 输出
1 输入
B口工作方式 0 方式0
1 方式1
PC7~PC4
A口
A口工作方式
0 输出
1 输入
00 方式0
01 方式1
1x 方式2
特征位,D7=1表示是方式控制字
0 输出
1 输入
C口按位置位/复位控制字各位含义:
D7
D6
D5
D4
D3
D2
D1
D0
0
无意义
特征位,D7=0
表示是C口按位
置位/复位控制字
选择设置位
D3 D2 D1
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
设置位
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
0 复位
设置内容 1 置位
• 假设端口地址为 F0H~F3H
通过控制口置 PC2 为 0,置 PC4 为 1
MOV
DX,0F3H
MOV
AL,0000 0100B
OUT
DX, AL
MOV
AL,0000 1001B
OUT
DX, AL
;置DX为控制口地址
;置PC2为0
;置PC4为1
方式选择
1、方式0 (基本输入输出 )
(1)输出有锁存而输入无锁存
(2)8255A具有两个8位端口(端口A和B)以
及两个4位的端口 ,均可作为输入输出
方式0时序:
(1)输入时序:
(2)输出时序:
2、方式1(选通的输入/输出方式 )
基本功能:
(1)拥有两个数据端口,每个端口都可以用
作输入或者输出
(2)每个端口包含8位的数据端口和三条控制
线
(3)若仅端口A工作于方式1,则余下的13位
可工作于方式0。若仅端口B工作于方式1,端
口A可工作于方式2或方式0
控制字与C口引脚(方式1 输入):
 对方式1输入的端口,C口提供与外部联络的信号
有:
• ① STB 选通信号(低电平有效)
由外设发出,送给8255A,
作用是将外设送来的数据锁存到8255A的输入端
PA7~PA0
口。
INTE
A
• ② IBF 输入缓冲器满信号(高电平有效)PC4
8255A 发出,
表示外设送来的数据已进入输入端口。
当外设送来的数据送入输入端口后,
8255A自动发出IBF。
与
门
PC4
PC5
STB
IBF
PC3
INTR
• ③ INTR 中断申请信号
•
(高电平或上升沿有效)
8255A 发出,用来向CPU发出中断申请。
STB、IBF、INTE均为1时,8255A自动发出INTR。
 对方式1输入的端口,8255A内部的控制信号有:
•
INTE 中断允许控制信号
•
作用是控制是否允许8255A的中断申请信号INTR发出。
•
•
此信号无引出,
通过控制口对C口相应位的置位/复位设置允许
或不允许。
PA7~PA0
•
A口,对PC4置位, 使INTEA=1, 允许中断
–
•
INTEA
PC4
对PC4复位, 使INTEA=0, 不允许中断
B口,对PC2置位, 使INTEB=1, 允许中断
–
对PC2复位, 使INTEB=0, 不允许中断
与门
PC4
PC5
STB
IBF
PC3
INTR
PA7~PA0
PB7~PB0 ①外设送来数
STB
据②
D7~D
0
PA7~PA0
INTE
A
STB
PC4
IBF
当INTE=1时
PC4
RD
PC5 IBF
INTR
与
INTR
③
RD
PC3
门
① 当外设数据准备好,将数据送至端口线PA7~PA0或PB7~PB0
② 外设发出选通信号STB:
(1) 将数据锁存在输入端口内。
(2) 使IBF变高,表示输入端口满,可用于阻止外设输入新数据
(3) 如果INTE=1, STB的上升沿使INTR变高,发出中断请求。
③ 中断处理程序中CPU 读取数据,发出RD信号:
(1) RD 的下降沿清除INTR
(2) RD 的上升沿清除IBF
(3) 端口内的数据进入CPU
控制字与C口引脚(方式1 输出):
对方式1输出的端口,C口提供与外部联络的
信号有:
① OBF 输出缓冲器满信号(低电平有效)
当数据送至8255A输出缓冲器后,8255A自动发
PA7~PA0
出。
INTE
表示CPU送来的数据已进入8255A输出端口,
可用来通知外设把数据取走。
② ACK 外设响应信号(低电平有效)
由外设发出,送给8255A。
作用是通知 8255A
输出端口的数据已被外设取走,
可以传送下一个数据。
A
PC6 PC6
PC7
与
门 PC3
③ INTR 中断申请信号(高电平或上升沿有效)
8255A 发出, 用来向CPU发出中断申请。
当OBF 、ACK、INTE均为1时,8255A自动发出
ACKA
OBFA
INTRA
对方式1输出的端口,8255A内部的控制信号有:
INTE 中断允许控制信号
作用是控制是否允许中断申请信号INTR发出。
•
•
•
•
此信号无引出,
通过控制口对C口相应位的置位/复位设置允许或不
允许。
PA7~PA0
A口,对PC6置位, 使INTEA=1, 允许中断
INTEA
–
对PC6复位, 使INTEA=0, 不允许中断 PC6
B口,对PC2置位, 使INTEB=1, 允许中断
–
对PC2复位, 使INTEB=0, 不允许中断 与门
PC6
PC7
ACKA
OBFA
PC3
INTRA
D7~D0
送往外设数据 数据写入端口
①
WR
②
PA7~PA0
INTEA
PC6
OBF
当INTE=1时
ACK
③
WR
与门
PC6
PC7
ACKA
OBFA
PC3
INTRA
① CPU输出数据
② CPU发出WR:
(1) 数据写到 8255A的端口
(2) 使OBF有效,表示输出端口满,
可作为外设的选通信号,通知外设取数据。
(3)清除中断请求信号INTR
③ 外设接受到数据后,发出ACK信号:
(1) ACK的下降沿使OBF变高,
(2) 当INTE=1, ACK的上升沿使INTR变高,
发出中断请求,请求CPU输出新的数据。
注意:
INTE的状态可利用C口的位控方式来设置:
 输入:
• A口的INTE:写入PC4
• B口的INTE:写入PC2
 输出:
• A口的INTE:写入PC6
• B口的INTE:写入PC2
例如:方式1输入允许A口中断,则应按如下方
法设置INTEA。
MOV DX,控制寄存器地址
MOV AL,0xxx1001B
;1=允许中断,0=禁止中断
OUT DX,AL
3、方式2(选通的双向I/O方式 )
基本功能:
(1)仅适用于端口A,作为双向的数据总线
(2)端口C有5条引脚用作为端口A的握手信号
线和中断请求线
(3)输入和输出是锁存的
控制字与C口引脚:
方式2的时序如图所示。
当CPU将数据写入端口A
时,尽管变为有效,但数
它可以认为是方式1输出
据并不出现在端口的数据
和输入的组合,但有以下
不同:
部设备发出信号时,数据
线PA7~PA0上。只有外
才进入PA7~PA0。
输入和输出引起的中断请
求信号都通过同一条引脚
输出,CPU必须通过查询
信号和信号不能同时有
OBFA和IBFA状态才能确
效,否则将出现数据传送
“冲突”。
定是输入过程引起的中断
请求还是输出过程引起的
中断请求。
以8255A作为终端机的接口
由PA口输出字符到终端机的显示缓冲器,PB口用
于键盘输入字符
当PC2=1时,表示键盘输入字符就绪,当PC1=0
时,表示显示缓冲器已空
要求用软件查询方法把从键盘输入的每个字符都
送到终端机的显示缓冲器上,同时送到内存
BUFFER开始的单元中,当输入的是回车键,操
作结束,
端口地址44H~47H
初始化8255
N
PC2=1
?
Y
是否回车
N
Y
存储
N
PC1=0
?
输出至显示缓冲器
N
CX=1?
Y
结束
控制字:10000010B
DATA SEGMENT
BUFFER DB 100 DUP(?)
COUNT EQU $-BUFFER
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
DB 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AL,10000010B
OUT 47H,AL
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,COUNT
LEA DI,BUFFER
CLD
CHECK1:IN AL,46H
TEST AL,00000100B
JZ CHECK1
IN AL,45H
CMP AL,0DH
JZ DONE
STOSB
MOV BL,AL
CHECK2:IN AL,46H
TEST AL,00000010B
JNZ CHECK2
MOV AL,BL
OUT 44H,AL
DEC CX
JNZ CHECK1
DONE:MOV AH,4CH
INT 21H
CODE ENDS
END START