51单片机的兼容机型有哪些?有什么作用??

51单片机P0端口的结构及工作原理读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。P0端口是8031单片机的总线口,分时出现数据D7一D0、低8位地址A7一AO,以及三态,用来接口存储器、外部电路与外部设备。

51单片机P0口的结构及工作原理

P0口8位之一的结构图如下图所示:

51单片机的兼容机型有哪些?有什么作用??

从上图可以看出,P0口由锁存器、输入缓冲器、开关、与非门、与门和场效应晶体管驱动电路组成。 看右图,图标标注为P0.X引脚,表示P0.X引脚。 电路组成。

用作 I/O 端口时如何工作

当P0口作为I/O口时,多路开关的控制信号为0(低电平)。 看上图中的接线部分,多路开关的控制信号同时与与门的输入端同相。 好啦,我们知道与门的逻辑特性是“全1都为1,全0都为0”。 那么如果控制信号为0,那么与门的输出也是0(低电平),与门的输出为0,V1管截止。 当多路控制开关的控制信号为0(低电平)时,多路开关接锁存器的Q非端(即P0口作为I/O口线)。

P0口作为I/O口线,其工作过程是从数据总线向引脚输出(即输出状态Output):当写锁存信号CP有效时,数据总线的信号→锁存器输入端D→锁存器反向输出Q非端→多路开关→V2管栅极→V2漏极至输出端P0.X。 前面我们已经说过,当多路开关的控制信号为低电平0时,与门的输出为低电平,V1管截止,所以当用作输出口时,P0为开漏输出,类似于OC Gate,当驱动器连接电流负载时,需要外部上拉电阻。

下图是内部数据总线向P0口输出数据的流程图(红色箭头)。

51单片机的兼容机型有哪些?有什么作用??

P0口作为I/O口线,其工作过程是从引脚输入到内部数据总线(即输入状态输入):数据输入(读P0口)有两种情况

1. 读取引脚

读取芯片引脚上的数据。 读取引脚号时,读取引脚缓冲区打开(即三态缓冲区的控制端必须有效)并通过内部数据总线输入。 请参见下图(红色标题)。

51单片机的兼容机型有哪些?有什么作用??

2. 读锁存器

通过打开读锁存三态缓冲器来读取锁存输出Q的状态,见下图(红色箭头):

51单片机的兼容机型有哪些?有什么作用??

在输入状态下,从锁存器读取的信号和从引脚读取的信号一般是一致的,但也有例外。 例如,当内部总线输出低电平时,锁存器Q=0,QN=1,场效应晶体管T2导通,端口线处于低电平状态。 此时,无论端口线上的外部信号是低电平还是高电平,从该引脚读入单片机的信号始终为低电平,因此无法正确读取该端口引脚上的信号。 又例如,当内部总线输出高电平时,锁存器Q=1,Q=0,场效应管T2截止。 如果外部引脚信号为低电平,则从该引脚读取的信号与从锁存器读取的信号不同。 为此,8031单片机对P0~P3端口的输入操作有如下约定: 为此,8051单片机对P0~P3端口的输入操作有如下约定: 属于到读-修改-写模式,从锁存器读取信号,其他指令从端口引脚线读取信号。

读-修改-写指令的特点是信号从端口输入(读),在单片机中操作(修改),然后输出(写入)到端口。 以下是读取-修改-写入指令的几个示例。

ANL P0,#立即数; P0→立即数 P0 ORL P0, A P0→AP0 INC P1 P1+1→P1 DEC P3 P3-1→P3 CPL P2 P2→P2

这样做的原因是读-修改-写指令需要获取端口原来的输出状态,修改后输出。 读取锁存器而不是读取引脚可以避免由于外部电路而错误地读取原始端口状态。 。

P0口是8031单片机的总线口。 它具有分时数据D7至D0、低8位地址A7至AO以及三种状态,用于与存储器、外部电路和外部设备接口。 P0口是应用最广泛的I/O口。

作为地址/数据复用端口时的工作原理

端口P0用作访问外部存储器时的地址/数据复用端口。

此时多路开关的‘控制’信号为‘1’,‘与门’解锁,‘与门’的输出信号电平由‘地址/数据’线信号决定; 多路开关接反相器的输出端,地址信号通过“地址/数据”线→反相器​​→V2场效应管栅极→V2漏极输出。

例如:当控制信号为1、地址信号为“0”时,与门输出低电平,V1管截止; 反相器输出高电平,V2管导通,输出脚地址信号为低电平。 请看下图(蓝色字体表示级别):

51单片机的兼容机型有哪些?有什么作用??

反之,控制信号为“1”,地址信号为“1”,“与门”输出高电平,V1管导通; 反相器输出低电平,V2管截止,输出脚地址信号为高电平。 请看下图(蓝色字体表示级别):

51单片机的兼容机型有哪些?有什么作用??

可见,输出“地址/数据”信息时,V1、V2管交替导通,带负载能力很强。 它们可以直接连接到外设存储器,无需添加总线驱动程序。

端口 P0 也用作数据总线。 访问外部程序存储器时,P0口输出低8位地址信息后,将成为读取指令代码(输入)的数据总线。

取指令期间,“控制”信号为“0”,V1管截止,多路开关也转向锁存器反相输出端Q; CPU自动将0FFH(11111111,即向D锁存器写入高电平‘1’)写入P0口锁存器,从而关闭V2管。 在读引脚信号的控制下,通过读引脚三态门电路将指令代码读取到内部总线。如下图

51单片机的兼容机型有哪些?有什么作用??

如果指令是输出数据,如MOVX@DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM),则多路开关“控制”信号为‘1’,且“与门”解锁,与输出地址信号的流程类似,数据从“地址/数据”线→反相器​​→V2场效应管栅极→V2漏极输出。

如果指令是输入数据(读外部数据存储器或程序存储器),如MOVX A、@DPTR(通过P0口数据总线将外部RAM的某个存储单元的内容输入到累加器A中),则输入数据仍然通过 读取引脚三态缓冲区到内部总线的过程与上图读取指令代码流程图类似。

从上面的分析可以看出,当P0作为地址/数据总线时,在读取指令代码或输入数据之前,CPU会自动向P0口锁存器写入0FFH,破坏了P0口原有的状态。 因此,它不能再用作通用I/O端口。 大家以后设计系统的时候一定要注意,就是程序中不能再含有使用P0口作为操作数的指令(包括源操作数和目的操作数)。

单片机

单片机和嵌入式的开发者是怎样的一种体验?

2024-1-23 16:58:41

单片机

51单片机的最小系统电路图--复位电路分析

2024-1-23 17:58:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索