/*******************************
防抖动的函数
参数:
pinx:需要读取的引脚状态
data:赋值
div:赋值的偏移量
* Shake_count:防抖的计数
*********************************/
#define Shake_Min 1
#define Shake_Mid 5
#define Shake_Max 10
void Shake_Function(u8 pinx, u8* data,u8 div,u8* Shake_count)
{
u8 count = *Shake_count;
if(pinx)//防抖动
{
count++;
}
else
{
count--;
}
if(count>=Shake_Max)
{
count = Shake_Mid;
*data |=div;
}
else if(count<=Shake_Min)
{
count = Shake_Mid;
*data &=(~div);
}
else
{}
*Shake_count = count;
}
/**************************************************************************
*检查拨码开关,根据拨码开关的数字码
***************************************************************************/
void DIP_Switch_Config(void)
{
static u8 DIP_Count[5]={Shake_Mid,Shake_Mid,Shake_Mid,Shake_Mid,Shake_Mid};
Shake_Function(READ_DIP_Switch1,&PROMARK.DIP_Switch_ID,0x01,&DIP_Count[0]);Shake_Function(READ_DIP_Switch5,&PROMARK.DIP_Switch_ID,0x10,&DIP_Count[4]);
}