51 AD转换,用ADC0804,数据接P1.0-1.7,例子要求读取数据前先用P1=0Xff将P1口写1,什么原因?为何不写0?
1个回答
展开全部
51的P1口可输入可输出。
那么哪条指令让它作为输入口,怎么样才能让它作为输入口呢?
每个口上都有一个锁存器,锁住之前写的值。
比如,口上只是接一个上拉电阻,这个口作为输入应该是高电平吧。
那你往口里写一个0,口会输出0,这个口就成了低电平了。此时,你读这个IO口,也会是低电平。
如果不改写为1,锁存器内就一直是0,也就是输出0 ,程序读这个口上的电平也是0。
改写为1后,这个口上的电平才会1,或者说,不会把这个口拉低。
作为输入口时,要事先写1,也可以不用每次都写,只要里面不是0就成。
简单的来说就是:因为单片机的构造(上拉了电阻),需要将P1口写1,使之成为高电平,能够作为输入口。
那么哪条指令让它作为输入口,怎么样才能让它作为输入口呢?
每个口上都有一个锁存器,锁住之前写的值。
比如,口上只是接一个上拉电阻,这个口作为输入应该是高电平吧。
那你往口里写一个0,口会输出0,这个口就成了低电平了。此时,你读这个IO口,也会是低电平。
如果不改写为1,锁存器内就一直是0,也就是输出0 ,程序读这个口上的电平也是0。
改写为1后,这个口上的电平才会1,或者说,不会把这个口拉低。
作为输入口时,要事先写1,也可以不用每次都写,只要里面不是0就成。
简单的来说就是:因为单片机的构造(上拉了电阻),需要将P1口写1,使之成为高电平,能够作为输入口。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询