1
第 7章 并行接口芯片 8255A
第 10章 并行接口教学重点
8255A的内部结构、工作方式和编程
8255A的控制字、工作方式及应用
3
并行数据传输方式
以计算机的字长,通常是 8位,16位或 32
位为传输单位,一次传送一个字长的数据
适合于外部设备与微机之间进行近距离,
大量和快速的信息交换
例如:微机与并行接口打印机,磁盘驱动器
微机系统中最基本的信息交换方法
例如:系统板上各部件之间,接口电路板上各部件之间
4
9.1 8255A内部结构
具有多种功能的可编程并行接口电路芯片
最基本的接口电路:三态缓冲器和锁存器
与 CPU间,与外设间的接口电路:状态寄存器和控制寄存器
还有端口的译码和控制电路,中断控制电路
分 3个端口,共 24个外设引脚
共三种输入输出工作方式
5
9.1.1 8255A的内部结构和引脚数据总线缓冲器内部控制线内部数据线D
0~ D7
A组控制
A组端口 A
A组端口 C
上部
B组控制
B组端口 B
B组端口 C
下部读写控制逻辑 PC0~ PC3
PB0~ PB7
PC4~ PC7
PA0~ PA7
RD
WR
A0
A1
CS
RESET
6
1,外设数据端口
端口 A,PA0~ PA7
A组,支持工作方式 0,1,2
端口 B,PB0~ PB7
B组,支持工作方式 0,1
端口 C,PC0~ PC7
仅支持工作方式 0
A组控制高 4位 PC4~ PC7
B组控制低 4位 PC0~ PC3
端口 A,PA0~ PA7
常作数据端口,功能最强大
端口 B,PB0~ PB7
常作数据端口
端口 C,PC0~ PC7
可作数据,状态和控制端口
分两个 4位,每位可独立操作
控制最灵活,最难掌握
7
2,与处理器接口
CS* A1 A0 I/O地址 读操作 RD* 写操作 WR*
0 0 0
0 0 1
0 1 0
0 1 1
60H
61H
62H
63H
读端口 A
读端口 B
读端口 C
非法写端口 A
写端口 B
写端口 C
写控制字
8
9.1.2 8255A的工作方式
方式 0,基本输入输出方式
适用于无条件传送和查询方式的接口电路
方式 1,选通输入输出方式
适用于查询和中断方式的接口电路
方式 2,双向选通传送方式
适用于与双向传送数据的外设
适用于查询和中断方式的接口电路
9
方式 0输入时序
data
data输入端口
D0~ D7
RD
CS,A1,A0
请体会这里 8255A的数据缓冲作用
10
方式 0输出时序
WR
data
data输出端口
D0~ D7
CS,A1,A0
8255A对 CPU通过它输出给外设的数据迚行锁存
11
方式 1输入引脚,A端口数据选通信号表示外设已经准备好数据输入缓冲器满信号表示 A口已经接收数据中断请求信号请求 CPU接收数据
PC4
PC5
PC3
PA7~PA0
INTEA
IBFA
INTRA
STBA
中断允许触发器
12
方式 1输入引脚,B端口
PC2
PC1
PC0
PB7~PB0
INTEB
IBFB
INTRB
STBB
数据选通信号表示外设已经准备好数据输入缓冲器满信号表示 A口已经接收数据中断请求信号请求 CPU接收数据中断允许触发器方式 1需借用端口 C用做联络信号同时还具有中断请求和屏蔽功能
13
方式 1输入联络信号
STB*——选通信号,低电平有效
由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至 8255A的输入锁存器
IBF——输入缓冲器满信号,高电平有效
8255A输出的联络信号 。 当其有效时,表示数据已锁存在输入锁存器
INTR——中断请求信号,高电平有效
8255A输出的信号,可用于向 CPU提出中断请求,
要求 CPU读取外设数据
14
方式 1输入时序
data
INTR
IBF
data
输入端口
D0~ D7
STB
RD
STB*和 IBF是外设和 8255A间的一对应答联络信号,
为的是可靠地输入数据
15
方式 1中断控制
8255A的中断由中断允许触发器 INTE控制
置位允许中断,复位禁止中断
对 INTE的操作通过写入端口 C的对应位实现,INTE触发器对应端口 C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位 /复位就可以控制 INTE触发器
选通输入方式下
端口 A的 INTEA对应 PC4
端口 B的 INTEB对应 PC2
16
方式 1输出引脚,A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示 CPU已经输出了数据中断请求信号请求 CPU再次输出数据
PC6
PC7
PC3
PA7~PA0
INTEA
OBFA
INTRA
ACKA
中断允许触发器
17
方式 1输出引脚,B端口
PC2
PC1
PC0
PB7~PB0
INTEB
OBFB
INTRB
ACKB
外设响应信号表示外设已经接收到数据输出缓冲器满信号表示 CPU已经输出了数据中断请求信号请求 CPU再次输出数据中断允许触发器
18
方式 1输出联络信号
OBF*——输出缓冲器满信号,低有效
8255A输出给外设的一个控制信号,当其有效时,
表示 CPU已把数据输出给指定的端口,外设可以取走
ACK*——响应信号,低有效
外设的响应信号,指示 8255A的端口数据已由外设接受
INTR——中断请求信号,高有效
当输出设备已接受数据后,8255A输出此信号向
CPU提出中断请求,要求 CPU继续提供数据端口 A的 INTEA对应 PC4
端口 B的 INTEB对应 PC2
19
方式 1输出时序
INTR
data
data输出端口
D0~ D7
WR
OBF
ACK
OBF*和 ACK*是外设和 8255A间的一对应答联络信号,
为的是可靠地输出数据
20
方式 2双向方式
方式 2将方式 1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据
只有端口 A可以工作于方式 2,需要利用端口 C的
5个信号线,其作用与方式 1相同
方式 2的数据输入过程与方式 1的输入方式一样
方式 2的数据输出过程与方式 1的输出方式有一点不同:数据输出时 8255A不是在 OBF*有效时向外设输出数据,而是在外设提供响应信号
ACK*时才送出数据
21
方式 2双向引脚
PC6
PC7
PC3
PA7~PA0
INTE1
OBFA
INTRA
ACKA
PC4
PC5 IBFA
STBAINTE2
用 PC6设置 INTE1(输出)
用 PC4设置 INTE2(输入)
输入和输出中断通过或门输出 INTRA信号方式 2双向时序
data-out
INTR
data-out
data-in
data-inPA0~ PA7
D0~ D7
IBF
WR
OBF
ACK
STB
RD
23
9.1.3 8255A的编程
初始化编程:一个方式控制字
采用控制 I/O地址,A1A0= 11
工作过程中:通过数据端口对外设数据进行读写
数据读写利用端口 A,B和 C的 I/O地址,
A1A0依次等于 00,01,10
IBM PC/XT机上,端口 A,B,C和控制端口的 I/O地址为 60H,61H,62H和 63H
24
1,写入方式控制字:控制字格式
25
1,写入方式控制字:示例
要求:
A端口:方式 1输入
C端口上半部:输出,C口下半部:输入
B端口:方式 0输出
方式控制字,10110001B或 B1H
初始化的程序段:
mov dx,0fffeh ;假设控制端口为 FFFEH
mov al,0b1h ;方式控制字
out dx,al ;送到控制端口
26
2,读写数据端口
初始化编程后:
当数据端口作为输入接口时,执行输入 IN指令将从输入设备得到外设数据
当数据端口作为输出接口时,执行输出 OUT
指令将把 CPU的数据送给输出设备
8255A具有锁存输出数据的能力
对输出方式的端口同样可以输入
不是读取外设数据
读取的是上次 CPU给外设的数据
27
2,读写数据端口:示例
利用 8255A的输出锁存能力,可实现按位输出控制
对输出端口 B的 PB7位置位的程序段:
mov dx,0fffah ;B端口假设为 FFFAH
in al,dx ;读出 B端口原输出内容
or al,80h ;使 PB7= 1
out dx,al ;输出新的内容
28
3,读写端口 C:归纳 1
C端口被分成 两个
4位端口,两个端口只能以方式 0工作,可分别选择输入或输出
在控制上,C端口上半部和 A端口编为 A
组,C端口下半部和 B端口编为 B组
29
3,读写端口 C:归纳 2
当 A和 B端口工作在方式 1或方式 2时,
C端口的部分或全部引脚将 被征用
其余引脚仍可设定工作在方式 0
30
3,读写端口 C:归纳 3
对端口 C的数据输出有两种办法
通过端口 C的 I/O地址,向 C端口直接 写入字节数据 。 这一数据被写进 C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效
通过控制端口,向 C端口 写入位控字,使
C端口的某个引脚输出 1或 0,或置位复位内部的中断允许触发器
31
端口 C的位控制字
位控制字写入控制端口
特别便于置位复位内部中断允许触发器 INTE
32
3,读写端口 C:归纳 4
读取的 C端口数据有两种情况
未被 A和 B端口征用的引脚,将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息
被 A和 B端口征用作为联络线的引脚,将读到反映 8255A状态的 状态字
33
D7 D6 D5 D4 D3 D2 D1 D0
方式 1输入
I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB
方式 1输出
OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB
方式 2双向
OBFA INTE1 IBFA INTE2 INTRA × × ×
端口 C的状态字
A组 B组
34
9.2 8255A控制字、工作方式与应用作为通用的并行接口电路芯片,
825A具有广泛的应用
应用在 IBM PC/XT微机上
应用于打印机接口电路
连接简易键盘
驱动 LED数码管
……
35
8255A的应用
1.开关量的检测例 【 】 在工业控制过程中,经常需要检测某些开关的状态 。 例如,在某一系统中,有 8个开关
K7~ K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示 。 通过 8255A的端口 A
读入开关状态信息,使端口 B,端口 C连接的发光二极管的状态与端口 A开关状态相呼应,并重复执行 。 假设 8255A在系统中端口 A,B,C及控制口的地址分别为 100H,101H,102H,
103H,试设计出硬件电路图,并编写程序 。
36
解,(1) 硬件电路如图 8-11所示
37
MOV DX,103H ;控制寄存器的地址送给 DX
MOV AL,90H ;控制字
OUT DX,AL ;写入控制字
L1,MOV DX,100H ;端口 A 地址的送给 DX
IN AL,DX ;从端口 A读入开关状态
MOV DX,101H ;指向端口 B端口
OUT DX,AL ;从端口 B输出,控制 LED
XOR AL,0FFH ; AL← AL取反
MOV DX,102H ;端口 C 的地址送给 DX
OUT DX,AL ;从端口 C输出
JMP L1 ;循环
(2) 相应的 8255A初始化程序为:
38
9.4 LED数码管及其接口(补充)
发光二极管 LED是 最简单的显示设备
由 7段 LED就可以组成的 LED数码管
LED数码管广泛用于单板微型机,微型机控制系统及数字化仪器中
LED数码管可以显示内存地址和数据等
398255应用
40
1,LED数码管的工作原理
主要部分是 7段发光管
顺时针分别称为 a,b,c,d,e,f,g
有的产品还附带有一个小数点 h
通过 7个发光段的不同组合
主要显示 0~ 9
也可以显示 A~ F( 实现 16进制数的显示 )
还可以显示个别特殊字符,如-,P 等
41
LED数码管
h
gf
e
d
c
b
a
42
LED数码管的结构共阳极阳极
+5V
a
b
c
d
e
f
g
h
阴极
a
b
c
d
e
f
g
h
共阴极
43
2,单个 LED数码管的显示
8255A
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
驱动电路
a
b
c
d
e
f
g
h
44
实验四 七段数码管实验内容静态显示:按图 22连接好电路,将 8255
的 A口 PA0~ PA6分别与七段数码管的段码驱动输入端 a~g相连,位码驱动输入端 S1接
+5V(选中),S0,dp接地(关闭)。编程从键盘输入一位十进制数字( 0~ 9),在七段数码管上显示出来。
46
单个数码管的显示
LEDtb db 3fh,06h,5bh,…… ;显示代码表
……
mov al,1 ;AL← 要显示的数字
mov bx,offset LEDtb
xlat;换码,AL←DS,[BX+ AL]
mov dx,port
out dx,al ;输出显示软件译码
48
3,多个 LED数码管的显示
8个数码管:用 2个 8位输出端口控制
硬件上用公用的驱动电路来驱动各数码管
软件上用扫描方法实现数码显示
49
位控制端口电路
D7
D6
D5
D4
D3
D2
D1
D0
阳极位 0 位 1 位 2
D0~ D7
位控制反相寄存驱动
bitport,IOW
50
位控制端口作用
控制哪个 ( 位 ) 数码管显示
当位控制端口的控制码某位为低电平时,
经反相驱动,便在相应数码管的阳极加上了高电平,这个数码管就可以显示数据位控制,Di= 0,相应位发光
D7 D6 D5 D4 D3 D2 D1 D0
位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
51
段控制端口电路
D0
D1
D2
D3
D4
D5
D6
D7
阳极位 0
a b c d e f g h 位 1 位 2
… …
D0~ D7
段控制正相寄存驱动
segport,IOW
52
段控制端口作用
控制哪个 段 显示,决定具体显示什么数码
段控制端口送出显示代码到数码管相应段
此端口由 8个数码管共用段控制,Di= 0,相应段发光
D7 D6 D5 D4 D3 D2 D1 D0
h g f e d c b a
通过位、段控制端口的共同作用才能确定 哪个数码管 显示 什么数码数码缓冲区;数据段
LEDdt db 8 dup(0) ;显示数码缓冲区;主程序
mov si,offset LEDdt
call LEDdisp ;调用显示子程序获取显示代码
LEDdisp proc
push ax
push bx
push dx
mov bx,offset LEDtb; (led显示编码 )
mov ah,0feh ;指向最左边数码管
LED1,lodsb ;取出要显示的数字
xlat cs:LEDtb;得到显示代码,AL←CS,[BX+ AL]
数码显示
mov dx,segport ;segport为段控制端口
out dx,al ;送出段码
mov al,ah ;取出位显示代码
mov dx,bitport ;bitport为位控制端口
out dx,al ;送出位码
call delay ;实现数码管延时显示显示下位数码
rol ah,1 ;指向下一个数码管
cmp ah,0feh ;最右边的数码管?
jnz LED1 ;显示下一个数字
pop dx
pop bx
pop ax
ret ;8位数码管都显示
LEDtb db 0c0h,0f9h,……
LEDdisp endp
软件延时
timer = 10 ;延时常量
delay proc
push bx
push cx
mov bx,timer;外循环,timer确定的次数
delay1,xor cx,cx
delay2,loop delay2;内循环,216次循环软件延时
dec bx
jnz delay1
pop cx
pop bx
ret
delay endp
通过控制重复频率和延时时间就可以得到各种显示效果
59
作业,P346 –9.5(修改把 B端口转换成 C端口 )
在周三 ---做实验四 七段数码管选做:作业 9.5
第 9章 总 结
1,掌握 8255A的结构特点和引脚功能
2,掌握 8255A的各种工作方式,
编程及方式 0/1的应用
3,理解简易键盘的工作原理,抖动和重键问题及解决方法
4,掌握键盘扫描程序 ( 扫描法,
行反转法 ) 的编写