之前沒寫過狀態機,現在寫了一個簡單的狀態機(不知道算不算狀態機,姑且這么叫),但是很奇怪,就是跑不起來。我測試了各種方法,都沒用,找不到問題在哪里,希望能得到大神的幫助。
簡單說明:
1,狀態機實現功能主要是通過按鍵設置LED亮滅
2,分兩個狀態: LED_OFF, LED_ON. 即LED熄滅,LED點亮, 通過按鍵在兩個狀態間切換
程序如下:
#define LED_OFF 0
#define LED_ON 1
unsigned char STATE=0;
unsigned char led_on; //按鍵設置變量
void state_machine(void);
void LED_ON(void);
int main(void)
{
STATE=LED_OFF;
while(1)
{
state_machine();
}
}
void state_machine(void)
{
switch(STATE)
{
case LED_OFF:
if(led_on)
{
STATE=LED_ON;
}
else
{
STATE=LED_OFF;
}
break;
case LED_ON:
LED_ON();
if(!led_on)
{
STATE=LED_OFF;
}
else
{
STATE=LED_ON;
}
break;
}
}
就這么一個簡單的小程序,就是跑不起來,看起來好像也沒問題,不知道問題出在哪里。我把LED_ON() 直接放在main里,是沒問題的,像這樣:
int main(void)
{
state1=0;
while(1)
{
LED_ON();
}
}
一用狀態機寫法就點不亮了,請求各位有經驗的大神幫助,我基礎不太好,不知道是不是哪里細節沒注意到。謝謝
|