⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 switchinput.c

📁 此程序为DP256的开关采集实验程序,已经通过实验证明
💻 C
📖 第 1 页 / 共 2 页
字号:
			{//set error flag & add err counter
				Swt_nCH4ErrCntr++;
				if(Swt_nCH4ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH4Err	|= SWT_STATE_ERR;
					Swt_stCH4		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH4_mp0	= 1;	
				Swt_tiCH4		= LIN_GetCurrentTime();
				Swt_stCH4Err	|= SWT_STATE_DEBOUNCE;				
			}
			else if(LIN_CheckTimeOut(Swt_tiCH4, LIN_GetCurrentTime(),Swt_tiCH4DebounceH_C))
			{
				Swt_nCH4ErrCntr	=0;
				Swt_stCH4Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN4_HS
				Swt_stCH4			= SWT_STATE_ON;
#else
				Swt_stCH4			= SWT_STATE_OFF;
#endif
				
				//Swt_stCH4			= Swt_stCH4_mp0;
				//LIN_MsgStatus[7]	|= LIN_MSG_UPDATED;
			}
		}
		else
		{
			if(Swt_stCH4_mp0	== 1)
			{
				Swt_nCH4ErrCntr++;
				if(Swt_nCH4ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH4Err	|= SWT_STATE_ERR;
					Swt_stCH4		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH4_mp0	= 0;	
				Swt_tiCH4		= LIN_GetCurrentTime();
				Swt_stCH4Err	|= SWT_STATE_DEBOUNCE;
			}
			else if(LIN_CheckTimeOut(Swt_tiCH4, LIN_GetCurrentTime(),Swt_tiCH4Debounce_C))
			{
				Swt_nCH4ErrCntr	=0;
				Swt_stCH4Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN4_HS
				Swt_stCH4			= SWT_STATE_OFF;
#else
				Swt_stCH4			= SWT_STATE_ON;
#endif
				
				//Swt_stCH4			= Swt_stCH4_mp0;
				//LIN_MsgStatus[7]	|= LIN_MSG_UPDATED;
			}
		}
	}
//--------------------------------------------------------------
	else
	{
		if(Swt_stTemp & SWT_IN4_INDEX) 
		{
			if(Swt_stCH4_mp0	== 0)
			{
				Swt_stCH4_mp0	= 1;	
				Swt_tiCH4		= LIN_GetCurrentTime();
				Swt_stCH4Err	|= SWT_STATE_DEBOUNCE;
			}
		}
		else
		{
			if(Swt_stCH4_mp0	== 1)
			{
				Swt_stCH4_mp0	= 0;	
				Swt_tiCH4		= LIN_GetCurrentTime();
				Swt_stCH4Err	|= SWT_STATE_DEBOUNCE;
			}
		}
	}
#endif

#if SWT_IN5_EN	== 1
	if(Swt_stCH5Err	== SWT_STATE_UNKNOWN)
	{
		if(Swt_stTemp & SWT_IN5_INDEX) Swt_stCH5_mp0	= 1;
		else	Swt_stCH5_mp0	= 0;
			
		Swt_tiCH5		= LIN_GetCurrentTime();
		Swt_stCH5Err	|= SWT_STATE_DEBOUNCE;
		Swt_stCH5Err	&= ~SWT_STATE_UNKNOWN;
	}
