久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

把一個按鍵設置為長按和短按執行不同的功能單片機程序 求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:393569 發表于 2018-9-4 16:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助下,我想把一個按鍵設置為長按和短按執行不同的程序

按鍵.png (26.34 KB, 下載次數: 46)

我想把按鍵設置成長按和短按具體要怎么改

我想把按鍵設置成長按和短按具體要怎么改
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:393569 發表于 2018-9-4 16:13 | 只看該作者
由沒有誰幫忙指導下,用狀態機會不會比較方便
回復

使用道具 舉報

板凳
ID:80847 發表于 2018-9-4 17:10 | 只看該作者
延時太長,用定時器吧,計數。
回復

使用道具 舉報

地板
ID:213173 發表于 2018-9-4 17:24 | 只看該作者
回復

使用道具 舉報

5#
ID:164602 發表于 2018-9-5 08:13 | 只看該作者
這是我的一個程序:四鍵八功能,即一鍵雙功能的按鍵程序。
你可以參考一下:
                if (Agoto==1)
                {
                        n=0;
                        while(Agoto)
                        {
                                n++;
                                Delay10ms(1);
                                if (n>200)
                                {
                                        break;
                                }
                        }
                        if (n>30)
                        {
                                PWMD();
                        }
                        else
                        {
                                PU();
                        }
                }
回復

使用道具 舉報

6#
ID:174087 發表于 2018-9-5 09:27 | 只看該作者
狀態機親測好用
回復

使用道具 舉報

7#
ID:393846 發表于 2018-9-5 10:21 | 只看該作者
建議使用switch語句,雖然占用空間,但是邏輯會很清晰
回復

使用道具 舉報

8#
ID:393846 發表于 2018-9-5 10:23 | 只看該作者
建議使用switch,這樣邏輯很清晰
回復

使用道具 舉報

9#
ID:384109 發表于 2018-9-5 10:48 | 只看該作者
用定時器判斷按鍵時間的長短,如果用延時的方法的話,只能用短延時,并且不停的檢測按鍵是否釋放,同時記錄短延時的次數,通過計算短延時的次數來區分短按鍵和長按鍵
回復

使用道具 舉報

10#
ID:342239 發表于 2018-9-5 15:25 | 只看該作者
用狀態機寫比較方便,而且不會阻塞CPU/***************************************************************************
* 名    稱:Key_ScanIO();
* 功    能:掃描IO口并判斷按鍵事件(前臺程序)
* 入口參數:無
* 出口參數:無,鍵值壓入緩沖隊列
* 說     明:該函數需要每隔1/16~1/128S調用一次。最好放在定時中斷中執行
***************************************************************************/
void Key_ScanIO()
{
  P_KEY1=N_KEY1;       //將當前KEY1狀態保存到前一次狀態變量中
  N_KEY1=KEY1_IN;      //將KEY1狀態保存到當前變量中
  P_KEY2=N_KEY2;
  N_KEY2=KEY2_IN;
  P_KEY3=N_KEY3;
  N_KEY3=KEY3_IN;
  if((P_KEY1!=0)&&(N_KEY1==0)) KEY1_State=PUSH_KEY;  //如果兩次狀態不一樣,說明K1被按下了
  if((P_KEY2!=0)&&(N_KEY2==0)) Key_InBuff(0x02);
  if((P_KEY3!=0)&&(N_KEY3==0)) Key_InBuff(0x04);
}
/***************************************************************************
* 名    稱:Key1_Judge();
* 功    能:判斷KEY1 長按、短按
* 入口參數:無
* 出口參數:無,鍵值壓入緩沖隊列
* 說     明:該函數需要每隔1/16~1/128S調用一次。最好放在定時中斷中執行
***************************************************************************/
void Key1_Judge()
{
  if(KEY1_State==PUSH_KEY)  Key1TimeS++;
   else                     Key1TimeS=0;
   switch(KEY1_State)
   {
    case NOKEY:   
      {
        if(KEY1_IN==0)  KEY1_State=PUSH_KEY;
        break;
      }
   case PUSH_KEY:
     {
        if(KEY1_IN!=0)
        {
          Key_InBuff(0x01);
          KEY1_State=NOKEY;
        }
        else if(Key1TimeS>32*2)
        {
          Key_InBuff(LONG_KEY1);
          KEY1_State=LONG_PUSH;
        }
     }
   case LONG_PUSH:
     {
        if(KEY1_IN!=0)
        {
          KEY1_State=NOKEY;
          Key1TimeS=0;
        }
        break;
     }
   }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品区 | 国产999精品久久久 午夜天堂精品久久久久 | www.亚洲精品 | 中文字幕一区二区三区精彩视频 | 插插插干干干 | 欧美精品一区二区三区四区五区 | 亚洲免费影院 | 手机看黄av免费网址 | 亚洲久久| 精品无码久久久久久国产 | 国产三级国产精品 | 91成人 | 精品久久九 | 久久精品一区二区三区四区 | 欧美激情精品久久久久久 | 91手机精品视频 | 国产一级电影在线观看 | 久久久无码精品亚洲日韩按摩 | 色www精品视频在线观看 | 国产乱码精品一区二区三区忘忧草 | 精品一区二区三区在线观看国产 | 综合久久综合久久 | 亚洲精品一区在线观看 | 国产在线中文字幕 | 国产精品欧美一区二区 | 精品1区2区| 久久久久久久97 | 国产精品国产成人国产三级 | 日本成人在线观看网站 | 日本在线小视频 | 免费看黄色小视频 | 国产成人免费视频网站高清观看视频 | 国产亚洲精品精品国产亚洲综合 | 美人の美乳で授乳プレイ | 国内精品伊人久久久久网站 | 在线观看www高清视频 | 国产精品视频一二三区 | 亚洲黄色av| 亚洲激情综合网 | 日韩久久久一区二区 | 亚洲精品一区二区网址 |