我试着写了一个,不知道对不对
/*定义状态*/
#define NoTrigger 0x01
#define HalfTrigger 0x02
#define FullTrigger 0x03
int NextState = NoTrigger;//定义全局变量,NextState,初始状态为NoTrigger
uint checkstate(int Value,int CurrentState,int Vmin,int Vmax)
{
uint i = 0; //计数值
uint p = 0; //标志位
switch(CurrentState)
{
case NoTrigger:
if(Value<Vmin)
NextState = NoTrigger;
else if(Value>Vmin&&Value<Vmax)
NextState = HalfTrigger;
else
NextState = FullTrigger;
break;
case HalfTrigger:
if(Value<Vmin)
NextState = NoTrigger;
else if(Value>Vmax)
NextState = FullTrigger;
break;
case FullTrigger:
if(Value<Vmin)
NextState = NoTrigger;
else if(Value>Vmin&&Value<Vmax)
NextState = HalfTrigger;
else if(Value>Vmax)
{
i++;
if(i==10)
{
i = 0;
p = 1;
}
}
default:break;
}
return p;
}
在主函数的循环中,形参CurrentState用NextState代替,Value值也更新
|