
这个开关如果不是总电源的话,还是很容易实现的,比如,你可以定义个全局变量,初始值为0,然后单片机检测按键是否按下,按下则对这个变量取反,然后判断这个是否为0xff(定义开启电机的值为0xff),是那就开启电机,否则关闭;如果这个开关时总电源的开关的话,则有点麻烦,需要有硬件的支持。
程序是顺序执行的,不存在严格的“同时”检测。所以,我们可以设置一个很“高”的检测频率。在同一个检测周期里发现按键都按下就可当做是同时按下。
然后你需要解决如何发现按键按下动作这个问题。
按键按下同样也不必一按下你就马上要发现这么紧张。同样在这么一个很“高”的检测频率下。发现前一次检测是个“没按下”状态现在变成了“按下”那就可以当做是这次检测周期里“按下”。
然后你需要解决如何记录前一次检测是什么东西的问题。
你需要额外用个寄存器暂时放你前一次检测的结果。并在检测周期结束之前记录当前的“日志”。
于是,你可以很从容地发现现在按键的状况以及上一次按键是个什么情况,你掌握了历史、当下、还要安排一下未来:检测到按键的动作后你要再写个服务程序来使用这个按键检测的结果。
最后,再说明一下,这个很“高”的频率大概10几ms也行的。越高频率检测越准确。同时。这个“同时”的检测也越严格。你可能会导致怎么按都很难触发‘同时’的动作。
if(S5==0&&d==2&&g==1)
你这一行检测d==2且g==1的时候,才会继续执行if后面的代码
if(d==2&&g==1)当执行到这句的时候,通过前面的检测这时的d是2,而g是1,if(d==2&&g==1)这个判断则总是为真,后面的else if永远不会执行
你这个代码里有BUG
如果key1 没有松手,即 key1=0;
' !'为取反;
则!key1=1, 此时While(!key1) 条件成立,while(!key1) 函数语句为空,即程序一直等待在此处循环。(即等待松手)
以上就是关于用c语言来控制一个轻触开关,那种开关是按下去是闭合的,但是一松手开关就断开了。全部的内容,包括:用c语言来控制一个轻触开关,那种开关是按下去是闭合的,但是一松手开关就断开了。、求救c语言 如果要检测两个键同时被按下和松手检测的,要怎么样写呢、C 程序 按键按下不触发也不进行任何动作,松开之后才触发,现在代码,按键必须按二次才触发等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)