2016-11-15 73 views
0

我需要用我的項目製作一些「開關」按鈕。 當按鈕沒有被按下,它應該打印只需打印一次數據

停止

如果按下

開始

的問題是,當我不是壓力機,加工,它保持printin'停止',同樣當我繼續按下按鈕。我希望它只能打印一次數據。 更多的細節,我需要的是,按鈕保持在'開始'的位置,直到我再次按下它。

這裏是我的代碼

{ 
    int main (void) 
    int TestM4; 

    while(1) 
    { 
    if (!(PORTJ_IN&PIN1_bm)) //test m4 
    { 
     testM4 = 1; 
     printf("%d\n", testM4); 
    } 
    else 
    { 
     testM4 = 0; 
     printf("%d\n", testM4); 
    } 
+2

'while(1)'without'break'! –

+0

當(1)按鈕已經打開時(2)按鈕已經關閉時,清楚地寫入「PORTJ_IN」和「PIN1_bm」的值是什麼(3)當您按下按鈕並將狀態從ON改變爲OFF時(4)按下按鈕並將狀態從OFF更改爲ON。 – MayurK

回答

0
while(1) 

這連續運行while循環。

因此,它檢查按鈕,打印出語句,然後直接返回以再次檢查它們。

要運行它只有一次,完全刪除while循環,但然後程序會很快結束。也許,看看ways to pause the program

0

我不知道所有的代碼,所以while(1)可能是好的或壞的代碼,但你可以測試一個標誌來改變它並打印一次。

while(1) 
{ 
    if (!(PORTJ_IN&PIN1_bm)) //test m4 
    { 
     if(testM4 != 1) // status as button up 
     { 
      testM4 = 1; 
      printf("%d\n", testM4); 
     } 
    } 
    else 
    { 
     if(testM4 != 0) 
     { 
      testM4 = 0; 
      printf("%d\n", testM4); 
     } 
    } 
} 
+0

即時對不起,先生,它不像我想要的。我試過了。但我想要做的更像是,如果我按下按鈕,然後釋放它(因爲按鈕不能鎖定,我不知道按鈕的類型是什麼)它的'開'時,當我再次按它將'關' –