本帖最后由 frlop 于 2013-11-18 15:56 编辑
typedef struct{
int Val;
int LastVal;
unsigned char RiseFlag;
unsigned char DropFlag;
} Hys_Typ;
Hys_Typ Hys;
unsigned char Hysteresis()
{
unsigned char dat;
Hys.Val = ADCRead();
if((Hys.Val > 32) && (Hys.LastVal < 32))
Hys.RiseFlag = 1;
if((Hys.Val < 42) && (Hys.LastVal > 42))
Hys.DropFlag = 1;
if(Hys.Val < 32)
{
dat = 1;
Hys.RiseFlag = Hys.DropFlag = 0;
}
else if(Hys.Val <= 42)
{
if(Hys.RiseFlag == 1) dat = 1;
if(Hys.DropFlag == 1) dat = 0;
}
else
{
dat = 0;
Hys.RiseFlag = Hys.DropFlag = 0;
}
Hys.LastVal = Hys.Val;
return dat;
}
没验证过,仅供参考。 |