首先请看P0口的结构:
说明:
1。P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因.
2。P0作为一般端口时,T1就永远的截止,T2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,PO口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1.
3。其他端口P1 P2 P3,在内部直接将P1口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。
(以上来自中山单片机学习论坛,有删减)
4.在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的.而MUX的切换,又是根据单片机指令来区分的.当指令为外部存储器/IO口读/写时,比如 MOVX A,@DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传送指令操作P0口时,MUX是切换到内部总线上的.
PS:
Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called “quasi- bidirectional” ports.
我的e文不怎么样,参照金山在线后的解释:
因为端口1、2、3有固定的内部上拉,所以有时候他们被称为"准双向"口.
Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats.
端口0, 从另外一方面来说,就被 认为是"真正的"双向,因为当它被设置为输入的时候是浮空(高阻态)的.
本文为原创,转载请注明出处. 机器文学
用户1446235 2007-5-12 21:00
好,太好了!顶
wang1jin 2007-1-10 17:39
我现在慢慢学单片机.以后有机会多指点下.HE HE...
帮你多投几票.HE HE.
用户57362 2007-1-9 09:18
好谢谢!
用户1053025 2007-1-5 16:04
用户377340 2007-1-4 14:10