搜档网
当前位置:搜档网 › 第九章 接口扩展技术

第九章 接口扩展技术

第九章MCS-51 接口扩展技术

§9.1 微型机I/O接口技术概述

所谓I/O即计算机数据的输入输出。计算机系统的数据输入输出有两类数据传送操作:

1.CPU和存储器之间的传送操作,如前章所述。

2.CPU与外围设备接口的数据输入输出操作:

由于外部设备情况复杂,例如速度的快慢差异很大,外围设备的数据信号格式各不相同,有电流信号、电压信号、数字信号、脉冲信号等。这些复杂的情况使CPU无法以固定的时序与外围设备同步协调工作,这就需要用一定的接口电路连接CPU与外围设备,使CPU 与外围设备之间的数据输入输出能有效地进行。

一.I/O接口电路的作用:

1.速度协调:

CPU的速度很快,外围设备的速度较慢。

输入:当外围设备数据准备好后,CPU再执行输入操作,由I/O 接口电路提供准备好信号再输入。

输出:需当外围设备准备好才能执行输出操作,由I/O接口电路将外围设备的准备状态传送给CPU。

I/O接口电路充当了协调CPU与外围设备速度差异的角色。

2.输出接口电路应具有锁存功能:

CPU向外输出数据是通过P0口数据通道输出的,P0口是分时传送低8位地址和数据信息的复用口,数据在数据总线上停留的时间很短,因此输出接口应将该输出数据锁存起来,等待这一数据被外围设备接收。

3.输入接口电路应具备三态缓冲功能:

外围设备向CPU输入数据仍需通过P0口数据通道,在该数据通道上挂着多个数据源,除了多种输入接口外,所有存储器的数据线也与P0口数据通道相连,CPU的一次输入操作只允许一个数据源的数据线与数据通道相连,其余数据源的数据线必须以高阻与数据通道隔离。

所谓三态即指高电平、低电平、高阻三种状态。

4.数据转换:

CPU传送的信号必须是数字信号,并且是并行信号,外围设备的信号与此不符则需通过接口电路转换。例如模拟信号与数字信号、串行与并行之间的转换等。

§9.2 I/O接口的扩展

一.单片机I/O口的直接应用,用P1口直接输入输出

单片机的P1口可直接作为8条输入输出线使用。

+5V

由上图,P1口的高4位是输入线,低4位作为输出线用其高电平可点亮接在该线的发光二极管,P1.7~P1.4的开关依次对应P1.3~P1.0的灯,哪个开关合上,则其对应的灯点亮。程序如下:

ORG 0000H

MAIN:MOV P1 , #0F0H ;置P1口高4位为输入,灭4个灯MOV A , P1 ;输入开关状态,合上者输入为0

CPL A

ANL A , #0F0H ;求反后切取高4位

SWAP A ;移入低4位

MOV P1 , A ;点亮对应的发光二极管

LJMP MAIN

END

二.用TTL芯片扩展简单的I/O口

采用TTL电路或CMOS电路的锁存器、三态门等通过P0口常可构成各类简单的输入输出接口,它电路简单、成本低、配置灵活方便。

1.扩展简单的8位输出口

扩展输出口选择芯片要点是必须具有锁存功能。这是因为输出的数据在数据线上保持的时间是很短暂的,必须锁存起来用以控制外围设备。

例如用两片74LS377扩展两个8位输出口:

8位输出8位输出

如图,74LS377是带有允许输出端的8D锁存器,它的控制逻辑为:

当G = 0时,CLK的上升沿(电平由低变高)使数据锁存,即8Q 输出与8D输入呈高阻隔开,8Q输出保持由8D输入的信息。CPU的输出操作:

①首先建立有效地址,使G = 0:

对于1#74LS377,G接在1Q,即A0上,输出地址只要

A0 = 0即可使其G = 0 ,因此其地址为FFFEH 同理,2#74LS377的地址为FFFDH

