需要插入一段按键暂停程序?

身份认证 购VIP最低享 7 折!

单片机外部中断法实现外部按键,对于微机c语言也有借鉴意义

51单片机做洗衣机,用定时器轮询4个IO口,分别用作程序P2.O,启停键P2.1,电源P2.2,水位P2.3;暂停功能要求暂停后,再启动能继续以前的工作,程序应该怎么实现?恳请大神指点,感激不尽

//判断这4个模式是否为真,否则不执行该模式里面的内容
2 启/停{用一个标志是否为1或为0,表示启动或暂停};
3电源{进入SLEEP,再次按按键就唤醒单片机};

4水位{当水位<设定水位水位,装水};

温馨提示:答案为网友推荐,仅供参考

用外部中断和定时器中断就可以实现啊
定时器中断轮询4个io口,外部中断完成启停、电源和水位等
这个程序应该挺简单的啊

主要的问题,应该是 抖动,
在 按键 按一下的时候,比如说P1_2==0.
但是 再 按一下 继续的时候,可能因为 按下去的时间过长,又进入到这个 函数里了。就死循环了。

怎么 解决 死循环问题?

如果P1_2==0 是按下的话,在死循环里如果P1_2 没有变化,仍然是0(按下),则再次循环,直到为1(抬起),抬起后执行if语句里的代码,这里面当然应该有一个跳出循环的语句。

如果用户按下键不放会有问题,最好改为用户按下键再弹起为一次输入

这根本就是一个死循环程序,一旦有按键按下,不管按下去的时间长或短,程序都会进入while死循环,永远跳不出来的。

IO直接作为循环条件即可

增加一个按键的标志位就可以解决了!
没有按下为0,按下为1,
每次要判断按键的时候结合标志位进行。

这个代码看起来不像是解决再按下一次按键的问题吧,应该是检查按下后抬起的问题的。
如果P1_2==0 是按下的话,在死循环里如果P1_2 没有变化,仍然是0(按下),则再次循环,直到为1(抬起),抬起后执行if语句里的代码,这里面当然应该有一个跳出循环的语句。

我要回帖

更多关于 单片机通过按键切换功能 的文章

 

随机推荐