51单片机P0口做输入口时需要先写一并且外接上拉电阻,是这样的吗?
51单片机P0口做输入口时需要先写1即可,外部不需要上拉电阻。其实,单片机上电复位时,P0已全部为置1状态,就可以直接读输入状态了。只有输出过低电平,再读输入状态时需先写1。否则,P0口从未输出过低电平,也不需要先写1就可以读。即便是先写1,对读输入状态没有影响。
为什么51单片机要接上拉电阻
其实,这个问题也只限于传统的51单片机,如8031,AT89C51。
因为P0口,是为了扩展外部存储器时,用作数据线的,因此内部作了准双向口,即是开漏输出的,就不能有上拉电阻。
但是,当P0口作为I/O口使用时,就必须在外部加上拉电阻,这样才能有高电平输出。
而其余的P1,P·2,P3在内部已经加了上拉电阻了,所以,在外部就不用再加了。
新型的STC单片机在P0口内部也加了上拉电阻了,在外部用不用加了,方便多了。
单片机中P0口作为输出为什么要上拉电阻?
上拉电阻就是从电源高电平引出的电阻接到输出。P0口作为IO口输出的时候时输出低电平为0输出高电平为高组态(并非5V,相当于悬空状态)。也就是说PO口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。
由于P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。
|