Chinaunix首页 | 论坛 | 博客
  • 博客访问: 457459
  • 博文数量: 134
  • 博客积分: 3056
  • 博客等级: 中校
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 15:53
文章分类
文章存档

2013年(1)

2010年(133)

我的朋友

分类: 嵌入式

2010-08-25 15:54:30

 
1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构。高电平时,V1打开,V2截止;低电平时,V1截止,V2打开。这种情况下不用外接上拉电阻。而且,当V1打开,V2截止,输出高电平的时候,因为内部电源直接通过V1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因。
 

2.P0作为一般端口时,V1就永远的截止,V2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,PO口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1。

3.其他端口P1 P2 P3,在内部直接将P1口中的V1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。

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.
因为端口1、2、3有固定的内部上拉,所以有时候他们被称为"准双向"口.

Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats.  
端口0, 从另外一方面来说,就被 认为是"真正的"双向,因为当它被设置为输入的时候是浮空(高阻态)的.


(1)在访问外部存储器时,P0口是一个真正的双向口,此时P2口作为地址的高8位,P0口作为地址的低8位和双向数据总线。
(2)
因为漏极为开路输出,所以当P0口作为通用I/O口使用时,所以需要外接上拉电阻。
       当使用P0口作为通用I/O口,例如接数码管段码时,就需要接上位电阻,7段数码管有8个段码,因此为接8个电阻作为上拉电阻,是不是太多了,一般使用排阻(8个电阻都集成在一起),使用排阻就可以大幅度减少印制电路板的面积。


ps: 附件解释了为什么要把P0口当通用IO口用时为什么要加上拉电阻

文件:谈谈AT89S51的上拉电阻问题.rar
大小:213KB
下载:下载
参考文章:
1. 
2. 
阅读(1246) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~