②用MOVX写指令产生WR = 0的低电平有效信号,欲输出

的数据从P0口数据线送出,从D端通向Q端,建立8位输出数据。

③当写指令周期结束时,WR变高产生上沿,CLK脚的上跳沿

使Q与D隔开,数据锁存输出。

输出软件如下:

MOV DPTR , #0FFFEH ;建立有效地址,A0 = 0,即1#377

G = 0

MOV A , #DATA1 :待输出数据送A

MOVX @DPTR , A ;产生WR = 0有效信号,数据

DATA从P0口通过D送往Q输

出。

当写周期结束时,WR变高,使

CLK产先上跳沿,数据锁存输出。MOV DPTR , #0FFFDH ;建立有效地址,A1 = 0,即2#377

G = 0

MOV A , #DATA2

MOVX @DPTR , A

2.扩展简单的8位输入口:

输入接口芯片选择的要点是必须具有三态缓冲功能。即被选通的输入接口可与系统的数据总线接通输入数据,未被选通的输入接口应以高阻与数据线隔离。

常用芯片是74LS244,三态门。如下例扩展8位输入口:

74LS244的控制逻辑为:

当1C、2C为低电平时,D与Q接通,数据从P0口输入CPU。当1C、2C为高电平时,D与Q隔开,Q呈高阻状态,接在D 端的外部信号被隔离。

由上图,只有当有效地址P2.1 = 0,且同时执行一条MOVX 读指令产生RD = 0时,或门的输出才会为0,亦即1C、2C才会为0,D与Q才可以接通,从1#244输入数据。由上图可知1#244的地址为FDFFH。

2#244的地址位FBFFH。

输入软件如下:

MOV DPTR , #0FDFFH ;P2.1 = 0建立1#有效地址

MOVX A , @DPTR ;读指令产生RD = 0低电平

有效信号

或门输出为0,1C、2C为0

D通向Q输入数据

读周期结束后RD变高则使

1C、2C为高电平,使D与Q

隔开,呈高阻与数据线隔离。

MOV DPTR , #0FBFFH ;P2.2 = 0建立2#有效地址

MOVX A , @DPTR 从2#244输入数据

三.扩展可编程并行接口8255

8255可扩展三个8位并行输入输出口,可编程设定各口为输入或输出。

1.8255的内部结构

如118页图7-1 说明其结构及引脚作用。

120页端口地址信号及操作

2.8255的工作方式:

方式0:基本输入输出方式,每个口的可被编程设定为输入或输出,

输出时具有锁存功能,输入时为三态。

方式1:选通输入输出方式,A、B口用于数据传送,C口作为与外设联络信号。

方式2:双向传送方式,只有A口可以使用这种方式。

只要求掌握方式0。

3.8255控制字

①方式控制字

P123页列出了方式控制字各位的意义,注意D7位一定是1,它是方式控制字的特征位。例:方式控制字为9AH:

1 0 0 1 1 0 1 0

方式控制字C口低4位输出特征位B口输入

B口方式选择0方式

口方式:C口高4位输入

00:方式0 A口输入

01:方式1

10:方式2

②C口置/复位控制字

将一个置/复位控制字送入8255控制寄存器,即可将C口某一位置为1或0,而且不影响其它位的状态。

例如向控制口送入07H:

0 0 0 0 0 1 1 1

C口置/复位 1表示置1,0表示清0

控制字特征位确定对C口中哪一位进行置/复位操作 000:PC0

001:PC1 依次类推

该控制字确定PC3置1。

4.8255与CPU的连接举例:

各端口地址:

P0.7P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

A口:0 1 1 1 1 1 0 0FF7CH

B口:0 1 1 1 1 1 0 1 FF7DH

C口:0 1 1 1 1 1 1 0 FF7EH

控制口:0 1 1 1 1 1 1 1FF7FH

上图中当无关地址送0时,A口、B口、C口、控制口的地址也

