![]() |
|
如何把懸賞黑幣發給解決問題的人? lkc8210解決了問題 |
很感謝!就是這個效果,----------<<<<<<<<<<不明白這里想干啥,是打算做稱按鍵的 |
lkc8210 發表于 2021-8-25 21:45 現在按你的意㽖這樣整了一下,還是不行 #include <reg52.h> #define ufloat unsigned float #define uchar unsigned char #define uint unsigned int uchar Flash_Delay, LedOnCount, m, CONT, JJ; sbit SW = P1^0; sbit LED = P2^0; //輸出口; bit key_In; static uchar f_SW=1; //按鍵松開標志 static uchar f_long_SW=0; //長按動作標志,為1時,長按已動作,為0時長按未動作 int main (void) { P2 = 0; P1 = 0; SW = 1;key_In = 1; while (1) { if(SW == 0) { f_SW=0; //按鍵按下標志 m++; } else f_SW=1; //按鍵松開標志 if((f_SW==1)&&(m>10)&&(m<500)) //按鍵松開,并且m值處于10~500之間,為短按 { m=0; CONT++; if(CONT == 2)CONT = 0 ; if(CONT == 1) { if(key_In == 1) //按鍵標置位bit { if(++Flash_Delay>1000) //閃燈延時int { Flash_Delay = 0; if(LED == 1) //閃燈腳sbit { LedOnCount++;//閃燈次數char LED = 0; }else { LED = 1; } if(LedOnCount == 2) { key_In = 0; LedOnCount = 0; } } } } if(CONT == 0) LED = 0; } if((m>=500)&&(f_long_SW==0)) { f_long_SW=1; { f_long_SW=0; m=0; } } } } |
shuisheng60 發表于 2021-8-25 18:59 key_In是按鍵標置位而不是按鍵啊~老弟~ 掃描到有鍵按下才把key_In置1, 閃完燈會自動把key_In清零 |
shuisheng60 發表于 2021-8-25 18:42 這與你一開始說的要求不一樣啊! 老弟~ 你開貼時只說閃燈用來表示按鍵按下, 從來沒有過模式什么的, 下次問問題要把要求都說出來 不要說一半不說一半的 |
Screenshot_2021-08-25-21-36-16-471_com.android.chrome~01.jpg (191.76 KB, 下載次數: 108)
電子發燒燒燒友 發表于 2021-8-25 13:36 不是區分按鍵,是用閃燈次數確認模式在那一檔位 |
我的按鍵已經進入模式一了,不再需要考按鍵松手與未松手,功能模塊都在執行了,閃兩只表示進入模式1,閃三下表示進入模式2 |
檢測到按鍵松手后,變量++或用定時器計數,滿足要求后,執行void LEDSHANSHUO() |
本帖最后由 電子發燒燒燒友 于 2021-8-25 13:51 編輯 假如你需要分辨的是三個按鍵(多個也是一樣的思路)偽代碼如下: void LED_blink(int LED) { LED=1;//LED亮 delay(); LED=0;//LED滅 delay(); } void key_set() { if(key1==0)//按鍵1按下 key=key1; if(key2==0)//按鍵2按下 key=key2; if(key3==0)//按鍵3按下 key=key3; } void key_down() { key_set(); switch(key) { case key1: //按鍵1按下 while(key1!=0); //假設低電平代表按下,直到按鍵松開才執行 { LED_blink(LED1); LED_blink(LED1);//閃爍兩次 }break; case key2: //按鍵1按下 while(key2!=0); //假設低電平代表按下,直到按鍵松開才執行 { LED_blink(LED2); LED_blink(LED2);//閃爍兩次 }break; case key3: //按鍵1按下 while(key3!=0); //假設低電平代表按下,直到按鍵松開才執行 { LED_blink(LED3); LED_blink(LED3);//閃爍兩次 }break; } } |
參與人數 1 | 黑幣 +15 | 收起 理由 |
---|---|---|
![]() | + 15 |
單獨寫一個閃爍函數按鍵按下執行 |
本帖最后由 lkc8210 于 2021-8-25 11:47 編輯
|
參與人數 1 | 黑幣 +15 | 收起 理由 |
---|---|---|
![]() | + 15 | 贊一個! |