之前没写过状态机,现在写了一个简单的状态机(不知道算不算状态机,姑且这么叫),但是很奇怪,就是跑不起来。我测试了各种方法,都没用,找不到问题在哪里,希望能得到大神的帮助。
简单说明:
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();
}
}
一用状态机写法就点不亮了,请求各位有经验的大神帮助,我基础不太好,不知道是不是哪里细节没注意到。谢谢
|