可编程并行接口芯片8255A.docx

上传人:b****0 文档编号:12611043 上传时间:2023-04-20 格式:DOCX 页数:13 大小:21.08KB
下载 相关 举报
可编程并行接口芯片8255A.docx_第1页
第1页 / 共13页
可编程并行接口芯片8255A.docx_第2页
第2页 / 共13页
可编程并行接口芯片8255A.docx_第3页
第3页 / 共13页
可编程并行接口芯片8255A.docx_第4页
第4页 / 共13页
可编程并行接口芯片8255A.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

可编程并行接口芯片8255A.docx

《可编程并行接口芯片8255A.docx》由会员分享,可在线阅读,更多相关《可编程并行接口芯片8255A.docx(13页珍藏版)》请在冰豆网上搜索。

可编程并行接口芯片8255A.docx

可编程并行接口芯片8255A

可编程并行接口芯片8255A

    并行输入/输出就是把若干个二进制位信息同时进行传送的数据传输方式。

它具有传输速度快、效率高的优点。

并行数据传输需用的信号线较多(与串行传输相比),不适合长距离传输。

所以,并行数据传输适用于数据传输率要求较高,而传输距离相对较短的场合。

    8255A是Intel公司为其80系列微处理器生产的通用可编程并行输入输出接口芯片,也可以与其他系列的微处理器配套使用。

由于其通用性强,与微机接口方便,且可通过程序指定完成各种输入输出操作,因此,8255获得了广泛的应用。

    8255A的引脚与结构

    1.8255A的引脚

    8255A是可编程的三端口并行输入输出接口芯片,具有40个引脚,双列直插式封装,由+5V供电,其引脚与功能示意图如图所示。

    A、B、C三个端口各有8条端口I/O线:

PA7PA0,PB7PB0,PC7PC0,共32个引脚,用于8255A与外设之间的数据(或控制、状态信号)的传送。

    D0~D7:

8位三态数据线,接至系统数据总线。

CPU通过它实现与8255之间数据的读出与写入,以及控制字和状态字的写入与读出等。

    A0~A1:

地址信号。

A0和A1经片内译码产生四个有效地址分别对应A、B、C三个独立的数据端口以及一个公共的控制端口。

在实际使用中,A1、A0端接到系统地址总线的A1、A0。

    CS#:

片选信号,由系统地址译码器产生,低电平有效。

    读写控制信号RD#和WR#:

低电平有效,用于决定CPU和8255A之间信息传送的方向:

当RD#=0时,从8255A读至CPU;当WR#=0时,由CPU写入8255A。

CPU对8255各端口进行读写操作时的信号关系如表所示。

    RESRT:

复位信号,高电平有效。

8255A复位后,A、B、C三个端口都置为输入方式。

    2.8255A的内部结构

    如图所示,8255A的内部由以下四部分组成:

    

(1)端口A、端口B和端口C

    端口A、端口B和端口C都是8位端口,可以选择作为输入或输出。

还可以将端口C的高4位和低4位分开使用,分别作为输入或输出。

当端口A和端口B作为选通输入或输出的数据端口时,端口C的指定位与端口A和端口B配合使用,用作控制信号或状态信号。

    

(2)A组和B组控制电路

    这是两组根据CPU送来的工作方式控制字控制8255工作方式的电路。

它们的控制寄存器接收CPU输出的方式控制字,由该控制字决定端口的工作方式,还可根据CPU的命令对端口C实现按位置位或复位操作。

    (3)数据总线缓冲器

    这是一个8位三态数据缓冲器,8255A正是通过它与系统数据总线相连,实现8255A与CPU之间的数据传送。

输入数据、输出数据、CPU发给8255A的控制字等都是通过该部件传递的。

    (4)读/写控制逻辑

    读/写控制逻辑电路的功能是负责管理8255A与CPU之间的数据传送过程。

它接收CS及地址总线的信号A1、A0和控制总线的控制信号RESET、WR、RD,将它们组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令送给这两个部件,再由它们控制完成对数据、状态信息和控制信息的传送。

