本帖最后由 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;
- }
没验证过,仅供参考。
|