我正在研究一个程序,该程序通过按钮作为键来执行借记交易。到目前为止,我已经获得了默认的“ Hello”消息,直到按了按钮1或按钮2(PB1和PB2)时才显示。我的switch语句似乎有问题。这是我要尝试的操作:在屏幕上用“ Hello”初始化,然后等待用户按下按钮。如果按了PB1,则转到案例2。在案例2中,它将显示总计金额,并提示用户按PB1确认为确定或按PB2取消。如果按了PB1,则转到情况3。如果按了PB2,则返回情况1,并再次显示默认消息,直到用户按下按钮为止。然后,案例3将只确定他们从哪个帐户获取资金,然后转到案例4接受密码#(我没有提供此密码,但这实际上是我要完成的过程)。
未按下时按钮状态为'1',当按下按钮状态为'0'。这就是为什么我尝试使用while(PB1 == 0)的原因,以便如果推送PB1,请执行以下操作。我也尝试过使用if(PB1 == 0)来做同样的事情,但是在这两种情况下,我似乎陷入了反复打印问候的循环中。然后,在此循环中,如果我按PB1,它将立即移至“总计为$ 20.75按1表示确定,或按2表示取消”到“已取消”,此时它仅重复“已取消”,而不是返回到情况1。“已取消”仅在按PB2时才打印,这不是我要做的,但它仍然可以打印。
任何帮助将不胜感激。
int beginProcess = 1;
while (1)
{
switch (beginProcess)
{
case 1:
printf("Hello \r\n");
PB1 = readPin1;
while (PB1 == 0)
{
beginProcess = 2;
}
break;
case 2:
printf("Total is $20.75 \r\n");
printf("Press 1 for OK or 2 for CANCEL\r\n");
PB1 = readPin1;
PB2 = readPin2;
while (PB1 == 0)
{
beginProcess = 3;
}
while (PB2 == 0)
{
printf("Cancelled \r\n");
beginProcess = 1;
}
break;
case 3:
printf("Press 1 for chequing \r\n");
printf("Press 2 for savings \r\n");
PB1 = readPin1;
PB2 = readPin2;
while (PB1 == 0)
{
beginProcess = 4;
}
while (PB2 == 0)
{
beginProcess = 4;
}
break;
}
}
我正在研究一个程序,该程序通过按钮作为键来执行借记交易。到目前为止,我已经能够获得默认消息“ Hello”,并在最开始显示,直到...
首先使用while
逻辑替换switch
语句中的if
循环。第二个使beginProcess
为volatile int
我相信这是您要查找的代码类型。您希望您的while循环在等待输入时阻塞。但是您需要不断读取两个引脚以进行输入,以改变屏幕。该代码应在每个while循环中阻塞,直到检测到输入。 键正在while循环内不断读取引脚状态!