//--------------------------------------------------------------
	else if((Swt_stCH5Err & SWT_STATE_DEBOUNCE) == SWT_STATE_DEBOUNCE)
	{
		if(Swt_stTemp & SWT_IN5_INDEX) 
		{
			if(Swt_stCH5_mp0	== 0)
			{//set error flag & add err counter
				Swt_nCH5ErrCntr++;
				if(Swt_nCH5ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH5Err	|= SWT_STATE_ERR;
					Swt_stCH5		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]= LIN_MSG_UPDATED;
				}

				Swt_stCH5_mp0	= 1;	
				Swt_tiCH5		= LIN_GetCurrentTime();
				Swt_stCH5Err	|= SWT_STATE_DEBOUNCE;				
			}
			else if(LIN_CheckTimeOut(Swt_tiCH5, LIN_GetCurrentTime(),Swt_tiCH5Debounce_C))
			{
				Swt_nCH5ErrCntr	=0;
				Swt_stCH5Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN5_HS
				Swt_stCH5			= SWT_STATE_ON;
#else
				Swt_stCH5			= SWT_STATE_OFF;
#endif
				
				//Swt_stCH5			= Swt_stCH5_mp0;
				//LIN_MsgStatus[7]	|= LIN_MSG_UPDATED;
			}
		}
		else
		{
			if(Swt_stCH5_mp0	== 1)
			{
				Swt_nCH5ErrCntr++;
				if(Swt_nCH5ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH5Err	|= SWT_STATE_ERR;
					Swt_stCH5		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH5_mp0	= 0;	
				Swt_tiCH5		= LIN_GetCurrentTime();
				Swt_stCH5Err	|= SWT_STATE_DEBOUNCE;
			}
			else if(LIN_CheckTimeOut(Swt_tiCH5, LIN_GetCurrentTime(),Swt_tiCH5Debounce_C))
			{
				Swt_nCH5ErrCntr	=0;
				Swt_stCH5Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN5_HS
				Swt_stCH5			= SWT_STATE_OFF;
#else
				Swt_stCH5			= SWT_STATE_ON;
#endif
				
				//Swt_stCH5			= Swt_stCH5_mp0;
				//LIN_MsgStatus[7]	|= LIN_MSG_UPDATED;
			}
		}
	}
//--------------------------------------------------------------
	else
	{
		if(Swt_stTemp & SWT_IN5_INDEX) 
		{
			if(Swt_stCH5_mp0	== 0)
			{
				Swt_stCH5_mp0	= 1;	
				Swt_tiCH5		= LIN_GetCurrentTime();
				Swt_stCH5Err	|= SWT_STATE_DEBOUNCE;
			}
		}
		else
		{
			if(Swt_stCH5_mp0	== 1)
			{
				Swt_stCH5_mp0	= 0;	
				Swt_tiCH5		= LIN_GetCurrentTime();
				Swt_stCH5Err	|= SWT_STATE_DEBOUNCE;
			}
		}
	}
#endif

