jianhong_wu 发表于 2016-1-27 15:29:58

为什么51单片机的IO口在读取数据时要先写1?已解答。

沐风-合肥:
为什么51单片机的IO口在读取数据时要先写1?

★坚鸿-深圳:
51的IO口都是靠上拉电阻输出高电平的,所以它的输出电流很小,驱动能力弱。你可以理解成,当你写0时内部某个开关闭合可以把上拉电阻制造出来的高电平强制拉低。但是当你写1时,相当于内部断开了某个开关所以悬空了所以这时上拉电阻就起作用了并且输出高电平,同时这个高电平是上拉电阻制造的,所以也有可能被你外部的电路拉低而且不会出现短路大电流的情况。并不是所有的单片机都要在读IO口时写1。PIC,stm8,stm32这类单片机读IO状态不用写1,因为它们不是准双向口,它们是真双向口。有兴趣你可百度查查“准双向口”,看看它内部的结构。另外要提醒一下,51单片机的P0口要自己在外面加上拉电阻,P1,P2,P3口读IO口状态时要先写1,但是P0口再读IO口状态时不用写1,P0口跟其它的P1,P2,P3口结构上有点不一样,但是P0口你先写1再读也没关系。

页: [1]
查看完整版本: 为什么51单片机的IO口在读取数据时要先写1?已解答。