51单片机---IO口 (准双向口和双向口的区别)

时间:2024-03-13 15:41:12
MCS-51有4个双向并行IO口:P0、P1、P2、P3;其中,P0为三态双向口,其驱动能力比较大,可驱动高达8个TTL电路;P1、P2、P3为准双向口(作为输入时,口线需要被拉成高电平,故称准双向口),其负载能力比较低,只能驱动4个TTL电路;
一、P0口的结构
P0口既可以作为普通的IO口,也可以作为地址总线/数据总线,分时复用;
51单片机---IO口 (准双向口和双向口的区别)
P0口演示:
二、P1口的结构
P1口是MCS-51单片机中唯一一个仅有单功能的普通IO口,输出信号锁存在端口上,故又称为通用静态端口;
51单片机---IO口 (准双向口和双向口的区别)
P1口演示:
三、P2口的结构
与P1口相比,P2口多了一个控制结构;P2口除了可以作为普通的IO口使用,还可以作为地址总线的高8位;
51单片机---IO口 (准双向口和双向口的区别)
四、P3口的结构
与P1口相比,P3口增加了一个非门和一个缓冲器,使其各个端口线都两种功能选择;
51单片机---IO口 (准双向口和双向口的区别)
P3口的第二输出功能:
51单片机---IO口 (准双向口和双向口的区别)




准双向口和双向口的区别

在最初的51系列单片机中

P0口:双向8位三态I/O口

P1口:准双向8位I/O口

P2口:准双向8位I/O口

P3口:准双向8位I/O口

这里特别要主要准双向与双向三态I/O的区别:

P1口,P2口,P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻,当这三个准双向I/O口作输入口使用时,要想该口先写1,另外准双向I/O口无高阻的“浮空”状态。

而双向口P0口线内无固定上拉电阻,由两个MOS管串接,既可开漏输出(开漏输出)有可处于高阻的“浮空”状态,故称为双向三态I/O口。​

"准"就是"基本上"的意思.

P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态.

当P0口用于一般I/O口时,内部接Vcc的那个开关管是与引脚(端口)脱离联系的,这个时候,只有拉地的那个开关管其作用,P0口作为输出,是必须外接上拉电阻的,不然就无法输出高电平;如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这个时候,如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响(注意是对逻辑无影响,对实际参数有无影响我不确定,但是我认为是有的).

双向与准双向,根本原则是双向包含了高阻这个状态,而不在于是否需要先写1或者不写,P1~P3口因为有内部上拉电阻,因此无论如何不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成3态的转换,是双向,处于一般I/O口时,如果不接外部上拉,而且先向端口写了1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与它处于地址/数据功能时的自动双向有区别,以及与P1~P3处于输入时输出锁存器为1是有区别的。