while(!key1)一般是要放在if(!key1)的花括号内的,也就是:
if(!key1) //如果key1被按下
{
DelayMs(5); // 软件延时进行按键消抖
while(!key1); // 等待按键释放
fun(); // 要执行的函数
}
分析一下,单片机C语言和软件C,C++不是完全一样的,单片机C要结合硬件电路看的。
你的叙述不太清晰,这里我把软硬件分开表述:用button1表示硬件按键,button1一端接单片机IO,另一端接地,button1所连接到的IO被定义为key1。button1不工作时IO为高电平,一旦button1被按下,对应的IO就被拉低,所以key1取非代表的是按键被按下。当按键松开了key1就恢复高电平了,所以不会一直执行while(!key1),除非你一直按着它。就这么着了。
标签:单片机,While,key1
版权声明:文章由 回答三 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.huidasan.com/answer/120977.html