51单片机的准双向I/O口在使用前必须进行写1操作,但上电时,单片机默认为高电平,即还需要进行写1操作不?
展开全部
这是一个古老的问题,对于现在的单片机,其实不存在这个问题,但是讲解一下还是好的.
这个要从微电子角度回答:这里,我以P2为例子,其他口一样
单片机的P2口是双向口,就是可以输入,输出,不需要先进行设置,而其他单片机则不然,比如AVR单片机,你想要输出数据,你先要把引脚设置成输出状态,再决定向输出寄存器写0还是1,从而达到输出低电平或者高电平,你想要读入数据,先要把引脚设置成输入状态,再让CPU读输入寄存器.
而51单片机是双向口,所以只有一个P2寄存器,不存在P2的输出寄存器或者P2的输入寄存器,只有一个P2.
那么,单片机复位的时候,P2的引脚是高电平,那么P2的寄存器是什么呢?一定是0xFF吗?
不一定,这里涉及两个概念,P2寄存器,P2引脚,所以,先要执行 P2 = 0xFF,这是把P2的寄存器设置成0xFF这时候,同时也是保证了P2寄存器与P2引脚的可靠联通,这样,再读取P2引脚的时候,P2寄存器就能保证与P2引脚一致了.
如果没有这句,有可能P2的引脚虽然是高电平,但是没有与P2寄存器可靠联通,从而误判断,明明P2引脚全是高电平,P2的寄存器却有一个低电平在里面......
当然,随着后续工艺的改进,这个问题在现在的51单片机上几乎不存在了
这个要从微电子角度回答:这里,我以P2为例子,其他口一样
单片机的P2口是双向口,就是可以输入,输出,不需要先进行设置,而其他单片机则不然,比如AVR单片机,你想要输出数据,你先要把引脚设置成输出状态,再决定向输出寄存器写0还是1,从而达到输出低电平或者高电平,你想要读入数据,先要把引脚设置成输入状态,再让CPU读输入寄存器.
而51单片机是双向口,所以只有一个P2寄存器,不存在P2的输出寄存器或者P2的输入寄存器,只有一个P2.
那么,单片机复位的时候,P2的引脚是高电平,那么P2的寄存器是什么呢?一定是0xFF吗?
不一定,这里涉及两个概念,P2寄存器,P2引脚,所以,先要执行 P2 = 0xFF,这是把P2的寄存器设置成0xFF这时候,同时也是保证了P2寄存器与P2引脚的可靠联通,这样,再读取P2引脚的时候,P2寄存器就能保证与P2引脚一致了.
如果没有这句,有可能P2的引脚虽然是高电平,但是没有与P2寄存器可靠联通,从而误判断,明明P2引脚全是高电平,P2的寄存器却有一个低电平在里面......
当然,随着后续工艺的改进,这个问题在现在的51单片机上几乎不存在了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
51单片机的准双向I/O口在使用前并不一定要进行写1操作,从来没见过有这方面的硬性规定。根据应用的实际需要,写0也是完全可以的。但上电复位时,单片机确实将IO置1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用了的啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询