I/O口扩展的概述
I/O(输入/输出)接口是MCS-51与外设交换数字信息的桥梁。
I/O扩展也属于系统扩展的一部分。
真正用作I/O口线的只有P1口的8位I/O线和P3口的某些位线。
I/O接口电路具有以下功能:
实现和不同外设的速度匹配
大多数的外设的速度很慢,无法和us量级的单片机速度相比。
单片机只有在确认外设已为数据传送做好准备的前提下才能进行I/O操作。
想知道外设是否准备好,需I/O接口电路与外设之间传送状态信息。
输出数据锁存
由于单片机工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。I/O电路应具有数据锁存器,以保证接收设备接收。
输入数据三态缓冲
单片机具有多个输入设备时,使得数据总线上面可能挂有多个数据源,为不发生冲突,只允许当前正在进行数据传送的数据源使用数据总线,其余的应处于隔离状态。
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端口编址两种方式:独立编址与统一编址
独立编址方式
I/O寄存器地址空间和存储器地址空间分开编址,但需专门读写I/O的指令和控制信号。
统一编址方式(MCS51采用这种方式)
I/O寄存器与数据存储器单元同等对待,统一编址。不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强。
每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个RAM单元。
I/O数据的几种传送方式
为实现和不同的外设的速度匹配,I/O接口必须根据不同的外设选择恰当的I/O数据传送方式。
I/O数据传送的几种传送方式是:
(1)同步传送(2)异步传送(3)中断传送
(1)同步传送(无条件传送)
当外设速度和单片机的速度相比拟时,常采用同步传送方式,最典型的同步传送就是单片机和外部数据存储器之间的数据传送。
(2)查询传送方式(条件传送,异步式传送)
查询外设“准备好”后,再进行数据传送。
优点:通用性号,硬件连续和查询程序十分简单
缺点:效率不高
(3)中断传送
外设准备好后,发中断请求,单片机进入与外设数据传送的中断服务程序,进行数据的传送。中断服务完成后又返回主程序继续执行。工作效率高
I/O口概述小结
原因:MCS51单片机本身提供的口线不多(P1、P3)
方法:MCS51单片机将外扩I/O和外部数据存储器统一编址,用户可以把一部分外部数据存储器的空间(64k)作为I/O地址,通过MOVX指令完成对外扩口的输入输出。
实现:采用专门的外围接口芯片8155、8255等,采用一般的TTL芯片74LS377,74LS373等。
可编程I/O芯片8255A的扩展
引脚及结构介绍
-3个8位并行口PA、PB、PC,PC可分为高4位与低4位
-D0~D7数据端口
-A, B两组控制电路
-双向三态数据接口
-控制总线接口
-复位控制RESET,高电平有效

8255A的端口

A1和A0控制PA端口,结合RD端口表示读端口A的信息,用于读取PA0~PA7的信息到D0~D7.此时写端口WR为1.
表示读状态时,A1和A0是00时表示PA端口,A1和A0是01时表示PB端口,A1和A0是10时表示PC端口。
当A1和A0是11时,表示的是写控制寄存器。
825A的三种工作方式
-方式0--------基本输入输出
-方式1--------选通输入输出
-方式2--------双向传送(仅PA口)
8255A的工作方式由控制字选择

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

C口按位置位/复位控制字(D7=0)

8255A的工作方式0(基本I/O方式)
-两个8位端口(PA口和PB口)和两个4位端口(PC 的高4位和低4位)
-任一个端口都可以输入输出
-输出锁存而输入不锁存
-数据无条件传送,不需要状态端口
8255A的工作方式1(选通I/O方式)
-可用作1或2个选通的输入或输出口
-每个端口包括8位数据口和3条固定的控制线
-可选择1个端口工作于方式1,余下的工作在方式0
-可选择2个端口都工作于方式1
1.工作于方式1下的端口
选通输入/输出工作方式。A口和B口通常用于I/O数据传送,C口用作A口和B口的联络线,以中断或查询的方式传送数据。
(1)方式1输入
STB*与IBF构成了一对应答联络信号,联络信号的功能如下图:

STB*:选通输入,是由输入外设送来的输入信号。
IBF:输入缓冲器满,高电平有效。表示数据已送入8255A的输入锁存器,它由STB*信号的下降沿置位,由信号的上升沿使其复位。
INTR:中断请求信号,高电平有效。由8255A输出,向单片机发中断请求。
INTE A:A口中断允许,由PC4的置位/复位控制,
INTE B:B口中断允许,由PC2的置位/复位控制。

