只需打印一次数据

问题描述:

我需要用我的项目制作一些“开关”按钮。 当按钮没有被按下,它应该打印只需打印一次数据

停止

如果按下

开始

的问题是,当我不是压力机,加工,它保持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

while(1) 

这连续运行while循环。

因此,它检查按钮,打印出语句,然后直接返回以再次检查它们。

要运行它只有一次,完全删除while循环,但然后程序会很快结束。也许,看看ways to pause the program

我不知道所有的代码,所以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

即时对不起,先生,它不像我想要的。我试过了。但我想要做的更像是,如果我按下按钮,然后释放它(因为按钮不能锁定,我不知道按钮的类型是什么)它的'开'时,当我再次按它将'关' –