单片机IO口扩展

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章 MCS-51单片机并行I/O接口的扩展

(一)学习要求

1、熟悉74LS377、74LS245外围芯片的特性和扩展方法。

2、掌握8255A芯片的结构和工作方式。

3、掌握8155A芯片的结构和工作方式。

4、掌握8155A的RAM和I/O端口寻址方法。

(二)内容提要

1、I/O接口的扩展

当所需扩展的外部I/O口数量不多时,可以使用常规的逻辑电路、锁存器进行扩展。这一类的外围芯片一般价格较低而且种类较多,常用的如:74LS377、74LS245、74LS373、74LS244、74LS273、74LS577、74LS573。

1)74LS377

74LS377是一种8D触发器,它的E端和CLK端是控制端,当它的E端为低电平时只要在CLK端产生一个正跳变,D0~D7将被锁存到Q0~Q7端输出,在其它情况下Q0~Q7端的输出保持不变。

可以利用74LS377这一特性扩展并行输出口。如图9-2使用了一片74LS377扩展输出口,如果将未使用到的地址线都置为1则可以得到该片74LS377的地址为7FFFH。如果单片机要从该片74LS377输出数据的可以执行如下指令:

MOV DPTR,#7FFFFH

MOVX @DPTR,A

2)74LS245。

74LS245是一种三态输出的八总线收发/驱动器,无锁存功能。它的端和DIR端是控制端,当它的G端为低电平时,如果DIR为高电平则74LS245将A端数据传送至B端,如果DIR为低电平则74LS245将B端数据传送至A端,在其它情况下不传送数据,并输出高阻态。

可以利用74LS245这一特性扩展并行输入口。如图9-4使用了一片74LS245扩展输入口,如果将未使用到的地址线都置为1则可以得到该片74LS245的地址为7FFFH。如果单片机要从该片74LS377输出数据的可以执行如下指令:

MOV DPTR,#7FFFFH

MOVX A,@DPTR

2、8255A可编程I/O接口设计及扩展技术

8255A是一种常见的8位可编程并行接口芯片,本接将着重介绍8255A的工作原理、编程方式和应用。

1)8255A芯片的结构

引脚功能如下:

RESET: 复位信号输入端,高电平有效,有效时清除8255A内部寄存器,

同时三个端口自动设为输入端;

D0-D7: 数据线;

V CC: 电源;

GND: 接地线。

PA: A组8位I/O口;

PB: B组8位I/O口;

PC: C组8位I/O口,还具备其它控制功能;

CS: 片选信号输入线,低电平有效;

RD: 读选通信号输入线,低电平有效;

WR: 写选通信号输入线,低电平有效;

A0A1: 端口信号选择端,用于决定当前对哪一个端口进行操作, 2)8255A的控制字和工作方式

8255A共有三种工作方式:方式0、方式1和方式2。方式0为基本的输入输出方式,方式1为有应答的单向输入输出方式,方式2为有应答的双向输入输出方式。

方式0

方式0为基本的输入输出方式。8255A的PA、PB、PC0-3、PC4-7可以分别被定义方式0输入和方式0输出。方式0输出具有锁存功能,输入没有锁存功能,因此方式0适合于无条件传送一组数据,比如可以读一组开关状态、控制一组指示灯,这种工作方式下,CPU可以随时读入开关状态,也可以随时将一组数据送指示灯显示。

方式1

方式1为有应答的单向输入输出方式。8255A的PA、PB可以分别被定义方式1输入和方式1输出,PC的某些位作为状态控制线和应答信号,剩余的线可以作为I/O口使用。

方式2

方式2为有应答的双向输入输出方式。只有8255A的PA可以分别被定义方式2,PC的某些位作为状态控制线和应答信号,剩余的线可以作为I/O口使用。

3)8255A的控制字

8255A由两种控制字:方式控制字和PC口的复位/置位控制字。这两个控制字的地址一样,它们的差别在于方式控制字的最高位为1,PC口的复位/置位控制字的最高位为0。

3、8255A应用举例

8255A可以直接与MCS-51系列的单片机进行接口。

1)方式0应用

如图9-13是8051扩展8255A的接口逻辑图,要求控制接于PA口上的8各指示灯,实现LO~L3灭,L4~L7亮。

计算8255A相关的地址,在图9-13中8255A的A0、A1分别接地址总线的A0、A1,片选端CS接P2.7口,根据表9-1可以计算出8255A的PA口的地址为7FFCH、PB口的地址为7FFDH、PC口的地址为7FFDH、控制字口的地址为7FFFH。

确定8255A的工作方式,根据要求可以采用PA口方式0输出。

决定如何控制,从图9-13可以看出,当PA口的某一位输出高电平时指示灯将灭,当PA

口的某一位输出低电平时指示灯将亮,如果要实现LO~L3灭,L4~L7亮,则要求PA口输出0FH。

根据以上分析可以编制如下子程序:

LED: MOV DPTR,#7FFFH ;写方式控制字,PA口方式0输出

MOV A,#80H

MOVX @DPTR,A

MOV DPTR,#7FFCH ;往PA口写数,控制灯

MOV A,#0FH

MOVX @DPTR,A

RET

2)方式1应用

如图9-14是8051扩展8255A的另一种接口逻辑图,要求根据外部设备的输入信号控制接于PA口上的8各指示灯,当外部设备输入0时L0亮,其它灭;输入1时L1亮,其它灭;……当外部设备输入值大于7时所有灯全灭。当外部设备输入数值后,会产生一负脉冲。

与前一例一样根据接线图可以确定8255A相关的地址,PA口的地址为7FFCH、PB口的地址为7FFDH、PC口的地址为7FFDH、控制字口的地址为7FFFH。

根据要求可以决定8255A的工作方式:PA口方式0输出,PB口方式1输入。

根据要求可以编制出如下完整程序:

LED: LJMP MAIN

ORG 0003H

LJMP INT_0

MAIN: MOV SP,#60H ;初始化中断相关参数

MOV IE,#81H

MOV DPTR,#7FFFH ;写方式控制字,PA口方式0输出,PB口方式1输入

MOV A,#86H

MOVX @DPTR,A

MOV A,#05H ;将PC2置为1,允许中断

MOVX @DPTR,A

SJMP $ ;等待外部设备输入数据

INT_0: MOV DPTR,#7FFDH ;从PB口读数据

MOVX A,@DPTR

MOV DPTR,#7FFCH ;准备对PA口操作

CJNE A,#08H,NOR

JNC DARK ;读入的数大于或等于8,所有灯全灭

相关文档
最新文档