2016-11-15 8 views
0

私は自分のプロジェクトで何らかの "オン/オフ"ボタンを作る必要があります。 ボタンが押されていないとき、それはデータを一度だけ印刷する

押されたが、問題はそれ、イムはそれをpressinない場合には、

を開始した場合

を停止し、印刷することになって私はボタンを押し続けると同じようにprintin '停止'を保つ。私はそれが一度だけデータを印刷したい。 もっと詳しく、私が必要とするのは、ボタンが再び押されるまで、ボタンは「STARTED」の位置に留まります。

は、ここに私のコード

{ 
    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)'なし 'break'! –

+0

(1)ボタンが既にオンのときに "PORTJ_IN"と "PIN1_bm"の値を明記してください(2)ボタンは既にオフです(3)ボタンを押して状態をオンからオフに変更したとき(4)ボタンを押して状態をOFFからONに変更します。 – MayurK

答えて

0
while(1) 

これは、whileループを継続的に実行されます。

ボタンをチェックし、ステートメントを印刷してすぐに戻って、もう一度チェックします。

whileループを一度だけ実行するには、whileループを完全に削除しますが、プログラムはかなり早く終了します。

おそらく、ways to pause the programをご覧ください。

0

すべてのコードがわからないので、while(1)は良いコードでも悪いコードでもかまいませんが、変更して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

私は欲しいもののように、申し訳ありません。それを試してみた。しかし、私がやりたかったことは、私がボタンを押してからリリースすると(ボタンがロックされていないので、ボタンのタイプは何もわからない)、 ' –

関連する問題