根据你的程序思路来看存在一个无法解决的问题,那就是在下面这段程序中
- while(!KEY)
- {
- key_press_num++;
- DelayMs(10); //10x200=2000ms=2s
- if(key_press_num==200) //大约2s
- {
- //如果达到长按键标准
- //则进入长按键动作
- //这里用于识别是否按
- //键还在按下,如果按
- //下执行相关动作,否则退出
- while(!KEY)
- {
- LED2=!LED2;
- DelayMs(200);
-
- }
- }
- }
- LED1=!LED1;
复制代码
本来你设置为当按键没有释放时,就会进行计数,而不会点亮LED1。
但是一旦计数值到达标准,LED2就会被点亮,然后延时0.2s,结束当前的while(!KEY)循环,由于程序BUG
1.如果按键仍然不释放LED2就会反复亮灭
2.或当按键释放while(!KEY)循环结束,程序循序执行LED1=!LED1
所以你的设计思路有点小问题
|