单片机的P2口和P0口有什么联系
单片机的P2口和P0口有什么联系,我在P0接LCD,还有P2接CC1100时,P0口无数据输出而P2口一切正常,当我把P0接CC1100,还有P2接LCD时,管脚的定义也...
单片机的P2口和P0口有什么联系,我在P0接LCD,还有P2接CC1100时,P0口无数据输出 而P2口一切正常,当我把P0接CC1100,还有P2接LCD时,管脚的定义也改回来了,这样一切都正常了,这是为什么?跪求解释
展开
5个回答
展开全部
单片机的P0中是集电集开路输出,也叫OC门(真对TTL型逻辑),或者是OD门,源级开路(真对MOS芯片)。所以要在P0口加上一个上拉电阻,这样P0口才会有高电平输出。P0口的低电平驱动能力要比其他口大,最大的可以达到几十个毫安。这是把这个口单独当成普通IO口使用时要注意的。
P0口和P2口在当成地址总线时,这两个口是用来一起进行外部存储器寻址用的。这个时候P0口是低八位地址,P2口是高八地址。加起来一共是16位地址。也就是可以寻址64KB的存储器空间。当你用汇编语言指令MOVX访问外部数据存储器的时候就是这种情况。这个地址在这个时候是存在DPTR的这个16位寄存器里的。而数据是对P0口分时复用的,数据是走P0口的。
当你要访问程序存储器的时候,用MOVC指令,同样要先设置DPTR寄存器才能访问,这个时候如果是读芯片外的程序空间,同样也是P0口是低八位,P2口是高八位。
如果你用到了MOVC或者MOVX这两个指令来给LCD写数据或者CC1100写数据,并且设置了DPTR寄存器(这个寄存器可以高八位用DPTRH读写,低八位可以用DPTRL读写),可能就会因为不知道具体的地址设置情况而出错。
另外说一下,P0口设计成集电极开路输出是有原因的。因为这样P0口就可以同时接两个芯片了。而这两个芯片也同样都是OC门,一起接在同一个上拉电阻上,就形成了一种线“与”逻辑,接在线上的芯片因为只能高为低电平或者高阻态而可以互相不影响的分时使用总线了,但每次只能有一个芯片使用这条总线,这就是分时复用。
P0口和P2口在当成地址总线时,这两个口是用来一起进行外部存储器寻址用的。这个时候P0口是低八位地址,P2口是高八地址。加起来一共是16位地址。也就是可以寻址64KB的存储器空间。当你用汇编语言指令MOVX访问外部数据存储器的时候就是这种情况。这个地址在这个时候是存在DPTR的这个16位寄存器里的。而数据是对P0口分时复用的,数据是走P0口的。
当你要访问程序存储器的时候,用MOVC指令,同样要先设置DPTR寄存器才能访问,这个时候如果是读芯片外的程序空间,同样也是P0口是低八位,P2口是高八位。
如果你用到了MOVC或者MOVX这两个指令来给LCD写数据或者CC1100写数据,并且设置了DPTR寄存器(这个寄存器可以高八位用DPTRH读写,低八位可以用DPTRL读写),可能就会因为不知道具体的地址设置情况而出错。
另外说一下,P0口设计成集电极开路输出是有原因的。因为这样P0口就可以同时接两个芯片了。而这两个芯片也同样都是OC门,一起接在同一个上拉电阻上,就形成了一种线“与”逻辑,接在线上的芯片因为只能高为低电平或者高阻态而可以互相不影响的分时使用总线了,但每次只能有一个芯片使用这条总线,这就是分时复用。
展开全部
只有一个单片机的话P2和P0口应该没什么关系,不影响输出的,即使你用的是像开发板一样的东西,我建议1.你再检查一下程序。2,。看下有没有什么短路帽之类的东西存在。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理论上市独立控制的啊。可能是你的外围器件的电压反供单片机造成的吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询