380 likes | 540 Views
第 9 章 MCS-51 扩展 I/O 接口的设计. 一、复习. 二、 I/O 接口扩展概述. 三、 MCS-51 与可编程并行 I/O 芯片 8255A 的接口. 8255A 芯片介绍. 工作方式选择控制字及 C 口置位 / 复位控制字. 8255A 的三种工作方式. MCS-51 单片机和 8255A 的接口. 第 8 章 思考题. 1 .在 MCS-51 单片机系统中,外接程序存储器和数存储器 共 16 位地址线和 8 位数据线,为何不会发生冲突? 2 .区分 MCS-51 单片机片外程序存储器和片外数据存储器 的最可靠的方法是:
E N D
第9章 MCS-51扩展I/O接口的设计 一、复习 二、I/O接口扩展概述 三、 MCS-51与可编程并行I/O芯片8255A的接口 8255A芯片介绍 工作方式选择控制字及C口置位/复位控制字 8255A的三种工作方式 MCS-51单片机和8255A的接口
第8章 思考题 1.在MCS-51单片机系统中,外接程序存储器和数存储器 共16位地址线和8位数据线,为何不会发生冲突? 2.区分MCS-51单片机片外程序存储器和片外数据存储器 的最可靠的方法是: (1)看其位于地址范围的低端还是高端 (2)看其离MCS-51芯片的远近 (3)看其芯片的型号时ROM还是RAM (4)看其是与 3.在存储器扩展中,无论是线选法还是译码法,最终都 是为扩展芯片的( )端提供信号。 4.起止范围为0000H~3FFFH的存储器的容量是( )KB。 信号连接还是与 信号连接
5.在MCS-51中,PC和DPTR都用于提供地址,但PC是为访5.在MCS-51中,PC和DPTR都用于提供地址,但PC是为访 问( )存储器提供地址,而DPTR是为访问( )存储器提 供地址。 6.11根地址线可选( )个存储单元,16KB存储单元需要 ( )根地址线。 7.32KB RAM存储器的首地址若为2000H,则末地址为( )H。 8.现有8031单片机、74LS373锁存器、1片2764 EPROM 和两片6116 RAM,请使用它们组成一个单片机应用系统, 要求: (1)画出硬件电路连线图,并标注主要引脚; (2)指出该应用系统程序存储器空间和数据存储器空间各 自的地址范围。
编程练习: ABC: MOV A,#00H MOV DPTR,#0000H MOV R0,#00HLOOP: ADD A,#1 DA A ANL A,#0FH ;总在0到9之间MOVX @DPTR,A INC DPTR DJNZ R0,LOOP ;载入256个RET • 向6264中写入256个字节,分别是0~9,然后0~9… …直到写满256个字节,从0000H写起。
9.1 I/O接口扩展概述 I/O扩展也属于系统扩展的一部分。I/O (输入/输出)接口是MCS-51与外设交换数字信息的桥梁。 MCS-51真正用作I/O口线的只有P1口的8位I/O线和P3口的某些位线。在多数应用系统中,MCS-51单片机都需要外扩I/O接口电路。 I/O接口电路应满足以下要求: 1.实现和不同外设的速度匹配 2. 输出数据锁存 3. 输入数据三态缓冲
9.1.1 I/O接口的功能 1.实现和不同外设的速度匹配 大多数的外设的速度很慢,无法和µs量级的单片机速度相比。单片机只有在确认外设已为数据传送做好准备的前提下才能进行I/O操作。 想知道外设是否准备好,需I/O接口电路与外设之间传送状态信息。
2. 输出数据锁存 由于单片机工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。I/O电路应具有数据输出锁存器,以保证接收设备接收。 3. 输入数据三态缓冲 输入设备向单片机输入数据时,但数据总线上面可能“挂”有多个数据源,为不发生冲突,只允许当前正 在进行数据传送的数据源使用数据总线,其余的应处于隔离状态。
9.1.2 I/O端口的编址 首先清楚I/O接口(Interface)和I/O端口(Port)的概念。 I/O端口:简称I/O口,指具有端口地址的寄存器或缓冲器。 I/O接口:是指单片机与外设间的I/O接口芯片。 一个I/O接口芯片可以有多个I/O端口,分为: (1)数据口(2)命令口(3)状态口 I/O端口编址是给I/O接口中的所有寄存器编址。
I/O端口编址两种方式:独立编址与统一编址。 1.独立编址方式 I/O寄存器地址空间和存储器地址空间分开编址,但 需专门读写I/O的指令和控制信号。 2.统一编址方式 I/O寄存器与数据存储器单元同等对待,统一编址。 不需要专门的I/O指令,直接使用访问数据存储器 的指令进行I/O操作,简单、方便且功能强。 MCS-51使用统一编址的方式 每一接口芯片中的一个功能寄存器(端口)的地址就 相当于一个RAM单元。
9.1.3 I/O数据的几种传送方式 I/O数据传送的几种传送方式是: (1)同步传送(2)异步传送(3)中断传送。 为实现和不同的外设的速度匹配,I/O接口必须根据不同外设选择恰当的I/O数据传送方式。 (1)同步传送方式(无条件传送) 当外设速度和单片机的速度相比拟时,常采用同步传 送方式,最典型的同步传送就是单片机和外部数据 存储器之间的数据传送。
(2)查询传送方式(条件传送,异步式传送)(2)查询传送方式(条件传送,异步式传送) 查询外设“准备好”后,再进行数据传送。 优点:通用性好,硬件连线和查询程序十分简单, 缺点:效率不高。 (3)中断传送方式 外设准备好后,发中断请求,单片机进入与外设数据传送的中断服务程序,进行数据的传送。 中断服务完成后又返回主程序继续执行。工作效率高。.
常用的外围I/O接口芯片有: (1)8255A:可编程的通用并行接口电路(3个8位I/O口)。 (2)8155H:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口, 256个RAM字节单元,1个14位的减法定时器/计数器)。 此外,74LS系列的TTL电路也可以作为MCS-51的扩展I/O口,如74LS244、 74LS273等。
9.2 MCS-51与可编程并行I/O芯片8255A的接口 9.2.1 8255A芯片介绍 8255A是Intel公司生产的可编程并行I/O接口芯片, 具有3个8位的并行I/O口,3种工作方式,可通过 编程改变其功能,因而使用灵活方便,通用性强。 根据上述功能描述,构想芯片的内部框图,构想引脚分配。
2.引脚说明 40只引脚,双列直插式封装,引脚功能如下: 留意GND、Vcc的位置!
D7~D0:三态双向数据线,与单片机数据总线连接D7~D0:三态双向数据线,与单片机数据总线连接 CS*:片选信号线,低电平有效,表示本芯片被选中 RD*:读出信号线,控制8255A中数据的读出高 WR*:写入信号线,控制向8255A数据的写入。 Vcc:+5V电源。 PA7~PA0:A口输入/输出线。 PB7~PB0:B口输入/输出线。 PC7~PC0:C口输入/输出线。 A1、A0:地址线,用来选择8255A内部的4个端口。
3.8255A内部资源的详细解读 (1)端口A、B、C 功能和结构上有些差异: PA口、PB口、 PC口均有输出锁存器和缓冲; PA口有输入锁存,而PB口、 PC口没有; 而PB口、 PC口有输入缓冲器 PC口可在软件的控制下,分为两个4位端口,作为 PA口、PB口选通方式操作时的状态控制信号。
(2)A组和B组控制电路 A组:PA口和PC口的上半部(PC7~PC4); B组:PB口和PC口的下半部(PC3~PC0),可根据“命 令字”对PC口按位“置1”或“清0”。 (3)数据总线缓冲器 三态双向,作为8255A与单片机数据线之间接口, 传送数据、指令、控制命令及外部状态信息。 (4)读/写控制逻辑电路线 该电路接收CPU发来的控制信号、RESET、地址信号A1、A0等。对端口进行读写。 各端口的工作状态与控制信号的关系如表9-1所示。
9.2.2 工作方式选择控制字及C口置位/复位控制字 8255A有三种工作方式: (1) 方式0:基本输入输出; (2) 方式1:选通输入输出; 只有对8255A写入了控制字以后,8255A的各功能才有效。 (3) 方式2:双向传送(仅A口有)。 1.工作方式选择控制字 2.C口按位置位/复位控制字 三种工作方式由方式控制字来决定。 控制字格式如下。
例如:PA口作基本输入、PB口作基本输出,方式字如何?例如:PA口作基本输入、PB口作基本输出,方式字如何? 10010000B
其中A口可工作于方式0、1、和2,而B口只能工作在其中A口可工作于方式0、1、和2,而B口只能工作在 方式0和1。工作方式分别选取。 C口上半部分(PC7~PC4)随A口称为A组, C口下半部分(PC3~PC0)随B口称为B组。 例如:写入工作方式控制字 可将8255A编程为:A口方式0输入,B口方式1输出, C口的上半部分(PC7~ PC4)输出,C口的下半部分 (PC3~PC0)输入。 10010101B(95H)
控制字07H写入控制口:置“1” PC3 08H写入控制口,清“0” PC4 2. C口按位置位/复位控制字 可对C口8位中的任一位置“1”或清“0”。用于位控。 8255A只有一个控制字寄存器,但可以写两种控制字,用D7区分。
9.2.3 8255A的三种工作方式 1.方式0:基本的输入/输出方式。 MCS-51可对8255A进行数据的无条件传送 基本功能为: (1)具有两个8位端口(A、B)和两个4位端口(C的上半部分和下半部分)。 (2)任一个端口都可以设定为输入或输出,各端口的输入、输出可构成16种组合。 (3)数据输出锁存,输入不锁存。
例如:从口线读入一组开关状态,向端口输出数字量,控制一组指示灯的亮、灭。不需要联络信号。例如:从口线读入一组开关状态,向端口输出数字量,控制一组指示灯的亮、灭。不需要联络信号。 举例: 假设8255A的控制字寄存器地址为FF7FH,则令A口 和C口的高4位工作在方式0输出, B口和C口的低4位 工作于方式0输入,初始化程序: 10000011B MOV DPTR,#0FF7FH ;控制字寄存器地址送DPTR MOV A,#83H ;方式控制字83H送A MOVX @DPTR,A ;83H送控制字寄存器
2. 方式1: 选通输入/输出工作方式。 A口和B口通常用于I/O数据传送,C口用作A口和B口的联络线,以中断方式传送数据。 (1) 方式1输入 控制联络信号如图9-5所示,STB*与IBF构成了一对应答联络信号,联络信号的功能如下图:
STB*:选通输入,是由输入外设送来的输入信号。STB*:选通输入,是由输入外设送来的输入信号。 IBF:输入缓冲器满,输出高电平有效,表示数据已送入 8255A的输入锁存器; 外设收到IBF置高信号后,置高STB*,使8255A在PC3上产生中断申请,请求单片机从8255A上读取数据。 从8255A上读取数据后会撤销INTR的中断申请,并使IBF变低,通知外设准备下一个数据。 INTR:中断请求信号,高电平有效。由8255A输出,向单片机发中断请求。 INTE A:A口中断允许,由PC4控制, INTE B:B口中断允许,由PC2控制。
A口的方式1输入工作方式见图9-6。 PA7~PA0
谁先有动静? (2)方式1输出 如图9-7所示。OBF*与ACK*构成了一对应答联络信号,各信号的功能如下:
主动用MOVX送数据到8255 B口的方式1输出如图9-8所示: 收到呼叫然后收数据,并告知对方 响应中断以发送下一个数据
OBF*:输出缓冲器满信号,8255A给外设的联络信号,外设可以将数据取走。OBF*:输出缓冲器满信号,8255A给外设的联络信号,外设可以将数据取走。 ACK*:外设的响应信号,外设已将数据取走。 INTR*:中断请求信号。表示该数据已被外设取走, 请求单片机继续输出下一个数据。 INTE A:中断允许,由PC6控制。 INTE B:中断允许,由PC2控制。
3.方式2 只有A口才能设定为方式2。图9-9为方式2工作示意图。 在方式2下,PA7~PA0为双向I/O总线。 当输入时,PA7~PA0受STBA*和IBFA控制,其工作 过程和方式1输入时相同; 当输出时,PA7~PA0受OBFA*、ACKA*控制,其工作 过程和方式1输出时相同。
9.2.4 MCS-51单片机和8255A的接口 1.硬件接口电路 如图9-10是8031扩展1片8255A的电路图。74LS373是地 址锁存器,P0.1、P0.0经74LS373与8255A的地址线A1、A0 连接; P0.7经74LS373与片选端相连,其他地址线悬空。 2.端口地址确定 图9-10中8255A各端口寄存器的地址为: A口:FF7CH B口:FF7DH C口:FF7EH 控制寄存器:FF7FH
3.软件编程 例9-1要求8255A工作在方式0,且A口作为输入,B口、 C口作为输出,程序如下: MOV A,#90H ;A口方式0输入,B口、 ;C口输出的控制字送A MOV DPTR,#0FF7FH ;控制寄存器地址→DPTR MOVX @DPTR,A ;方式控制字→控制寄存器 10010000B MOV DPTR, #0FF7CH ;A口地址→DPTR MOVX A, @DPTR ;从A口读数据 MOV DPTR,#0FF7DH ;B口地址→DPTR MOV A,#DATA1 ;要输出的数据DATA1→A MOVX @DPTR,A ;将DATA1送B口输出 MOV DPTR,#0FF7EH ;C口地址→DPTR MOV A,#DATA2 ;DATA2→A MOVX @DPTR,A ;将数据DATA2送C口输出
控制字? 例9-2对端口C的置位/复位。 把PC5置位,控制字为0BH MOV R1,#7FH ;控制口地址→R1 MOV A,#0BH ;控制字→A MOVX @R1,A ;控制字→控制口,PC5=1 把PC5复位,控制字为0AH MOV R1,#7FH ;控制口地址→R1 MOV A,#0AH ;控制字→A MOVX @R1,A ;控制字→控制口,PC5=0