標(biāo)題:
單片機按鍵程序有時候觸發(fā)不了是為什么?
[打印本頁]
作者:
Nupo
時間:
2023-6-20 08:55
標(biāo)題:
單片機按鍵程序有時候觸發(fā)不了是為什么?
void Key_Scan(void)
{
if(S1 == 0)
{
Old_flag = S1;
gKeyCnt++;
}
else
{
if(Old_flag == 0)
{
Old_flag = S1;
if(gKeyCnt>3&&gKeyCnt<1000)
{
if(gKeyValue < 10)
{
gKeyValue++;
}
else
{
gKeyValue = 0;
}
}
//--------處理鍵值-------------------------
switch(gKeyValue)
{
case 0:
{
Sleep_Flag = 0;
break;
}
case 1:
{
Red = 0;
break;
}
case 2:
{
Green = 0;
break;
}
case 3:
{
Red = 1;
break;
}
case 4:
{
Blue = 0;
break;
}
case 5:
{
Green = 1;
break;
}
case 6:
{
Red = 0;
break;
}
case 7:
{
Green = 0;
break;
}
case 8:
{
Auto_Flag = 1;
Red = 1;
Green = 1;
Blue = 1;
break;
}
case 9:
{
Auto_Flag = 0;
Breath_Flag = 1;
break;
}
case 10:
{
Breath_Flag = 0;
Sleep_Flag = 0;
break;
}
}
Delay_Off();
}
else
{
gKeyCnt = 0;
}
}
}
復(fù)制代碼
有沒有大佬幫我看一下啊,按鍵有時候會觸發(fā)不了,呼吸燈和自動流水,都是在delay里加了keyscan,檢測到標(biāo)志位就break,拜求各位大佬了。!
作者:
lkc8210
時間:
2023-6-20 11:05
呼吸燈和自動流水都不要用delay
作者:
clzs19
時間:
2023-6-21 11:03
因為單片機執(zhí)行的速度過快,也由于程序的復(fù)雜程度使程序走到部分代碼階段會出不去,出不去就一直執(zhí)行.在你按按鍵和執(zhí)行中斷的時候剛好走進這個循環(huán)里,程序判斷當(dāng)然是進入中斷,然后中斷完了回來這個循環(huán)造成這個循環(huán)變死循環(huán)了.也就是你中斷改變了一些因子使程序原本那個循環(huán)的因子突然遭到改變而出不去.然后死循環(huán)了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1