各端口读写操作与对应的控制信号之间的关系见表所示。

    

    8255A的工作方式与控制字

    1.8255A的工作方式

    8255A在使用前要先写入一个工作方式控制字,以指定A、B、C三个端口各自的工作方式。

8255A共有三种工作方式:

    方式0——基本输入输出方式,即无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。

A口、B口、C口的高四位和低四位均可设置为方式0。

    方式1——选通输入输出方式,此时8255A的A口和B口与外设之间进行输入或输出操作时,需要C口的部分I/O线提供联络信号。

只有A口和B口可工作于方式1。

    方式2——选通双向输入输出方式,即同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。

此种方式下需要C口的部分I/O线提供联络信号。

    有关8255A三种工作方式的功能及应用的详细介绍见下一节。

    2.8255A的控制字

    

(1)工作方式选择控制字

    8255A的工作方式可由CPU写一个工作方式选择控制字到8255A的控制寄存器来选择。

控制字的格式如图所示,可以分别选择端口A、端口B和端口C上下两部分的工作方式。

端口A有方式0、方式1和方式2共三种工作方式,端口B只能工作于方式0和方式1,而端口C仅工作于方式0。

    注意:

在端口A工作于方式1或方式2,端口B工作于方式1时,C口部分I/O线被定义为8255A与外设之间进行数据传送的联络信号线,此时,C口剩下的I/O线仍工作于方式0,是输入还是输出则由工作方式控制字的D0和D3位决定,如图所示。

    

(2)C口按位置位/复位控制字

    8255A的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255A的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。

控制字格式如图所示。

    例如,要使端口C的PC4置位的控制字为00001001B(09H),使该位复位的控制字为00001000B(08H)。

    应注意的是,C口的按位置位/复位控制字必须跟在方式选择控制字之后写入控制字寄存器,即使仅使用该功能,也应先选送一个方式控制字。

方式选择控制字只需写入一次,之后就可多次使用C口按位置位/复位控制字对C口的某些位进行置1或清0操作。

    8.2.3各种工作方式的功能

    1.方式0——基本输入输出方式

    方式0无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。

它适用于无需应答(握手)信号的简单的无条件输入/输出数据的场合,即输入/输出数据处于准备好状态。

    在此方式下,A口、B口、C口的高4位和低4位可以分别设置为输入或输出,即8255A的这四个部分都可以工作于方式0。

需要说明的是,这里所说的输入或输出是相对于8255A芯片而言的。

当数据从外设送往8255A则为输入,反之,数据从8255A送往外设则为输出。

    方式0也可以用于查询方式的输入或输出接口电路,此时端口A和B分别作为一个数据端口,而用端口C的某些位作为这两个数据端口的控制和状态信息。

如图所示是一个方式0下利用C口某些位作为联络信号的接口电路。

在此例中将8255A设置为:

A口输出,B口输入,C口高4位输入(现仅用PC7、PC6两位输入外设的状态),C口低4位输出(现仅用PC1、PC0两位输出选通及清除信号)。

此时8255A的工作方式控制字为:

B(8AH)。

    其工作原理如下:

在向输出设备送数据前,先通过PC7查询设备状态,若设备准备好则从A口送出数据,然后通过PC1发选通信号使输出设备接收数据。

从输入设备取数据前,先通过PC6查询设备状态,设备准备好后,再从B口读入数据,然通过PC0发清除信号,以便输入后续字节。

    与下面介绍的选通输入输出方式(方式1)和选通双向输入输出方式(方式2)相比,方式0的联络信号线可由用户自行安排(方式1和方式2中使用的C口联络线是已定义好的),且只能用于查询,不能实现中断。

    2.方式1——选通输入输出方式

    与方式0相比,它的主要特点是当A口、B口工作于方式1时,C口的某些I/O线被定义为A口和B口在方式1下工作时所需的联络信号线,这些线已经定义,不能由用户改变。

现将方式1分为:

A口和B口均为输入、A口和B口均为输出以及混合输入与输出等三种情况进行讨论。

    

(1)A口和B口均为输入

    A口和B口均工作于方式1输入时,各端口线的功能如图所示。

    A口工作于方式1输入时,用PC5~PC3作联络线。

