MCS-51 I/O口扩展

news/2025/2/21 8:28:27/

I/O口扩展的概述

I/O(输入/输出)接口是MCS-51与外设交换数字信息的桥梁。

I/O扩展也属于系统扩展的一部分。

真正用作I/O口线的只有P1口的8位I/O线和P3口的某些位线。

I/O接口电路具有以下功能:

  1. 实现和不同外设的速度匹配

大多数的外设的速度很慢,无法和us量级的单片机速度相比。

单片机只有在确认外设已为数据传送做好准备的前提下才能进行I/O操作。

想知道外设是否准备好,需I/O接口电路与外设之间传送状态信息。

  1. 输出数据锁存

由于单片机工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。I/O电路应具有数据锁存器,以保证接收设备接收。

  1. 输入数据三态缓冲

单片机具有多个输入设备时,使得数据总线上面可能挂有多个数据源,为不发生冲突,只允许当前正在进行数据传送的数据源使用数据总线,其余的应处于隔离状态。

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的指令和控制信号。

  1. 统一编址方式(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输出

  1. 方式2

只有A口才能设定为方式2.

在方式2下,PA7~PA0位双向I/O总线。

当输入时,PA7~PA0受STBA*和IBFA控制,其工作过程和方式1输入时相同;

当输出时,PA7~PA0受OBFA*、ACKA*控制,其工作过程和方式1输出时相同。

方式2工作示意图

8255A接口应用举例1

8255A与8031接口电路

  1. 硬件接口电路

8031扩展1片8255A的电路图。74LS373是地址锁存器,P0.1、P0.0经74L373与8255A的地址线A1、A0连接;P0.7经74LS373与片选端相连,其他地址线悬空。

  1. 端口地址确定

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


http://www.ppmy.cn/news/832523.html

相关文章

单片机并行口I/O接口扩展

对I/O端口的操作采用外部RAM操作相同的指令: 输出指令 MOVX DPTR,AMOVX Ri,A 输入指令 MOVX A,DPTRMOVX A,Ri 1. 8255各个端口的操作 端口地址: P2.7 ~ P2.0 P0.7 ~ P0.0 PA口地址: 0111 1111 1111 1100B 7FFCH PB口地址&#xff…

arm仿真器接口定义

ULINK2 JTAG/SWD接口 ULINK2接口是如何定义的? 下面为ULINK2接口定义: 仿真器端口 连接目标板 备注   1. VCC   MCU电源VCC VCC   2. VCC   MCU电源VCC VCC   3. TRST   TRST Test ReSeT/ pin   4. GND   GND或悬空   …

51单片机驱动RC522模块

最近在某宝上买了一块RC522模块,试玩了下,读写卡正常。想学习使用新的东西时,有必要了解它的工作原理和工作过程,不清楚或者不知道的可以参考相关数据手册和参考文献,在这里为了节省自己的时间,我只对我的5…

从零实现 IIC 、拓展IO口芯片PCF8574T

前言: ST的IIC因为专利问题十分不好用,所以我们需要用GPIO来模拟IIC,IIC一共两根线,SDA、SCL。那么也能看出来,是半双工通讯方式。 本次实验主要是使用PCF8574T,它是一个专门用于拓展IO口的芯片&#xff…

实战技能分享,各种数据类型的SPI, UART, I2C,FDCAN等方式的通信传输以及存储到EEPROM, Flash等设备的简易实现方法

目录 背景知识 F1编程手册: F3和F4编程手册: F7和H7编程手册: 各种数据类型编程EEPROM,SPI Flash等存储器的简易方法 各种数据类型的SPI,UART,I2C,FDCAN等传输问题 实战案例:…

Python第二天之容器学习

1.List 容器无非就增删改查 1.添加 name_list [aaa,bbb,ccc,ddd] name_list.append(b1) name_list.insert(1,xxx) print(name_list)append 是在后面追加 而insert是自己定义下表插入 name_list [aaa,bbb,ccc,ddd] name_list2 [qqq,222,111] name_list.extend(name_list…

基于STM32F4实现串口1+DMA中断+环形队列的数据收发处理

基于STM32F4实现串口1DMA中断环形队列的数据收发处理 用法简介总体方案环形队列的实现串口配置串口接收DMA配置串口发送DMA配置注意事项 总结 用法简介 串口加环形队列基本满足普通单片机的数据收发处理,实现起来简单可靠,但实际项目中会出现多个串口连…

PLC、STM32单片机、PC端485modbus通信调试过程

设备明细: PLC:埃森ARS-010-32PLC,软件AR Logic Editor。 单片机:STM32F103RCT6,软件keil。 测试软件:modbus串口调试软件、modbus poll。 调试过程: PLC:从机,站号1 …