#if SWT_IN6_EN	== 1
	if(Swt_stCH6Err	== SWT_STATE_UNKNOWN)
	{
		if(Swt_stTemp & SWT_IN6_INDEX) Swt_stCH6_mp0	= 1;
		else	Swt_stCH6_mp0	= 0;
			
		Swt_tiCH6		= LIN_GetCurrentTime();
		Swt_stCH6Err	|= SWT_STATE_DEBOUNCE;
		Swt_stCH6Err	&= ~SWT_STATE_UNKNOWN;
	}
	else if((Swt_stCH6Err & SWT_STATE_DEBOUNCE) == SWT_STATE_DEBOUNCE)
	{
		if(Swt_stTemp & SWT_IN6_INDEX) 
		{
			if(Swt_stCH6_mp0	== 0)
			{//set error flag & add err counter
				Swt_nCH6ErrCntr++;
				if(Swt_nCH6ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH6Err	|= SWT_STATE_ERR;
					Swt_stCH6		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH6_mp0	= 1;	
				Swt_tiCH6		= LIN_GetCurrentTime();
				Swt_stCH6Err	|= SWT_STATE_DEBOUNCE;				
			}
			else if(LIN_CheckTimeOut(Swt_tiCH6, LIN_GetCurrentTime(),Swt_tiCH6Debounce_C))
			{
				Swt_nCH6ErrCntr	=0;
				Swt_stCH6Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN7_HS
				Swt_stCH6			= SWT_STATE_ON;
				//VirtualWiper();
#else
				Swt_stCH6			= SWT_STATE_OFF;
#endif
				
				//Swt_stCH6			= Swt_stCH6_mp0;
			}
		}
		else
		{
			if(Swt_stCH6_mp0	== 1)
			{
				Swt_nCH6ErrCntr++;
				if(Swt_nCH6ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH6Err	|= SWT_STATE_ERR;
					Swt_stCH6		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH6_mp0	= 0;	
				Swt_tiCH6		= LIN_GetCurrentTime();
				Swt_stCH6Err	|= SWT_STATE_DEBOUNCE;
			}
			else if(LIN_CheckTimeOut(Swt_tiCH6, LIN_GetCurrentTime(),Swt_tiCH6Debounce_C))
			{
				Swt_nCH6ErrCntr	=0;
				Swt_stCH6Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN7_HS
				Swt_stCH6			= SWT_STATE_OFF;
#else
				Swt_stCH6			= SWT_STATE_ON;
				//VirtualWiper();
#endif
				
			}
		}
	}
	else
	{
		if(Swt_stTemp & SWT_IN6_INDEX) 
		{
			if(Swt_stCH6_mp0	== 0)
			{
				Swt_stCH6_mp0	= 1;	
				Swt_tiCH6		= LIN_GetCurrentTime();
				Swt_stCH6Err	|= SWT_STATE_DEBOUNCE;
			}
		}
		else
		{
			if(Swt_stCH6_mp0	== 1)
			{
				Swt_stCH6_mp0	= 0;	
				Swt_tiCH6		= LIN_GetCurrentTime();
				Swt_stCH6Err	|= SWT_STATE_DEBOUNCE;
			}
		}
	}
#endif

#if SWT_IN7_EN	== 1
	if(Swt_stCH7Err	== SWT_STATE_UNKNOWN)
	{
		if(Swt_stTemp & SWT_IN7_INDEX) Swt_stCH7_mp0	= 1;
		else	Swt_stCH7_mp0	= 0;
			
		Swt_tiCH7		= LIN_GetCurrentTime();
		Swt_stCH7Err	|= SWT_STATE_DEBOUNCE;
		Swt_stCH7Err	&= ~SWT_STATE_UNKNOWN;
	}
	else if((Swt_stCH7Err & SWT_STATE_DEBOUNCE) == SWT_STATE_DEBOUNCE)
	{
		if(Swt_stTemp & SWT_IN7_INDEX) 
		{
			if(Swt_stCH7_mp0	== 0)
			{//set error flag & add err counter
				Swt_nCH7ErrCntr++;
				if(Swt_nCH7ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH7Err	|= SWT_STATE_ERR;
					Swt_stCH7		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH7_mp0	= 1;	
				Swt_tiCH7		= LIN_GetCurrentTime();
				Swt_stCH7Err	|= SWT_STATE_DEBOUNCE;				
			}
			else if(LIN_CheckTimeOut(Swt_tiCH7, LIN_GetCurrentTime(),Swt_tiCH7Debounce_C))
			{
				Swt_nCH7ErrCntr	=0;
				Swt_stCH7Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN7_HS
				Swt_stCH7			= SWT_STATE_ON;
				//VirtualWiper();
#else
				Swt_stCH7			= SWT_STATE_OFF;
#endif
				
				//Swt_stCH7			= Swt_stCH7_mp0;
			}
		}
		else
		{
			if(Swt_stCH7_mp0	== 1)
			{
				Swt_nCH7ErrCntr++;
				if(Swt_nCH7ErrCntr > SWT_ERR_MAX_COUNT)
				{
					Swt_stCH7Err	|= SWT_STATE_ERR;
					Swt_stCH7		= SWT_STATE_ERR;
					//LIN_MsgStatus[7]|= LIN_MSG_UPDATED;
				}

				Swt_stCH7_mp0	= 0;	
				Swt_tiCH7		= LIN_GetCurrentTime();
				Swt_stCH7Err	|= SWT_STATE_DEBOUNCE;
			}
			else if(LIN_CheckTimeOut(Swt_tiCH7, LIN_GetCurrentTime(),Swt_tiCH7Debounce_C))
			{
				Swt_nCH7ErrCntr	=0;
				Swt_stCH7Err		&= ~(SWT_STATE_DEBOUNCE | SWT_STATE_ERR);

#if	SWT_IN7_HS
				Swt_stCH7			= SWT_STATE_OFF;
#else
				Swt_stCH7			= SWT_STATE_ON;
				//VirtualWiper();
#endif
				
			}
		}
	}
	else
	{
		if(Swt_stTemp & SWT_IN7_INDEX) 
		{
			if(Swt_stCH7_mp0	== 0)
			{
				Swt_stCH7_mp0	= 1;	
				Swt_tiCH7		= LIN_GetCurrentTime();
				Swt_stCH7Err	|= SWT_STATE_DEBOUNCE;
			}
		}
		else
		{
			if(Swt_stCH7_mp0	== 1)
			{
				Swt_stCH7_mp0	= 0;	
				Swt_tiCH7		= LIN_GetCurrentTime();
				Swt_stCH7Err	|= SWT_STATE_DEBOUNCE;
			}
		}
	}
#endif
}


/************************************
*Function Name: Swt_Init
*Parameter: 	NONE
*Orignator: 	Wang junpeng
*Date:			14th, June, 2005
*Discription:	Initialize CmbSwt Status
*
**************************************/

void Swt_Init(void)
{
	SWT_IN_MASK			= 0;
	Swt_stTemp			= SWT_IN_DATA;
	Swt_stTemp			= 0;
	
#if SWT_IN0_EN	== 1
	Swt_stCH0			= 0xff;
	Swt_stCH0_mp0		= 0xff;
	Swt_tiCH0			= 0;
	Swt_nCH0ErrCntr		= 0;
	Swt_stCH0Err		= SWT_STATE_UNKNOWN;
#endif

#if SWT_IN1_EN	== 1
	Swt_stCH1			= 0xff;
	Swt_stCH1_mp0		= 0xff;
	Swt_tiCH1			= 0;
	Swt_nCH1ErrCntr		= 0;
	Swt_stCH1Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN2_EN	== 1
	Swt_stCH2			= 0xff;
	Swt_stCH2_mp0		= 0xff;
	Swt_tiCH2			= 0;
	Swt_nCH2ErrCntr		= 0;
	Swt_stCH2Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN3_EN	== 1
	Swt_stCH3			= 0xff;
	Swt_stCH3_mp0		= 0xff;
	Swt_tiCH3			= 0;
	Swt_nCH3ErrCntr		= 0;
	Swt_stCH3Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN4_EN	== 1
	Swt_stCH4			= 0xff;
	Swt_stCH4_mp0		= 0xff;
	Swt_tiCH4			= 0;
	Swt_nCH4ErrCntr		= 0;
	Swt_stCH4Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN5_EN	== 1
	Swt_stCH5			= 0xff;
	Swt_stCH5_mp0		= 0xff;
	Swt_tiCH5			= 0;
	Swt_nCH5ErrCntr		= 0;
	Swt_stCH5Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN6_EN	== 1
	Swt_stCH6			= 0xff;
	Swt_stCH6_mp0		= 0xff;
	Swt_tiCH6			= 0;
	Swt_nCH6ErrCntr		= 0;
	Swt_stCH6Err		= SWT_STATE_UNKNOWN;
#endif
#if SWT_IN7_EN	== 1
	Swt_stCH7			= 0xff;
	Swt_stCH7_mp0		= 0xff;
	Swt_tiCH7			= 0;
	Swt_nCH7ErrCntr		= 0;
	Swt_stCH7Err		= SWT_STATE_UNKNOWN;
#endif
}

void Swt_GetKeyPos(void)
{
	//CMD_KeyPos	= Swt_stKeyACC | Swt_stKeyON | Swt_stKeyStrt;
}


unsigned char LIN_CheckTimeOut(unsigned int wTimeStart, unsigned int wTimeNow, unsigned int wTimeOut)
/* END_FCTCALL *************************************************************/
{
#define wActivateCounter ((unsigned int)(wTimeOut+wTimeStart))
  if (wActivateCounter > wTimeStart)
  {
    if ((wTimeNow >= wActivateCounter) ||
        (wTimeNow < wTimeStart))
    {
      return TRUE;
    }
  }
  else if ((wTimeNow >= wActivateCounter) &&
           (wTimeNow < wTimeStart))
  {
    return TRUE;
  }
  return FALSE;
}

unsigned int LIN_GetCurrentTime(void)
{
  return LIN_CurrentTime;	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -