标题:
一个看似简单的按键问题,却怎么都弄不明白
[打印本页]
作者:
niejiangong
时间:
2022-8-7 21:43
标题:
一个看似简单的按键问题,却怎么都弄不明白
我想检测KEY键按下4次后,就打开LED灯,程序如下:
for(i=4;i>0;i--) //按KEY键4次
{
delay_ms(800);
while(KEY==1);
i--;
}
但程序运行非常不稳定,实际KEY键可能按下2次或者3次,就打开LED了,延时800ms的参数调整为500或者1000或者2000,都是这样。
求高手指点,这到底是为什么?
作者:
niejiangong
时间:
2022-8-8 10:07
早上刚睡醒想明白了,自己回一下吧,我这个循环中用了两次:i--,所以只按2下开关就达到4次效果
作者:
yzwzfyz
时间:
2022-8-9 10:11
还不错,自己能找到问题。
作者:
青草麦田
时间:
2022-8-10 16:39
这个还有问题吧,试一下长时间按着不放是不是会一次就着了。
作者:
杰西Jesse
时间:
2022-8-24 16:17
你这个用if判断不是更加吗?但是要注意消抖
作者:
fenghaihuac
时间:
2022-8-27 13:52
这种程在实际应用中没有意义whlie等待松手这个其它事都别干了。
作者:
xxxevery
时间:
2022-8-28 19:47
在for循环语句中严禁手工修改循环计数变量这是必须严格遵守的规定啊,会造成不可预知的错误的,而且从你的程序看出来你的c语言基础很差啊,还需要好好修炼学习
作者:
jhczy
时间:
2022-8-29 08:46
换种思维方式实现该功能吧
作者:
XIAOCAO123
时间:
2022-8-29 16:35
用了两次i--,
作者:
fj51hei
时间:
2022-8-29 20:52
xxxevery 发表于 2022-8-28 19:47
在for循环语句中严禁手工修改循环计数变量这是必须严格遵守的规定啊,会造成不可预知的错误的,而且从你的 ...
能说下这个规定出处?另能说明下为什会造成不可预知的错误?这个for循环每个语句执行都是串行的,又不是并行,没超那个计数范围有什么危险?话说那个变量超了范围可以使用?
作者:
proe533
时间:
2022-8-29 22:04
for中有i-- while中有加了i--,引起
作者:
xxxevery
时间:
2022-8-29 22:54
在林锐博士的《高质量c++/c编程指南》里有讲到,因为for语句中的循环计数变量的控制是编译器自动生成的语句,如果我们手动又去控制循环计数变量的值就有很大可能与编译器产生的语句有冲突,造成死循环或系统崩溃等现象
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1