欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2349|回復: 5
打印 上一主題 下一主題
收起左側

單片機紅外遙控程序問題,為什么要按兩次才加一?

[復制鏈接]
回帖獎勵 2 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:319133 發表于 2019-3-21 15:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
}
  if(IrValue[2]!=~IrValue[3])
  {
   return;
  }
  switch(IrValue[2])
  {
   case 0x19: key_do=~key_do;break;
   Delay10Ms(100);
   case 0x40: key_up=~key_up;break;
   Delay10Ms(100);
   case 0x44: key1=~key1;break;
   Delay10Ms(100);
  }

把遙控當按鍵使用,為什么要按兩次才加一
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:234075 發表于 2019-3-21 18:54 | 只看該作者
只看到key_do\key_up\key1反轉,沒看到你+1的程序在哪
回復

使用道具 舉報

板凳
ID:319133 發表于 2019-3-21 22:52 | 只看該作者
zhb2004xp 發表于 2019-3-21 18:54
只看到key_do\key_up\key1反轉,沒看到你+1的程序在哪

void key()
{
        if(!key1)
        {
                delays(10);
                if(!key1)
                {
                        key_num++;
                        while(!key1);
                }
        }
        if(key_num==1)
        {
                LcdShowstr(2,0,">");
                if(!key_up)
                {
                        delays(10);
                        if(!key_up)
                        {
                                Temphigh++ ;
                                if(Temphigh>99)
                                Temphigh=99;
                                while(!key_up);
                        }
                }
                if(!key_do)
                {
                        delays(10);
                        if(!key_do)
                        {
                                Temphigh--;
                                if(Temphigh<Templow)
                                Temphigh=Templow;
                                while(!key_do);
                        }
                }
        }
                if(key_num==2)
        {
                LcdShowstr(2,0," ");
                LcdShowstr(11,0,">");
                if(!key_up)
                {
                        delays(10);
                        if(!key_up)
                        {
                                Templow++;
                                if(Templow>Temphigh)
                                Templow=Temphigh;
                                while(!key_up);
                        }
                }
                if(!key_do)
                {
                        delays(10);
                        if(!key_do)
                        {
                                Templow--;
                                if(Templow<0)
                                Templow=0;
                                while(!key_do);
                        }
                }
        }
        if(key_num==3)
        {
                key_num=0;
                LcdShowstr(2,0," ");
                LcdShowstr(11,0," ");
                Write_add_24c02(0,Temphigh);
            delays(50);
            Write_add_24c02(1,Templow);
            delays(50);
        }
}
回復

使用道具 舉報

地板
ID:319133 發表于 2019-3-22 01:03 來自觸屏版 | 只看該作者
望大神們知道一下
回復

使用道具 舉報

5#
ID:234075 發表于 2019-3-22 01:21 | 只看該作者
?你這個程序思路有問題啊,還是你直接把現有的程序拼接出來的,并沒有理解程序的運行過程?
使用紅外遙控代替按鍵,就直接代替按鍵了,case 0x44: key1=~key1;break;這里就不需要作key1=~key1,直接在這里寫你需要key1按下時要做的程序就好了!
另外你為什么要再加一個按鍵掃描的程序(就是你第二次貼出來的程序)?這個按鍵掃描是用來掃描檢測真實按鍵用的,這個按鍵掃描程序先掃描到某個按鍵(如key1)按下,(其中還有個消抖的過程),其中雖然執行了key_num++,但程序會等待按鍵(key1)松開,才會去執行下一步程序。
所以你用紅外遙控代替按鍵時,按1次(key1=0),按鍵掃描程序檢測到key=0,會執行key_num++語句,但會停止在while(!key1)語句,只有你按第2次(key1=1,相當于松開按鍵),程序才會繼續向下執行
回復

使用道具 舉報

6#
ID:319133 發表于 2019-3-22 09:32 來自觸屏版 | 只看該作者
zhb2004xp 發表于 2019-3-22 01:21
?你這個程序思路有問題啊,還是你直接把現有的程序拼接出來的,并沒有理解程序的運行過程?
使用紅外遙控 ...

哈哈哈,我就是有真實按鍵在的程序,然后想加個紅外,不能這樣直接加嗎,還是我思路有問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表