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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4202|回復: 24
收起左側

關于一個if的程序執行問題

  [復制鏈接]
ID:362355 發表于 2018-7-7 15:15 來自手機 | 顯示全部樓層 |閱讀模式
我是用if判斷按鍵來實現電機的轉動,但是有一個按鍵呢功能是要電機轉幾秒停幾秒的反復的,如果我把這個按鍵按下了,它就會執行這段程序,即使有其他按鍵按下了還是會執行這段程序,怎么改呢??
回復

使用道具 舉報

ID:366893 發表于 2018-7-7 16:31 | 顯示全部樓層
表述不明,沒看懂你要表達什么,可以說清楚點嗎
回復

使用道具 舉報

ID:164602 發表于 2018-7-7 16:53 | 顯示全部樓層
在電機轉動程序中,加一個判斷,只要有按鍵發生,就跳出這段程序,即要加一個按鍵的判斷。
回復

使用道具 舉報

ID:362355 發表于 2018-7-7 17:29 來自手機 | 顯示全部樓層
hayden 發表于 2018-7-7 16:31
表述不明,沒看懂你要表達什么,可以說清楚點嗎

就是按鍵K4按下了,如果其他按鍵按下,不能直接切換過去了,怎么改??(m是電機的占空比)
1530955584432-1800147721.jpg
15309556234851880717620.jpg
回復

使用道具 舉報

ID:363376 發表于 2018-7-7 17:33 | 顯示全部樓層
加一判斷的條件,只要轉幾秒停幾秒轉的按鍵生效了其他按鍵就失效,執行完了幾秒停幾秒轉再使其他鍵生效
回復

使用道具 舉報

ID:366691 發表于 2018-7-7 18:41 | 顯示全部樓層
你是用if(按鍵1)來判斷的吧?然后進入if之后就再也出不來了?給IF加停止條件啊!不然會永遠死循環的。
回復

使用道具 舉報

ID:308437 發表于 2018-7-7 19:30 | 顯示全部樓層
同上:
表述不明,沒看懂你要表達什么,可以說清楚點嗎
回復

使用道具 舉報

ID:342822 發表于 2018-7-7 20:15 | 顯示全部樓層
圖片看不清~~~~~~~~~~~~~~
回復

使用道具 舉報

ID:342822 發表于 2018-7-7 20:22 | 顯示全部樓層
轉幾秒停幾秒!
用循環語句來實現,在循環中加條件判斷如果某鍵按下隨時退出。
回復

使用道具 舉報

ID:148256 發表于 2018-7-7 21:10 | 顯示全部樓層
可以定義一個狀態吧,表示按鍵是否已按下,在中斷中寫入狀態,每次在大循環中檢測該狀態,按下就執行代碼,釋放就不執行
回復

使用道具 舉報

ID:362355 發表于 2018-7-7 21:52 | 顯示全部樓層
本帖最后由 我是貔貅 于 2018-7-8 09:27 編輯
yousunny 發表于 2018-7-7 19:30
同上:
表述不明,沒看懂你要表達什么,可以說


      

復制代碼
回復

使用道具 舉報

ID:191417 發表于 2018-7-8 00:21 | 顯示全部樓層
if (z=1)
回復

使用道具 舉報

ID:191417 發表于 2018-7-8 00:23 | 顯示全部樓層
if (zhuan=1)
{
zhuan=0;
}
else
{
zhuan=1;
}
回復

使用道具 舉報

ID:362355 發表于 2018-7-8 09:30 | 顯示全部樓層
  1. /*------------自然風模式----------------*/
  2. void naturemode()
  3. {         
  4.          m=100;
  5.          delay(1000);
  6.          m=0;
  7.          delay(3000);
  8.          m=100;
  9.          delay(1000);
  10.          m=0;
  11.          delay(3000); //前8秒
  12.          m=100;
  13.          delay(2000);
  14.          m=0;
  15.          delay(2000);
  16.          m=100;
  17.          delay(2000);
  18.          m=0;
  19.          delay(2000);        //又8秒
  20.          m=100;
  21.          delay(3000);
  22.          m=0;
  23.          delay(1000);
  24.          m=100;
  25.          delay(3000);  
  26.          m=0;
  27.          delay(1000);   //又8秒
  28.          m=100;
  29.          delay(8000);
  30.        
  31.          
  32. }

  33. ......

  34. /*----------鍵盤掃描函數----------------*/
  35. void keyscan()  
  36. {  
  37.   if(K1==0)     
  38.   {
  39.     delay(5);      //消除抖動
  40.          if(K1==0)
  41.          {
  42.                   m=100;
  43.      }
  44.   }
  45.   if(K2==0)
  46.   {
  47.     delay(5);
  48.          if(K2==0)
  49.          {
  50.                  m=0;
  51.          }
  52.   }
  53.     if(K3==0)
  54.   {
  55.     delay(5);
  56.          if(K3==0)
  57.          {
  58.             m=50;
  59.          }
  60.   }
  61.   if(K4==0)
  62.   {
  63.     delay(5);
  64.          if(K4==0)
  65.          {
  66.                  naturemode(); //自然風模式
  67.          }
  68.   }   
  69. }
