1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
關于單片機一個按鍵實現多種功能
[打印本頁]
作者:
hithy
時間:
2020-6-15 20:09
標題:
關于單片機一個按鍵實現多種功能
循環計數法,標志位法,都是比較簡單的按鍵多次按下識別的方法也是常用方法
這個是計數法例子,先通過管腳電瓶高低識別按鍵(注意延遲)是否按下,按鍵按下計數,通過型參計數,也可以用switch條件語句控制。
void main()//這里進入主函數{
while(1)//一直循環
{
if(KEY==0)//如果有按鍵按下
{
num++;
}
if(num==1&&key_bit==0) {
realy=1;
key_bit=1;
}
if(num==2) {
realy=0;
key_bit=0;
num=0;
}
}
作者:
252622979
時間:
2020-6-15 22:03
這樣不會有誤觸發的情況?
作者:
289466080
時間:
2020-6-16 08:27
我的在定時器(1ms)中寫的按鍵,當按鍵下計時,松手的時候檢測計時值>=10ms表示有效按鍵,如果增加長按當執行長按時松手清空短按檢測。
作者:
hithy
時間:
2020-6-16 19:15
252622979 發表于 2020-6-15 22:03
這樣不會有誤觸發的情況?
我只是提供一個思路,這個肯定會誤觸的,加個延時消除抖動在加個確定按下的判斷語句就可以了,也可以加個while變成識別長按,(單片機有定時器中斷,c語言本身也有中斷)靈活應用可以少寫代碼。優化
像這樣
flag=1; //緊急狀態標志位置1,進入緊急通行狀態
save=P0; //保存燈的狀態
P0=0x84; //全部亮紅燈
while(key_stop==0); //按鍵釋放,當按鍵一直按下的時候,程序就會一直執行這里,直到按鍵按下
while(flag==1) //如果是緊急狀態就一直執行下面的程序
{
if(key_stop==0) //在緊急狀態時判斷按鍵是否按下
{
delay(50); //延時去抖
if(key_stop==0) //再次判斷按鍵是否按下
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1