8255A可编程序并行输入/输出接口芯片,它是Intel公司MCS-80/85微处理器扩展系统所用的标准外围接口电路,它采用单一+5V电源供电,具有40条引脚,采用双列直插式封装。它有A、B、C 3个端口,24条I/O线。它可以通过编程的方法来设定端口具有3种不同的I/O功能。
7.3.3.1 8255A可编程并行I/O接口内部结构及引脚功能
图7-34所示为8255A的内部结构和引脚图。
1.8255A芯片的引脚
8255A是一种有40个引脚的双列直插式标准芯片,其引脚排列如图7-34所示。除电源(Vcc)和地(GND)以外,其他信号可以分为两组。
(1)与外设相连接的有以下3个:
PA7~PA0:A端口数据线。
PB7~PB0:B端口数据线。
PC7~PC0:C端口数据线。
(2)与系统总线连接的有:
D7~D0:8255A的数据线和系统数据总线相连。
RESET:复位信号,高电平有效。当RESET有效时,所有内部寄存器都被清零。
:片选信号,低电平有效。只有当有效时,芯片才被选中。
:读信号,低电平有效。当有效时,CPU可以从8255A中读取输入数据。
:写信号,低电平有效。当有效时,CPU可以往8255A中写入控制字或数据。
图7-34 8255A的引脚和内部结构
2.内部寄存器及其操作
A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,由A1、A0编程选择。A1、A0和组合所实现的各种功能见表7-4。
表7-4 8255A端口及工作状态选择表
3.8255A的内部结构
8255A的内部结构由以下几部分组成:
(1)A组、B组控制电路。这是两组根据CPU的命令字控制8255A工作方式的电路。A组控制PA、PC端口的高4位,B组控制PB、PC端口的低4位。8255A有3个8位数据端口,即端口PA、PB和PC,编程人员可以通过软件将它们分别作为输入或输出端口,3个端口在不同的工作方式下有不同的功能及特点,见表7-4。
(2)数据缓冲器。这是一个双向三态8位的驱动端口,用于和单片机的数据总线相连,传送数据或控制信息。
(3)读/写控制逻辑。这部分电路接收MCS-51送来的读,写命令和选口地址,用于控制对8255A的读/写。
7.3.3.2 8255A的控制字
8255A的3个端口具体的工作方式,是通过CPU对控制端口的写入控制宇来决定的。8255A有两个控制字:方式选择控制字和PC端口置/复位控制字。用户通过编程把这两个控制字送到8255A的控制寄存器,这两个控制字以D7来作为标志。
1.方式选择控制字
方式选择控制字的格式和定义如图7-35(a)所示。D7位为特征位。D7=1表示为工作方式控制字。D6、D5用于设定A组的工作方式。D4、D3用于设定PA端口和PC端口的高4位是输入还是输出。D2用于设定B组的工作方式。D1、D0用于设定PB端口和PC端口的低4位是输入还是输出。
图7-35 8255A控制字的格式和定义
2.PC端口置/复位控制字
PC端口置/复位控制字的格式和定义如图7-35(b)所示。D7位为特征位,D7=0表示为C端口按位置位/复位控制字。PC端口具有位操作功能,把一个置/复位控制字送入8255A的控制寄存器,就能将PC端口的某一位置1或清0而不影响其他位的状态。
7.3.3.3 8255A的工作方式
8255A有3种工作方式:方式0、方式1和方式2。方式的选择是通过写8255的控制字的方法来完成的。
1.方式0(基本输入/输出方式)
PA、PB和PC端口高4位、低4位都可以设置为方式0的输入或输出,不需要选通信号。单片机可以对8255A进行I/O数据的无条件传送,外设的I/O数据在8255A的各端口能得到锁存和缓冲。
(1)A口、C口的高4位、B口以及C口的低4位可以分别定义为输入或输出,各端口互相独立,故共有16种不同的组合。
(2)在方式0下,C口有按位进行置位和复位的能力。
方式0最适合用于无条件传送方式,由于传送数据的双方互相了解对方,所以既不需要发控制信号给对方,也不需要查询对方状态,故CPU只需直接执行输入/输出指令便可将数据读入或写出。
方式0也能用于查询工作方式,由于没有规定的应答信号,这时常将C口的高4位或低4位定义为输入口,用来接收外设的状态信号。而将C口的另外4位定义为输出口,输出控制信息。此时的A、B口可用来传送数据。
2.方式1(选通输入/输出方式)
PA和PB端口都可以独立设置为方式1,在这种方式下,8255A的PA和PB端口通常用于传送和它们相连外设的I/O数据,PC端口作为PA和PB端口的辅助握手联络线,以实现中断方式传送I/O数据。PC端口作为联络线的各位分配是在设计8255A时规定的,分配表见表7-5。
表7-5 8255端口及工作状态选择表
无论是PA端口还是PB端口输入,都用PC端口的3位作应答信号,1位作中断允许控制位。各应答信号含义如下:
:外设送给8255A的“输入选通”信号,低电平有效。(www.xing528.com)
IBF:8255A送给外设的“输入缓冲器满”信号,高电平有效。
INTR:8255A送给CPU的“中断请求”信号,高电平有效。
INTE:8255A内部为控制中断而设置的“中断允许”信号。INTE由软件通过对PC4(PA端口)和PC2(PB端口)的置位/复位来允许或禁止。
:8255A送给外设的“输出缓冲器满”信号,低电平有效。
:外设送给8255A的“应答”信号,低电平有效。
就8255A方式1的输入或输出工作方式的具体分析如下:
(1)方式1输入。当任一端口工作于方式1输入时,如图7-36所示,其中各个控制信号的意义介绍如下:
图7-36 方式1下A、B口均为输入时的信号定义及其状态字
1)——选通信号,低电平有效,这是由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255的输入锁存器。
2)IBF——输入缓冲器满信号,高电平有效,这是8255输出的一个联络信号。当其有效时,表示数据已输入至输入锁存器。它由信号置位(高电平),而信号的上升沿使其复位。
3)INTR——中断请求信号,高电平有效,这是8255的一个输出信号,可用于向CPU提出中断请求,要求CPU读取外设数据。它在当为高电平,IBF为高电平和INTE(中断允许)为高电平时被置为高,而由信号的下降沿清除。
4)INTEA——中断允许信号,高电平有效,端口A中断允许信号,可由用户通过对PC4的按位置位/复位来控制(PC4=1,允许中断)。而INTEB由PC2的置位/复位控制。上述过程可用图7-37的简单时序图进一步说明。
在方式1之下,8255的A口和B口既可以同时为输入或输出,也可以一个为输入,另一个为输出。还可以使这两个端口一个工作于方式1,而另一个工作于方式0。这种灵活的工作特点是由其可编程的功能决定的。
图7-37 方式1下数据输入时序图
(2)方式1输出。在方式1输出时,如图7-38所示,主要控制信号意义如下:
1)——输出缓冲器满信号,低电平有效。这是8255输出给外设的一个控制信号。当其有效时,表示CPU已经把数据输出给指定的端口,外设可以把数据输出。它由CPU输出命令的上升沿设置为有效,由的有效信号使其恢复为高。
2)——低电平有效。这是一个外设的响应信号,指示CPU输出给8255的数据已经由外设接收。
图7-38 方式1下A、B口均为输出的选通信号定义及其状态字
3)INTR——中断请求信号,高电平有效。当输出装置已经接收了CPU输出的数据后,它用来作为向CPU提出新的中断请求,要求CPU继续输出数据。当为“1”(高电平),为“1”(高电平)和INTE为“1”(高电平)时,使其置位(高电平),而信号的下降沿使其复位(低电平)。
图7-39 方式1下数据输出时序图
4)INTEA和INTEB——INTEA由PC6的置位/复位控制,而INTEB由PC2的置位复位控制。方式1下的整个输出过程可以参考图7-39所示的简单时序。
当A口和B口同时工作于方式1输出时,仅使用了C口的6条线,剩余的两位可以工作于方式0,实现数据的输入或输出,其数据的传送方向可用程序指定。也可通过位操作方式对它们进行置位或复位。当A、B两个口中仅有一个口工作在方式1时,只用去PC口的3条线,则PC口剩下的5条线也可按方式0工作。
3.方式2(双向选通输入/输出方式)
方式2仅仅适合于A端口。这种方式能实现外设与8255A的PA端口双向数据传送,并且输入和输出都是锁存的。它使用PC端口的5位作应答信号,2位作中断允许控制位。
方式2又称为双向I/O方式。只有A口可以工作在这种方式下。双向方式使外设能利用8位数据线与CPU进行双向通信,既能发送数据,也能接受数据。方式2要利用C口的5条线来提供双向传输所需的控制信号。当A口工作于方式2时,B口可以工作在方式0或方式1,而C口剩下的3条线可以作为输入/输出线使用,也可以用作B口方式1之下的控制线。当端口A工作于方式2时,如图7-40所示,各个信号的意义为:
(1)INTR——中断请求信号,高电平有效,在输入和输出方式时,都可用作向CPU发出的中断请求信号。
图7-40 方式2下的信号定义及其状态字
(2)——输出缓冲器满信号,低电平有效,是对外设的一种命令信号,表示CPU已把数据输至端口A。
(3)——响应信号,低电平有效,的下降沿启动端口A的三态输出缓冲器,送出数据,否则输出缓冲器处在高阻状态。的上升沿是数据已输出的回答信号。
(4)INTE1和INTE2——INTE1是与输出缓冲器相关的中断屏蔽触发器,由PC6的置位/复位控制。INTE2是与输入缓冲器相关的中断屏蔽触发器,由PC4的置位/复位控制。
(5)——选通输入,低电平有效,这是外设供给8255的选通信号,它把输入数据选通至输入锁存器。
(6)IBF——输入缓冲器满,高电平有效,它是一个控制信号,指示数据已进入输入锁存器。在CPU未把数据读走前,IBF始终为高点平,阻止输入设备送来新的数据。
A口工作于方式2的时序如图7-41所示。此时的A口可以认为是前面方式1的输入和输出相结合而分时工作。实际传输过程中,输入和输出的顺序以及各自操作的次数是任意的,只要之前发出,在之前发出就可以了。
在输出时,CPU发出写脉冲,向A口写入数据。信号使INTR变低电平,同时使有效。外设接到信号后发出信号,从A口读出数据,信号使无效,并使INTR变高,产生中断请求,准备输出下一个数据。
图7-41 方式2下的工作时序
输入时,外设向8255送来数据,同时发信号给8255,该信号将数据锁存到8255的A口,从而使IBF有效。信号结束使INTR有效,向CPU请求中断。CPU响应中断后,发出读信号,从A口中将数据读走。信号会使INTR和IBF信号无效,从而开始下个数据的读入过程。
在方式2下,8255的PA0~PA7引线上,随时可能出现输出到外设的数据,也可能出现外设输入给8255的数据,这需要防止CPU和外设同时竞争PA 0~PA 7数据线。
7.3.3.4 8255A接口的应用
【例7-9】 如图7-42所示,在8255A的PA端口接有8个按键,PB端口接有8个发光二极管,请编写程序实现完成按下某一按键,相应的发光二极管发光的功能。
图7-42 8255 A口的8个键控制B口的8盏灯
由图可知,P0.7=0方选中该8255,当A1 A0(P0.1 P0.0)为00、01对应PA口和PB口,当A1 A0为11时对应控制口,其余地址写1。这样A口、B口、控制口地址分别为xx7CH、xx7DH、xx7FH。设定PA口方式0输入,B口方式0输出,控制字10010000B=90H。
汇编程序如下:
C语言程序如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。