B口工作于方式1输入时,用PC2~PC0。

C口剩余的两个I/O线PC7和PC6工作于方式0,它们用作输入还是输出,由工作方式控制字中的D3位决定,D3=1,输入;D3=0,输出。

    各联络信号线的功能解释如下(请参考图所示的方式1输入时序图来理解各信号的功能):

    STB(Strobe):

选通信号,输入,低电平有效。

当STB有效时,允许外设数据进入端口A或端口B的输入数据缓冲器。

STBA接PC4,STBB接PC2。

IBF(InputBufferFull):

输入缓冲器满信号,输出,高电平有效。

当IBF有效时,表示当前已有一个新数据进入端口A或端口B缓冲器,尚未被CPU取走,外设不能送新的数据。

一旦CPU完成数据读入操作后,IBF复位(变为低电平)。

    INTR(InterruptRequest):

中断请求信号,输出,高电平有效。

在中断允许INTE=1且IBF=1的条件下,由STB信号的后沿(上升沿)产生,该信号可接至中断管理器8259A作中断请求。

它表明数据端口已输入一个新数据。

若CPU响应此中断请求,则读入数据端口的数据,并由RD信号的下降沿使INTR复位(变为低电平)。

    INTE(InterruptEnable):

中断允许信号,高电平有效。

它是8255A内部控制8255A是否发出中断请求信号(INTR)的控制信号。

这是由软件通过对C口的置位或复位来实现对中断请求的允许或禁止的。

端口A的中断请求INTRA可通过对PC4的置位或复位加以控制,PC4置1,允许INTRA工作,PC4清0,则屏蔽INTRA。

端口B的中断请求INTRB可通过对PC2的置位或复位加以控制。

    

(2)A口和B口均为输出

    A口和B口均工作于方式1输出时,各端口线的功能如图所示。

    A口工作于方式1输出时,用PC3,PC6和PC7作联络线。

B口工作于方式1输出时,用PC0PC2作联络线。

C口剩余的两个I/O线PC4和PC5工作于方式0。

各联络信号线的功能解释如下(请参考图所示时序图来理解各信号的功能):

    OBF(OutputBufferFull):

输出缓冲器满信号,输出,低电平有效。

当CPU把数据写入端口A或B的输出缓冲器时,写信号WR的上升沿把OBF置成低电平,通知外设到端口A或B来取走数据,当外设取走数据时向8255A发应答信号ACK,ACK的下降沿使OBF恢复为高电平。

    ACK(Acknowledge):

外设应答信号,输入,低电平有效。

当ACK有效时,表示CPU输出到8255A的数据已被外设取走。

    INTR(InterruptRequest):

中断请求信号,输出,高电平有效。

该信号由ACK的后沿(上升沿)在INTE=1且OBF=1的条件下产生,该信号使8255A向CPU发出中断请求。

若CPU响应此中断请求,向数据口写入一新的数据,写信号WR上升沿(后沿)使INTR复位,变为低电平。

    INTE(InterruptEnable):

中断允许信号,与方式1输入类似,端口A的输出中断请求INTRA可以通过对PC6的置位或复位来加以允许或禁止。

端口B的输出中断请求信号INTRB可以通过对PC2的置位或复位来加以允许或禁止。

    (3)混合输入与输出

    在实际应用中,8255A端口A和端口B也可能出现一个端口工作于方式1输入,另一个工作于方式1输出的情况,有以下两种情况:

    端口A为输入,端口B为输出时,其控制字格式和连线图如图所示。

    端口A为输出,端口B为输入时,其控制字格式和连线图如图所示。

    3.方式2——选通双向输入输出方式

    选通双向输入输出方式,即同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。

此时C口有5条线(PC7PC3)被规定为联络信号线。

剩下的3条线(PC2PC0)可以作为B口工作于方式1时的联络线,也可以与B口一起工作于方式0。

8255A工作于方式2时各端口线的功能如图所示。

    图中INTE1是输出的中断允许信号,由PC6的置位或复位控制。

INTE2是输入的中断允许信号,由PC4的置位或复位控制。

