根據你的程序思路來看存在一個無法解決的問題,那就是在下面這段程序中
- 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
所以你的設計思路有點小問題
|