|
第二章 8255A可编程并行I/O扩展接口
一、8255A芯片介绍
8255A是Intel公司生产的可编程输入输出接口芯片,它具有3个8位的并行I/O口,具有三种工作方式,可通过程序改变其功能,因而使用灵活方便,通用性强,可作单片机与多种外围设备连接时的中间接口电路。8255A的引脚及内部结构如图4.27所示。
图4.27
引脚说明
8255共有40个引脚,采用双列直插式封装,各引脚功能如下:
D7~D0:三个态双向数据线,与单片机数据总线连接,用来传送数据信息。
CS:片选信号线,低电平有效,表示芯片被选中。
RD:读出信号线,低电科有效,控制数据的读出。
WR:写入信号线,低电平有效,控制数据的写入。
VCC:+5V电源。
PA7~PA0:A的输入/输出线。
PB7~PB0:B口输入/输出线。
PC7~PC0:C口输入/输出线。
RESET:复位信号线。
A1~A0:地址线,用来选择8255内部端口。
GND:地线。
内部结构
8255内部结构如图4.27所示,其中包括三个并行数据输入/输出端口,二个工作方式控制电路,一个读/写控制逻辑电路和8位总线缓冲器。各部分功能概括如下:
端口A、B、C
A口:是一个8位数据出锁器/缓冲器和一个8位数据输入锁存器。
B口:是一个8位数据输入/输出锁存器和一个8位数据输入结冲器。
C口:是一个8位数据输入/输出端口。C作为控制/状态住处缓冲器(输入不锁存)。
通常A口、B口作为数据输入/输出端口。C口作为控制/状态信息端口,它在“方式控制字”的控制下可分为二个4位端口。每个端口有一个4位锁存器,分别与A口和B口配合使用,作为控制信号输出或状态信息输入端口。
工作方式控制电路
工作方式控制电路有两个,一个是A组控制电路,另一个是B组控制电路。这两组控制电路具有一个控制命令寄存器,用来接收中央处理器发来的控制字,以决定两组端口的工作方式,也可根据控制字的要求对C口按位清“0”或者位置“1”。
A组控制电路用来控制A口和C口的上半部分(PC7~PC4)。B组控制电路用来控制B口和C口的下半部分(PC3~PC0)。
总线数据缓冲器
总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。
读/写控制逻辑电路
读/写控制逻辑电路接收CPU发来的控制信号WR、RD、RESET、地址信号A1~A0等,然后根据控制信号的要求,将端口数据读出,送往CPU,或者将CPU送来的数据写入端口。
各端口的工作状态如表4.7所求。
表4.7 8255接口工作状态表
A1 A2
RD WR CS 工作状态
0 0
0 1
1 0 0 1 0
0 1 0
0 1 0 A口数据 数据总线
B口数据 数据总线
C口数据 数据总线
0 0
0 1
1 0
1 1 1 0 0
1 0 0
1 0 0
1 0 0 总线数据 A口
总线数据 B口
总线数据 C口
总线数据 控制字寄存器
╳ ╳
1 1
╳ ╳ ╳ ╳ 1
0 1 0
1 1 0 数据总线 三态
非法状态
数据总线 三态
工作方式选择
8255有三种基本工作方式:
方式0:(MODE 0):基本输入输出
方式1(Mode 1):选通输入输出
方式2(Mode 2):双向传送
三种工作方式如图4.28所示,由工作方式控制字来决定。
图4.28
方式控制字的格式如图4.29所示,由CPU通过输入/输出指令来提供。三个端口中C口被分为两个部分,上半部分随A口称为A组,下半部分随B口称为B组。其中A口可工作于方式0、1和2,而B口只能工作在方式0和1.
图4.29
例如:输入工作方式控制字95H,可将8255编程为A口方式0输入,B口方式1输出,C口的上半部分(PC7~PC4)输出,C口的下半部分(PC3~PC0)输入。
另外,C口还具有位控制功能,它可通过工作方式控制字将其任意一位置“1”或者清“0”,其方式控制字如图4.30所示。这样,就可使8255方便地用于逻辑控制方面。
图4.30
下面对三种工作方式分别介绍:
二、工作方式0
工作方式0是一种基本的输入/输出的工作方式。在这种方式下,三个端口都可以由程序设置为输入或者输出,没有固定的用于应答的联络信号。其基本功能可概括如下:
可具有两个8位端口(A、B)和两个四位端口(C口的上半部分和下半部分)。
b.任何一个端口都可以设定为输入或者输出。各端口的输入、输出可构成16种组合。
C.数据输出时可以锁存,输入时不锁存。
按照方式0工作时,CPU可以通过简单的传送指令对任意一个端口进行读/写。这样各端口就可以作为查询式输入/输出接口。按照查询方式工作时,A口、B口可作为两个数据输入/输出端口,C口的某些位可作为这两个端口的控制/状态信号端。
三、工作方式1
工作方式1是一种选通式输入/输出工作方式。在这种工作方式下,选通信号与输入/输出数据一起传送,由选通信号对数据进行选通。基基本功能可概括如下:
三个端口分为两组,即A组和B组。
每一组包括一个8位数据端口和一个4位的控制/状态端口
每一个8位数据端口均可设置为输入或者输出,输入输出均可锁存。
4位端口作为8位数据端口的控制/状态信号端口。
方式1输入:
当任何一个端口按照工作方式1输入时,控制联络信号如图4.31所示.
图4.31
各控制信号的功能如下:
STB:选通输入,低电平有效,是由外设送来的输入信号,用来将输入数据送入输入锁存器。
IBF:输入缓冲器满信号,高电平有效,表示数据已送入输入锁存器,它由STB信号的下降沿置位,由RD信号的上升沿置复位。
INTR:中断请示信号,高电平有效,由8255输出,向CPU发中断请求。发中断请求的条件是STB、IBF和INTE(中断允许)为高电平。中断请求信号由RD的下降沿复位。
INTE A:A口中断允许信号,由PC4的置位/复位来控制。INTE B由PC2的置位/复位来控制。
方式1输出:
当任何一个端口按照工作方式1输出时,控制联络信号如图4.32所示各控制信号的功能如下:
图4.32
OBF:输出缓冲器满信号,低电平有效,是8255输出给外围设备的联络信号。表示CPU已把输出数据送到指定端口,外设可以将数据取走。它由WR信号的上升沿置“0”(有效),由ACK信号的下降沿置“1”(无效)。
ACK:外设响应信号,低电平有效。表示CPU输出给8255的数据已由外设取走。
INTR:中断请求信号,高电平有效。表示数据已被外设取走,请求CPU继续输出数据。中断请求的条件是ACK、OBF和INTE(中断允许)为高电平,中断请求信号由WR的下降沿复位。
INTE A:由PC6的置位/复位来控制。
INTE B:由PC2的置位/复位来控制。
四、工作方式2
A口除了工作方式0和工作方式1之外,还有工作方式2.按照方式2工作时,A口成为双向数据总线端口,既可以发送数据,又可以接收数据。其主要功能可概括如下:
有一个8位双向数据输入/输出端口(A)和一个5位控制信号端口(C)。
输入、输出均锁存。
5位控制信号端口(C)作为8位双向数据输入/输出端口A的控制/状态信号端口。
工作方式2只适合于A口。
按照工作方式2工作时,A口既可工作于查询方式,又可工作于中断方式。其控制联络信号如图4.33所示,各控制信号的功能如下:
图4.33
INTR:中断请求信号,高电平有效。在输入、输出方式时,可用于向CPU发中断请求。
ACK:外设响应信号,低电平有效。表示CPU输出给8255的数据已由外设取走。
INTR:中断请求信号,高电平有效。表示数据已被外设取走,请求CPU继续输出数据。中断请求的条件是ACK、OBF和INTE(中断允许)为高电平,中断请示信号由WR的下降沿复位。
INTE A:由PC6的置位/复位来控制。
INTE B;由PC2的置位/复位来控制。
工作方式2
A口除了工作方式0和工作方式1之外,还有工作方式2.按照方式2工作时,A口成为双向数据总线端口,既可以发送数据,又可以接收数据。其主要功能可概括如下:
有一个8位双向数据输入/输出端口(A)和一个5位控制信号端口(C)
输入、输出均锁存
5位控制信号端口(C)作为8位双向数据输入、输出端口A的控制/状态信号端口。
工作方式2只适合于A口。
按照工作方式2工作时,A口既可工作于查询方式,又可工作于中断方式。其控制联络信号如图2-29所示,各控制信号的功能如下:
INTR:中断请求信号,低电平有效。是8255输出给外设的联络信号,表示CPU已把数据输出到A口。
:外设响应信号,低电平有效,用来启动A口三态输出缓冲输出数据。
INTE1:是一个与输出缓冲器相关的中断允许触发器,由PC6的置位/复位来控制。
STB:选通输入,低电平有效。是由外设送来的输入信号,用来将数据送入输入锁存器。
IBF:输入缓冲器满信号,高电平有效,表示数据已送入输入锁存器。
INTE2:是一个与输入缓冲器相关的中断允许触发器,由PC4的置位/复位来控制。
当A口工作在方式2时,B口可工作于方式0或方式1,既可以作为输入端口,又可以作为输出端口。这时C口主要用于控制/状态信号的输入/输出。C口各位的功能如图4.34所示,其中5位用于A口,低3位用于B口。
图4.34
8031单片机和8255的接口
在8031单片机的I/O口上扩展8255芯片,其接口逻辑相当简单,如图4.35所示。
图4.35
图中,8255的片选信号CS及口地址选择线A0、A1分别由8031的P0.7和P0.0、P0.1经地址锁存后提供。故8255的A、B、C口及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。8255的复位与8031的得位端相连,都接到8031的复位电路上。
五、8255编程举例
在实际的应用系统中,必须根据外围设备的类型选择8255的操作方式,并在初始化程序中把相应控制字写入操作口。下面根据图4.35,举例说明8255的编程方法。
图4.35中,各端口地址如下:
A口地址:FF7CH
B口地址:FF7DH
C口地址:FF7EH
控制口地址:FF7FH
假设要求8255工作方式0,且A口作为输入,B口、C口作为输出,则工作程序如下:
MOV A,#99H ;方式0,A口输入,B口、C口输出
MOV DPTR,#0FF7FH ;控制寄存器地址 DPTR
MOVX @DPTR,A ;方式控制字 控制寄存器
MOV DPTR,#0FF7EH ;A口地址 DPTR
MOVX A,@DPTR ;从A口读数据
MOV DPTR,#0FF7DH ;B口地址 DPTR
MOV A,DATA1 ;要输出的数据DATA1 A
MOVX @DRTR,A ;将DATA1送B口输出
MOV DPTR,#0FF7EH ;C口地址 DPTR
MOV A,DATA2 ;DATA2 A
MOVX @DPTR,A ;将DATA2送C口输出
对端口C的置位/复位
8255的C口8位中的任一位,均可用指令来置位或复位。例如,如果想把C口的第6位PC5置1,相应的控制字为:00001011B=0BH(关于8255的C口置/复位的控制字说明参见图4.30),程序如下:
MOV DPTR,#0FF7FH;控制中地址 DPTR
MOV A,#0BH :控制字 A
MOVX @DPTR,A ;控制字 控制口
;PC5=1
如果想把C口的第6位PC5复位,相应的控制字为:00001010B=0AH。程序如下:
MOV DPTR,#0FF7FH ;控制口地址 DPTR
MOV A,#0AH ;控制字 A
MOVX @DPTR,A ;控制字送到控制口
;PC5=0
8255接口芯片在MCS-51单片机应用系统中广泛用于连接外部设备,如打印机、键盘、显示器以及作为控制信息的输入、输出口。 |
|