图中其他各信号的作用及意义基本上与方式1相同,在此不再赘述。

    8255A的应用举例

    例8255A初始化编程。

设8255A工作于方式1,A口输出,B口输入,PC4,PC5输入,禁止B口中断。

设片选信号CS由A9A2=确定。

试编写程序对8255A进行初始化。

根据题意,设计接口电路如图所示。

    初始化程序:

    MOVAL,B        ;控制字送AL

    MOVDX,11B        ;8255A控制字寄存器地址送DX

    OUTDX,AL            ;控制字送8255A的控制寄存器

    MOVAL,00001101B        ;PC6置1,允许A口中断

    OUTDX,AL

    MOVAL,00000100B        ;PC2置0,禁止B口中断

    OUTDX,AL

    例用于对非编码键盘的管理。

    如图所示,使用8255A构成4行4列的非编码矩阵键盘控制电路。

    图中8255A的A口工作于方式0输出,B口工作于方式0输入。

键盘工作过程如下:

首先进行第1次键盘扫描(判断是否有键按下)。

使A口PA3~PA0输出均为0,然后读入B口的值,查看PB3PB0是否有低电平,若没有低电平,则说明没有键按下,继续进行扫描。

若PB3PB0中有一位为低电平,使用软件延时10ms20ms以消除抖动,若低电平消失,则说明低电平是由干扰,或按键的抖动引起的,必须再次扫描,否则,则确认有键按下,接着进行第2次扫描(行扫描,判断所按键的位置)。

首先通过A口输出使PA0=0,PA1=1,PA2=1,PA3=1对第0行进行扫描,此时,读入B口的值,判断PB3PB0中是否有某一位为低电平,若有低电平,则说明第0行某一列上有键按下。

如果没有低电平,接着使A口输出PA0=1,PA1=0,PA2=1,PA3=1对第1行进行扫描,按上述方法判断,直到找到被按下的键,并识别出其在矩阵中的位置,从而可根据键号去执行该键对应的处理程序。

    设图中8255A的A口、B口和控制寄存器的地址分别为80H、81H和83H,其键盘扫描程序如下:

    ;判断是否有键按下

    MOVAL,82H            ;初始化8255A,A口方式0输出,B口方式0输入

    OUT83H,AL            ;将工作方式控制字送控制寄存器

    MOVAL,00H

    OUT80H,AL            ;使PA3=PA2=PA1=PA0=0

    LOOA:

INAL,81H        ;读B口,判断PB3PB0是否有一位为低电平

    ANDAL,0FH

    CMPAL,0FH

    JZLOOA                ;PB3~PB0没有一位为低电平时转LOOA继续扫描

    CALLD20ms            ;PB3~PB0有一位为低电平时调用延时20ms子程序

    INAL,81H            ;再次读入B口值。

如果PB3PB0仍有一位为低电平,

    ANDAL,0FH            ;说明确实有键按下,继续往下执行,以判断是哪个键

    CMPAL,0FH            ;按下;如果延时后PB3PB0中低电平不再存在,

    JZLOOA                ;说明是干扰或抖动引起,转LOOA继续扫描。

    

    ;判断哪一个键按下

    START:

MOVBL,4        ;行数送BL

    MOVBH,4            ;列数送BH

    MOVAL,0FEH            ;D0=0,准备扫描0行

    MOVCL,0FH            ;键盘屏蔽码送CL

    MOVCH,0FFH            ;CH中存放起始键号

    LOP1:

OUT80H,AL       ;A口输出,扫描一行

    ROLAL,1            ;修改扫描码,准备扫描下一行

        MOVAH,AL            ;暂时保存

    INAL,81H            ;读B口,以便确定所按键的列值

    ANDAL,CL

    CMPAL,CL

    JNZLOP2                ;有列线为0,转LOP2,找列值

    ADDCH,BH            ;无键按下,修改键号,使适合下一行找键号

    MOVAL,AH            ;恢复扫描码

    DECBL                ;行数减1

            JNZLOP1            ;行未扫描完转LOP1

    JMPSTART            ;重新扫描

    LOP2:

