某汽车玻璃升降器,2个按钮状态监测的,帮忙写下程序

2019-03-23 14:45发布

某汽车玻璃升降器:
一个单刀双掷开关,KEY1,KEY2;
两个输出点OUT1,OUT2

不按:KEY1=1; KEY2=1;
轻按:KEY1=0; KEY2=1;
重按:KEY1=1; KEY2=0;

轻按到重按,或重按到轻按的切换过程中:KEY1=1; KEY2=1; 至少有几百毫秒时间。


程序OUT1、OUT2输出要求:

KEY1=0时,OUT1=1;
KEY2=0时,OUT1=1;OUT2=1;
由轻按到重按过程中,保持:OUT1=1;不能中断
重按到轻按的过程中,保持:OUT1=1;不能中断
不按下:OUT1=0;OUT2=0;

搞不清怎么写逻辑了~

请高手大侠们赐教!

此帖出自小平头技术问答  

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
蓝雨夜
1楼-- · 2019-03-23 17:38

 是不是不够完全

如果轻按了一定会来重按吗?
小轻按不行吗

y909334873
2楼-- · 2019-03-23 17:45
 精彩回答 2  元偷偷看……
yfpc2006
3楼-- · 2019-03-23 20:53


是不是不够完全

如果轻按了一定会来重按吗?
小轻按不行吗


一共三分档位,不按,轻按,重按,请帮忙!

yfpc2006
4楼-- · 2019-03-23 22:00


判定按键的持续状态时间来确定按键操作应该就可以了把?


新手不太会哦!

蓝雨夜
5楼-- · 2019-03-24 01:14
 精彩回答 2  元偷偷看……
小苹果单片机
6楼-- · 2019-03-24 02:25

我也是新手,不过你看看这样对不对,可以按这个逻辑看看检查下:

if(KEY1 = 1 && key2 = 1)    //初始状态无动作
{
    delay  1 s;
  if(KEY1 =1 && KEY2 =1)    //延时一秒按键无动作不按下
    {
       OUT1= 0;
       OUT2 = 0;
    }
  else
    break;
}
else if(KEY1 = 0  || KEY2 = 0)  //有按键按下
{
   if(KEY1 =0 && KEY2 = 1)   //若是轻按
   {
     { OUT1= 1;OUT2 = 0;}
     delay 1s;      //延时一秒
     if(KEY1 =1 && KEY2= 0)  //判断状态是否切换
     OUT2 =1;
     else
       break;
   }
   else if(KEY1 =1 && KEY2 = 0)   //若是重按
   {
     OUT1 =1;
     OUT2 =1;
     delay 1s;
     if(KEY1 =0 && KEY2 = 1) //判断状态切换
     {
        OUT1 = 1;
        OUT2 = 0;
     }
      else
   break;
    }
    else   //如果KEY1 =0 KEY2 =0,则无效
    break;

}

不知道对不对,你可以看看。大概就是这个意思得逻辑吧。


一周热门 更多>