|
如何把悬赏黑币发给解决问题的人? 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 | 赞一个! |