51单片机引脚检测高电平输入的问题

这样设计的原理图

当按下按键的时候,单片机的p16引脚就链接vcc(3.3v),此时我能通过 if( p1^6==1),来执行后面的事情
请问这样的设计能否实现?
2>另外在网上看到这样的一句话 “51单片机的I/O 口检测高低电平是需要首先让该端口置为1的。此时这个引脚才被设置为输入”,也就是说如果上面的设计可以做到的话,那么就需要一开始的时候给高电平吗?

在网上看到这样的一句话 “51单片机的I/O 口检测高低电平是需要首先让该端口置为1的。此时这个引脚才被设置为输入”,
--正确。
也就是说如果上面的设计可以做到的话,那么就需要一开始的时候给高电平吗?
--必须先给端口置一。
--你的电路,是做不到的。
--你的电路,按键、不按键,送到引脚的信号,都是高电平。
--你的电路,设计的不对,不符合单片机的特点。
--按键,另一端,应该接地。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-24
设计存在缺陷:“51单片机的I/O 口检测高低电平是需要首先让该端口置为1的。此时这个引脚才被设置为输入” 正确,此操作在IO口初始化时设置;但是你的电路图,读取的始终为“1”;原因:当设置为输入时,单片机内部有上啦电阻,把其IO口引脚拉高;
改进:IO口连接一下拉电阻 6.8K~10K之间即可追问

如果一开始的时候不设置为1 ,只是按键按下的时候为p16就接上的vcc,那么此时判断该引脚是否为高,再执行某件事,断开后就为低电平了,行不行?

追答

AT89C51单片机 上电之后P0,P1,P2,P3为高电平……

追问

stc89C51 呢?

追答

51单片机复位之后都为 高电平,这是默认的

第2个回答  2014-02-24
单片机IO与外部相连是线与的关系,所以你的方法不行。单片机io口为高的时候你读取的相应io口电平才是外部电平。如果你把相应IO口置0,无论外部是0或1你读取的永远是0。所以你只有把io口置1,判断if( p1^6==0)才能判断是否键按下(当然你的按键得接地)。
第3个回答  2015-10-09
51单片机的引脚检测到各个引脚的电压高于1.8V就认为是有高电平输入,低于0.7V就认为是低电平输入,在0.7~1.8V之间,是一个未知区域,既不是高电平也不是低电平。
第4个回答  2014-02-24
大家常用的是,按键一端接地,另一端接IO口 检测,检测端加上拉电阻。
相似回答