(2)方式1输出
OBF*与ACK*构成了一对应答联络信号,各信号的功能如下:
OBF*:输出缓冲器满信号,8255A给外设的联络信号,外设可以将数据取走。
ACK*:外设的响应信号,外设已将数据取走。
INTR*:中断请求信号。表示该数据已被外设取走,请求单片机继续输出下一个数据。
INTE A:中断允许,由PC6的置位/复位控制,
INTE B:中断允许,由PC2的置位/复位控制。

2.B口的方式1输出

方式2
只有A口才能设定为方式2.
在方式2下,PA7~PA0位双向I/O总线。
当输入时,PA7~PA0受STBA*和IBFA控制,其工作过程和方式1输入时相同;
当输出时,PA7~PA0受OBFA*、ACKA*控制,其工作过程和方式1输出时相同。
方式2工作示意图

8255A接口应用举例1
8255A与8031接口电路

硬件接口电路
8031扩展1片8255A的电路图。74LS373是地址锁存器,P0.1、P0.0经74L373与8255A的地址线A1、A0连接;P0.7经74LS373与片选端相连,其他地址线悬空。
端口地址确定
8255A各端口寄存器的地址为:
A口: FF7CH
B口: FF7DH
C口: FF7EH
控制寄存器: FF7FH
可编程I/O芯片8155H的扩展
8155H芯片结构
-256字节RAM
-可编程8位并口PA、PB,6位并口PC
-一个14位减法定时器/计数器

-地址/数据总线(复用)
AD0~AD7
-控制总线
CE:片选信号线
IO/M:RAM存储器和I/O口选择线
RD:读选通信号线
WR:写选通信号
ALE:地址锁存允许端
RESET:芯片复位信号
-I/O线
PA0~PA7; PB0~PB7; PC0~PC5
TIMER IN : 定时器/计数器脉冲输入端
TIMER OUT:定时器/计数器输出,信号形式取决于工作方式
-电源
Vcc:+5V;Vss:地

IO/M=0时,对8155H的256个RAM寻址,RAM地址的低8位为00H~FFH
IO/M=1时,对8155H的I/O寻址。注意命令口、状态口使用同一地址,写入的是命令口,读出的是状态口。

可编程RAM/IO芯片8155H命令字
命令字功能:设置A, B, C口工作方式 设置是否允许中断 控制定时器/计数器的运行

反映芯片运行状态
-I/O口工作状态
-定时器/计数器计数是否结束

815中14位减法定时器/计数器格式
定时器/计数器的4种工作方式

8155的使用
8155作为输入输出口的使用,同8255;
对于8155内的RAM操作,等同于片外RAM,要明确地址,使用MOVX指令存取。
8155定时器的使用(最常用的是作为连续方波发生器)
-作为连续方波发生器使用时,在计数初值N为偶数时,N/2时间为高电平,N/2时间为低电平;当计数初值N为奇数时,(N+1)/2时间为高电平,(N-1)/2时间为低电平。
-最高计数脉冲的频率4MHZ。
采用74系列芯片进行简单的并口扩展电路
74LS377
功能说明:74LS377是8D锁存器。20个管脚,8个输入(D0~D7)、8个输出(Q0~Q7)、一个片选E、一个锁存端(CLK)上升沿有效,另外,还有电源、地。

74LS273作为输出口
功能说明:74LS273是8D锁存器,20个管脚,8个输入(D0~D7)、8个输出(Q0~Q7),一个清零端(CLR),一个锁存端(CLK),上升沿有效,另外还有电源、地。

74LS244作为输入口
功能说明:74LS244是8个三态线驱动器,20个管脚,2个4输入端(1A1~1A4)、(2A1~2A4);2个4输出端(1Y1~1Y4)(2Y1~2Y4),两个控制端1G,2G(低电平有效,否则三态输出),另外,还有电源、地。

74LS165芯片引脚
P0~P7:并行数据输入口
SER:串行数据输入口,可进行多片165的级联
Q7:串行数据输出口
CLK1,CLK2:串行数据移位脉冲,只使用一个端口CLK1即可,令CLK2接0.
PL:并行数据输入有效信号,低电平时并行数据输入口的数据进入内部寄存器,变为高电平后才允许移位输出。

计数器芯片8253的扩展及应用
8253芯片介绍
芯片结构:三个16位减计数器,最高外频2.6MHz
芯片引脚功能介绍:
--D0~D7:8位数据线
--A0, A1:地址线
--CS:片选线
--WR:写信号线
--RD:读信号线
--OUT:计数器输出
--CLK:计数器输入
--GATE:门控位,控制计数器计数


计数器8253
