|
代碼如下,其中set_flag是全局變量,為什么我按K1使能鍵,就第一下有用,后面再按K1鍵都沒用。。。。。
unsigned char Key_Scan()
{
if (enable == 0) //檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (enable == 0&&set_flag==0)
{
unsigned int i=0;
set_flag=1;
while ((i<100)&&(enable==0)) //檢測按鍵是否松開
{
Delay10ms(10);
i++;
}
return set_flag;
}
}
else if (enable == 0&&set_flag==1) //檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (enable == 0&&set_flag==1)
{
unsigned int i=0;
set_flag=2;
while ((i<100)&&(enable==0)) //檢測按鍵是否松開
{
Delay10ms(10);
i++;
}
return set_flag;
}
}
else if (enable == 0&&set_flag==2) //檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (enable == 0&&set_flag==2)
{
unsigned int i=0;
set_flag=0;
while ((i<100)&&(enable==0)) //檢測按鍵是否松開
{
Delay10ms(10);
i++;
}
return set_flag;
}
}
return set_flag;
}
void Flag_Scan()
{
if (set_flag==1)
{
GUI_Line_Spark(4, 64, 131, 65, RED);
}
else if (set_flag == 2)
{
GUI_Line_Spark(4, 128, 131, 129, RED);
}
else if (set_flag == 0)
{
GUI_Line(4, 64, 131, 65, RED);
GUI_Line(4, 96, 131, 97, RED);
GUI_Line(4, 128, 131, 129, RED);
}
}
main()
{
Key_Scan();
Flag_Scan();
}
|
|