原创 [转]双向IO口和准双向IO口

2015-11-6 20:59 2227 16 18 分类: MCU/ 嵌入式

C51的说明书上说:”Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called quasi-bidirectional

ports. When configured as inputs, they pull high and source current (IIL) when externally pulled low.  Port 0, on the other

hand, is considered truly bidirectional, because it floats when configured as an input. "
翻译是:因为P123有固定的内部上拉电阻,所以有时称它们为准双向口。当用做输入时被拉高,低则要靠外部电路拉低。而P0则是真双向口,因为作为输入时它是悬浮的(因为没有上拉电阻)。

http://img.blog.csdn.net/20141029111200495?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenlib3kyMDAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

http://img.blog.csdn.net/20141029111253145?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenlib3kyMDAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

不是很清晰易懂.
我很纳闷,这么重要的一个问题,为什么教科书、老师都没有好好的讲清楚,包括我自己经历的也是这样.我也是一直被这个问题捆饶了很久

.我说说我的看法:
像上面说的一样,"准"就是"基本上"的意思.
其实重点在P0口.
P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态

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

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

单片机的P0~P3端口进行输入时为什么要设置为1

给锁存器写1,那么锁存器的反向端就输出0,那么和它相接的MOS管也就在截状态,也就是呈高阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果不写1,那么锁存器上次锁存的可能为0,那么反向端有可能出现1,这样和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你P0口上输入什么信号都会拉成低电平,输入就错了.

为什么我输入没设置1,还是正确的呢?

一般情况下,单片机复位后P0-P3端口默认值为1,如果仅作为输入,中途不改变,无需我们先设置1.

双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1, 是扯淡!!!!

文章评论2条评论)

登录后参与讨论

用户377235 2015-11-13 11:11

地球人都知道,而LZ却搞的象发现新大陆一样

用户377235 2015-11-12 15:21

在技术手册里都有写,p0不带上拉,不像stm8,avr有可编程的上拉.
相关推荐阅读
用户450531 2015-11-14 10:53
[转]LocalBus总线接口参考2
  原文网址:http://wenku.baidu.com/link?url=s6vfSUEYn654_R3Btr4nFXSvjxsq1MGmhUcWmmmHRO7TexJBOSkPK59wF26cE...
用户450531 2015-11-14 10:50
[转]LocalBus总线接口参考1
  原文网址: http://wenku.baidu.com/link?url=s6vfSUEYn654_R3Btr4nFXSvjxsq1MGmhUcWmmmHRO7TexJBOSkPK59wF26c...
用户450531 2015-11-13 22:54
[整理]FPGA编码规范
  规范编码,越早越好—— 开始FPGA学习的准备——   FPGA编码规范,下面内容来自网络资料 1. 遵循代码编写规范书写的代码,很容易阅读、理解、维护、修改、跟踪调试、整理文档。相反代码编写风...
用户450531 2015-11-12 22:12
[转]模拟集成电路九段
从博客上看的到一篇整理文章,模拟集成电路如果是这么九段,那现在估计还在0段-1段之间,模电基础太差,总是有雾里看花的感觉,希望以后慢慢恶补上来。文章先转载过在这里,作勉。原文地址:http://bbs...
用户450531 2015-11-04 23:24
反射式滤波器和吸收式滤波器
反射式滤波器和吸收式滤波器等参考:...
我要评论
2
16
关闭 站长推荐上一条 /2 下一条