可为0000H、0001H、0002H、0003H。

注:8255内部不带有地址锁存器,上图中用373锁存地址。

编程要点:

MOV DPTR , #0FF7FH ;选控制口

MOV A , #8AH ;方式控制字1 0 0 0 1 0 1 0

MOVX A , @DPTR ;方式控制字特征位C口低4位出

A口方式0 B口输入

A口输出B口方式0

C口高4位输入

MOV DPTR , #0FF7DH

MOVX A , @DPTR ;从B口输入数据,并存入50H单元

MOV 50H , A

MOV DPTR , #0FF7CH

MOV A , #0FFH

MOVX @DPTR , A ;从A口输出FFH

MOV DPTR , #0FF7FH ;选控制口

MOV A , #03H

MOVX @DPTR , A ;送C口置/复位控制字

00 0 0 0 0 1 1

C口置/复位控制字特征位置1

PC.1

该控制字规定PC.1输出为1

四.扩展可编程并行接口8155

1.8155内部结构:

P133页图7-18

8155内部有两个8位并行I/O口,即A口、B口,一个6位并行I/O口,即C口。

256字节数据存储器RAM

一个14位定时器计数器

2.8155的引脚信号说明:P133页

3.8155的端口地址:P134页表7-3

4.8155的控制命令字:P135页

5.8155的状态字P136页

注意8155的控制命令字寄存器只写不读,状态字寄存器只读不写,它们共用一个地址。

6.8155的基本用法:

①可扩展256字节片外RAM

IO/M引脚低电平时,只能用作片外RAM扩充,其低8位地址为

00H~FFH,共256字节,对其读写时用MOVX指令。

②作扩展I/O口使用

IO/M引脚高电平时,可根据命令字的规定从A、B、C口输入输出,

共有20条输入输出线,

③扩充一个14位定时器计数器

8155提供一个14位减1计数器,它的功能主要用于计数,从TIMER IN端输入计数脉冲,计数满时由TIMER OUT输出脉冲或方波。

使用步骤:

写入控制命令字的D7、D6位控制启停。

写入计数长度:端口地址04H的8位为计数器的低8位

端口地址05H的低6位为计数器的高6位,共14位。

05H的高2位确定当计数器时减到0时的输出方式。P137页

7.8155与8031CPU的连接方法:

8155片内带有地址锁存器,可在ALE的下降沿锁存地址,不必在外部另接锁存器。

由上图得到8155各端口的地址为:

P2.7 = 0 ,片选CE有效;P2.0 = 1,则为端口地址

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0

0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 命令状态口7F00H

0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 PA口7F01H

0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 PB口7F02H

0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 PC口7F03H

0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 定时器低位7F04H

0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 定时器高位7F05H

P2.7 = 0,片选CE = 0,且P2.0 = 0则为8155片内RAM地址:

7E00H~7EFFH 共256字节。

8155的基本操作软件:

①I/O口及8155RAM的操作软件:

MOV DPTR , #7F00H ;选命令状态口

MOV A, #0C2H ;送命令字1 1 0 0 0 0 1 0 MOVX @DPTR , A ;A口输入、B口输出、C口输入MOV DPTR , #7F01H ;选A口

MOVX A , @DPTR ;从A口输入数据

MOV DPTR , #7E30H ;选8155RAM的30H单元

MOVX @DPTR , A ;将A口输入的数据存入30H单元MOV DPTR , #7F02H ;选B口

MOVX @DPTR , A ;将A口输入的数据转从B口输出

②计数器的软件:

MOV DPTR , #7F04H ;选计数器低8位

MOV A , #18H

MOVX @DPTR , A ;计数常数24装入计数器低8位

1NC DPTR ;选计数器高位

MOV A, #40H

MOVX A ,@DPTR ; 高2位01选择输出方式为连续方波

其低6位为计数器的高6位为00H

相关主题