INCCH            ;键号加1

    RORAL,1            ;右移一位

    JCLOP2            ;无键按下,查下一列线

    MOVAL,CH            ;已找到,键号送AL

    CMPAL,0

    JZKEY0            ;是0号键按下,转KEY0执行

    CMPAL,1

    JZKEY1            ;是1号键按下,转KEY1执行

    ……

    CMPAL,0EH            ;

    JZKEY14            ;是14号键按下,转KEY14执行

    JMPKEY15            ;不是014号键,一定是15号键,转KEY15执行

    

    例利用8255A作为两机并行通讯接口。

    两台PC机通过8255A构成如图所示的并行数据传送接口,A机发送数据,B机接收数据。

A机一侧的8255A工作于方式1输出,从PA7PA0发送由CPU写入A口的数据,PC3、PC7和PC6提供A机一侧8255A的A口工作于方式1时的联络信号INTR、OBF和ACK。

B机一侧的8255A工作于方式0输入,从PA7PA0接收A机送来的数据,PC4和PC0选作联络信号。

    工作过程如下:

A机将数据从A口送出后,经PC7送出OBF有效信号(请参阅图和),B机查询到OBF信号(经B机一侧8255A的PC4引脚)有效后,从A口读入数据,并通过软件在PC0上产生一个ACK有效信号,该信号的上升沿使A机的8255A的PC3上产生有效的INTR信号,A机CPU查询到INTR有效(PC3为高电平)时,接着发送下一个数据,如此不断重复,直到发送完所有的数据为止。

    假设两台PC机传送1KB数据,发送缓冲区为0300:

0000H,接收缓冲区为0400:

0000H,A、B两机的8255A的端口地址均为300303H。

驱动程序如下:

    ;A机的发送程序

    MOVAX,0300H;

    MOVES,AX                ;设置A机发送数据缓冲区段地址

    MOVBX,0                ;设置A机发送数据缓冲区偏移地址

    MOVCX,03FFH                ;设置发送字节数

    ;对A机8255A进行初始化

    MOVDX,303H                ;指向A机8255A的控制寄存器

    MOVAL,B                ;8255A指定为工作方式1输出

    OUTDX,AL

    MOVAL,00001101B                ;置发送中断允许INTEA=1

    OUTDX,AL;

    ;发送数据

    MOVDX,300H                ;向A口写第1个数据,产生第一个OBF信号,对方

    MOVAL,ES:

[BX]                        ;查询到OBF信号有效后,读入数据,并通过软件,

                                    ;在PC0上发出ACK信号,该信号上升沿使A机8255A;的PC3产生有效的INTR信号,A机CPU查询到

    OUTDX,AL                ;该信号有效后,再接着发下一个数据。

    INCBX                ;缓冲区指针加1

    DECCX                ;计数器减1

    LOOP0:

MOVDX,302H                ;指向8255A的C口,读有关状态信息

    LOOP1:

INAL,DX;

    ANDAL,08H                ;查询中断请求信号INTR(PC3)=1

    JZLOOP1                ;若INTR=0则等待,否则向A口发数据

    MOVDX,300H

    MOVAL,ES:

[BX]

    OUTDX,AL

    INCBX                ;缓冲区指针加1

    LOOPLOOP0                ;数据未送完,继续

    MOVAX,4C00H

    INT21H                ;返回DOS

    

    ;B机接收数据

    

    MOVAX,0400H;

    MOVES,AX                ;设B机接收缓冲区段地址

    MOVBX,0                ;设B机接收缓冲区偏移地址

    MOVCX,3FFH                ;置接收字节数计数器

    ;对B机的8255A初始化

    MOVDX,303H                ;指向B机8255A的控制寄存器

    MOVAL,B                ;设A口和C口高4位为方式0输入

    OUTDX,AL                ;C口低4位为方式0输出

    MOVAL,00000001B                ;置PC0=ACK=1

    OUTDX,AL

    LOOP0:

MOVDX,302H                ;指向C口

    LOOP1:

INAL,DX                ;查A机的OBF(B机的PC4)=0

    A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1