首页 理论教育 基于汇编与C语言的8255A扩展及应用

基于汇编与C语言的8255A扩展及应用

时间:2023-10-23 理论教育 版权反馈
【摘要】:单片机可以对8255A进行I/O数据的无条件传送,外设的I/O数据在8255A的各端口能得到锁存和缓冲。INTE:8255A内部为控制中断而设置的“中断允许”信号。

基于汇编与C语言的8255A扩展及应用

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有效时,所有内部寄存器都被清零。

img:片选信号,低电平有效。只有当img有效时,芯片才被选中。

img:读信号,低电平有效。当img有效时,CPU可以从8255A中读取输入数据。

img:写信号,低电平有效。当img有效时,CPU可以往8255A中写入控制字或数据。

图7-34 8255A的引脚和内部结构

2.内部寄存器及其操作

A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,由A1、A0编程选择。A1、A0和img组合所实现的各种功能见表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位作中断允许控制位。各应答信号含义如下:

img:外设送给8255A的“输入选通”信号,低电平有效。(www.xing528.com)

IBF:8255A送给外设的“输入缓冲器满”信号,高电平有效。

INTR:8255A送给CPU的“中断请求”信号,高电平有效。

INTE:8255A内部为控制中断而设置的“中断允许”信号。INTE由软件通过对PC4(PA端口)和PC2(PB端口)的置位/复位来允许或禁止。

img:8255A送给外设的“输出缓冲器满”信号,低电平有效。

img:外设送给8255A的“应答”信号,低电平有效。

就8255A方式1的输入或输出工作方式的具体分析如下:

(1)方式1输入。当任一端口工作于方式1输入时,如图7-36所示,其中各个控制信号的意义介绍如下:

图7-36 方式1下A、B口均为输入时的信号定义及其状态字

1)img——选通信号,低电平有效,这是由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255的输入锁存器。

2)IBF——输入缓冲器满信号,高电平有效,这是8255输出的一个联络信号。当其有效时,表示数据已输入至输入锁存器。它由img信号置位(高电平),而img信号的上升沿使其复位。

3)INTR——中断请求信号,高电平有效,这是8255的一个输出信号,可用于向CPU提出中断请求,要求CPU读取外设数据。它在当img为高电平,IBF为高电平和INTE(中断允许)为高电平时被置为高,而由img信号的下降沿清除。

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)img——输出缓冲器满信号,低电平有效。这是8255输出给外设的一个控制信号。当其有效时,表示CPU已经把数据输出给指定的端口,外设可以把数据输出。它由CPU输出命令img的上升沿设置为有效,由img的有效信号使其恢复为高。

2)img——低电平有效。这是一个外设的响应信号,指示CPU输出给8255的数据已经由外设接收。

图7-38 方式1下A、B口均为输出的选通信号定义及其状态字

3)INTR——中断请求信号,高电平有效。当输出装置已经接收了CPU输出的数据后,它用来作为向CPU提出新的中断请求,要求CPU继续输出数据。当img为“1”(高电平),img为“1”(高电平)和INTE为“1”(高电平)时,使其置位(高电平),而img信号的下降沿使其复位(低电平)。

图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)img——输出缓冲器满信号,低电平有效,是对外设的一种命令信号,表示CPU已把数据输至端口A。

(3)img——响应信号,低电平有效,img的下降沿启动端口A的三态输出缓冲器,送出数据,否则输出缓冲器处在高阻状态。img的上升沿是数据已输出的回答信号。

(4)INTE1和INTE2——INTE1是与输出缓冲器相关的中断屏蔽触发器,由PC6的置位/复位控制。INTE2是与输入缓冲器相关的中断屏蔽触发器,由PC4的置位/复位控制。

(5)img——选通输入,低电平有效,这是外设供给8255的选通信号,它把输入数据选通至输入锁存器。

(6)IBF——输入缓冲器满,高电平有效,它是一个控制信号,指示数据已进入输入锁存器。在CPU未把数据读走前,IBF始终为高点平,阻止输入设备送来新的数据。

A口工作于方式2的时序如图7-41所示。此时的A口可以认为是前面方式1的输入和输出相结合而分时工作。实际传输过程中,输入和输出的顺序以及各自操作的次数是任意的,只要img之前发出,imgimg之前发出就可以了。

在输出时,CPU发出写脉冲img,向A口写入数据。img信号使INTR变低电平,同时使img有效。外设接到img信号后发出img信号,从A口读出数据,img信号使img无效,并使INTR变高,产生中断请求,准备输出下一个数据。

图7-41 方式2下的工作时序

输入时,外设向8255送来数据,同时发img信号给8255,该信号将数据锁存到8255的A口,从而使IBF有效。img信号结束使INTR有效,向CPU请求中断。CPU响应中断后,发出读信号img,从A口中将数据读走。img信号会使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语言程序如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