復制代碼



回復

使用道具 舉報

ID:362355 發表于 2018-7-8 09:32 | 顯示全部樓層
代碼貼上去了,我的意思是,K4按下了,就無法打斷它的運行了
回復

使用道具 舉報

ID:367180 發表于 2018-7-8 09:54 | 顯示全部樓層
那你在進入K4之后將K4拉高呢
回復

使用道具 舉報

ID:362355 發表于 2018-7-8 11:24 來自手機 | 顯示全部樓層
HOSS 發表于 2018-7-8 09:54
那你在進入K4之后將K4拉高呢

沒用,而且K4按下后里面的內容不能循環反復運行,也就是電機不能有規律的運行
回復

使用道具 舉報

ID:367222 發表于 2018-7-8 11:39 | 顯示全部樓層
試著把naturemode()改短一些,
naturemode()
{         
         m=100;
         delay(1000);
         m=0;
         delay(3000);
       }
主函數開頭加個while(1),每完成一個周期檢測key狀態
回復

使用道具 舉報

ID:362355 發表于 2018-7-8 13:48 來自手機 | 顯示全部樓層
ahahaha1331 發表于 2018-7-8 11:39
試著把naturemode()改短一些,
naturemode()
{         

我主函數就是不斷掃描鍵盤的,但那個函數改短就無法完成我要的功能啊。。。
回復

使用道具 舉報

ID:367321 發表于 2018-7-8 14:52 | 顯示全部樓層
在K4按鍵對應的執行程序中設置某個狀態變量的值,在按鍵識別程序中,如果識別到按鍵并且這個狀態變量的值不滿足則執行對應按鍵的執行代碼
回復

使用道具 舉報

ID:257407 發表于 2018-7-8 16:01 | 顯示全部樓層
意思是按下那個功能鍵過后,其他鍵都失效了嗎?你可以看看是不是if判鍵語句是無限循環,如果是無限循環了程序就在if里面運行,其它的功能都失效了。如果不是無限循環再找找其它原因吧
回復

使用道具 舉報

ID:362355 發表于 2018-7-8 16:43 來自手機 | 顯示全部樓層
maxuewen 發表于 2018-7-8 14:52
在K4按鍵對應的執行程序中設置某個狀態變量的值,在按鍵識別程序中,如果識別到按鍵并且這個狀態變量的值不 ...

能直接改下程序嗎??
回復

使用道具 舉報

ID:362355 發表于 2018-7-8 17:20 來自手機 | 顯示全部樓層
1174375244 發表于 2018-7-8 16:01
意思是按下那個功能鍵過后,其他鍵都失效了嗎?你可以看看是不是if判鍵語句是無限循環,如果是無限循環了程 ...

就是必須得K4那段程序跑完了,其他按鍵才能有效,中途即使有其他按鍵按下,也沒用
回復

使用道具 舉報

ID:257407 發表于 2018-7-9 16:00 | 顯示全部樓層
我是貔貅 發表于 2018-7-8 09:32
代碼貼上去了,我的意思是,K4按下了,就無法打斷它的運行了

你這段代碼,當你按下那個鍵就會調用這個函數,知道執行結束退出這個函數。如果你想在中途按鍵生效,我認為你可以加return語句,按下一個鍵返回一個值,不按就返回0,根據你返回值執行相應操作,但是這種比較麻煩。如果你不介意的話,也可以用goto語句跳轉,當你按下那個鍵就直接跳到那里,但是goto語句要盡量避免,所以不建議使用,只是我覺得不改變你函數結構的情況下goto簡單一點
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: cao在线 | 国产成人精品a视频一区www | 91精品国产综合久久福利软件 | www.黄网 | 精品伊人久久 | 台湾佬久久 | 一区二区国产在线 | 一区二区视频在线 | 国产成人一区二区三区 | 久久精品中文字幕 | 国产精品中文字幕在线播放 | 国产精品视频免费观看 | 亚洲日本欧美日韩高观看 | 天天干天天草 | 日韩欧美二区 | 午夜寂寞福利视频 | 亚洲精品黑人 | 狠狠色综合网站久久久久久久 | 一区二区三区亚洲视频 | 亚洲视频在线观看 | 日韩在线中文 | 久久综合一区二区三区 | 日韩在线播放视频 | 超碰天天 | 97国产精品视频 | 日韩在线精品 | 成人免费网站www网站高清 | 国产午夜精品一区二区三区四区 | 国产欧美在线播放 | 黄色一级片在线播放 | 日韩精品一区二区三区 | 日韩在线免费播放 | 国产一区免费视频 | 日日夜夜影院 | 午夜伦理影院 | 国产剧情一区 | 夜夜撸av | 麻豆精品国产91久久久久久 | 国产精品高潮呻吟 | 免费麻豆视频 | 国产午夜精品一区二区三区四区 |