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

📄 key.c

📁 汽车上四车窗升降器:包括电路图与源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
		if(vDrMDownTC == 0)
		{
			bDrMED = 0;
			fDrMFall();
			vDrMDownTC = 1;
			
			fEnDistinguishDriverMotorType();
		}
		else
		{	bDigDrWinEn = 1;
			if(vDrMDownTC++ > mMaxWinMoveTime)
			{
				vDrMDownTC--;
				fDrMStop();
			}	
		}
		return;
	}
 
//rise			
		if ( !bDrMDown && !bDrMUp && bDrMAutoUp && !bDrLock ||  bDrMUp && !bDrLock ) 
		{

			if(bDrMED & bDrMDR)
			return; 
			bDrMStop = 0;
	//	fDiagDrWin();
			if(vDrMUpTC == 0)
			{
				bDrMED = 0;
				fDrMRise();
				vDrMUpTC = 1;
		
	 			fEnDistinguishDriverMotorType();
			}
			else
			{	bDigDrWinEn = 1;
				if(vDrMUpTC++ > mMaxWinMoveTime)
				{ 
					vDrMUpTC--;
					fDrMStop();
				}
			}
			return;
		}

//stop
	fDrMStop();
	


   	bDrMAutoUp = 0;
   	bDrMAutoDown = 0;
}

void fFPWinProcess(void)
{
	if(!bIGNIsOk||bBatterIsHightVolt||bBatteryIsLowVolt||bEnFPLRTC)
	{
		bFPMDown = 0;
		bFPMUp = 0;
    	bFPMAutoDown = 0;

		bDrCtrFPMDown = 0;
		bDrCtrFPMUp = 0;
    	bDrCtrFPMAutoDown = 0;
	}
	
	
	if(bFPMDown)
	{	if(vFPKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vFPKeyPreDownTC--;
			bFPMAutoDown = 1;												//autoDown
			bFPConPressDown = 1;
		}
	}	

	if(bDrCtrFPMDown)
	{	if(vDrCtrFPKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vDrCtrFPKeyPreDownTC--;
			bDrCtrFPMAutoDown = 1;											//autoDown
			bDrCtrFPConPressDown = 1;
		}
	}


//driver auto down without pressing the key && passenger press the key =  stop,
	if( !bDrCtrFPMDown && !bDrCtrFPMUp && bDrCtrFPMAutoDown && (bFPMUp || bFPMDown) )  
	bFPLock = 1;

//passenger auto down, then passenger press the key = stop,
	if(  bFPMAutoDown && ((bFPMDown && !bFPConPressDown ) || bFPMUp) &&  !bDrCtrFPMDown && !bDrCtrFPMUp )
	bFPLock = 1;


//passenger auto down without pressing the key && drver press key  = stop,
	if( !bFPMDown && !bFPMUp && bFPMAutoDown && (bDrCtrFPMUp || bDrCtrFPMDown) )  
	bDrCtrFPLock = 1;

//driver auto down, then driver press the key = stop,
	if(  bDrCtrFPMAutoDown && ((bDrCtrFPMDown && !bDrCtrFPConPressDown ) || bDrCtrFPMUp) && !bFPMDown && !bFPMUp )  
	bDrCtrFPLock = 1;


	if (!bFPMDown && !bFPMUp)
	bFPLock = 0;


	if (!bDrCtrFPMDown && !bDrCtrFPMUp)
	bDrCtrFPLock = 0;


 //fall
	if (    (!bDrCtrFPMDown && bDrCtrFPMAutoDown && !bFPLock && !bDrCtrFPLock && !bFPMUp )  || 
			( bDrCtrFPMDown && !bFPLock && !bDrCtrFPLock )									||	
			(( bFPMAutoDown ||bFPMDown) && !bFPLock && !bDrCtrFPLock && !bDrCtrFPMUp ) 		
		)
	{
		if(bFPMED & !bFPMDR)
		return; 
		bFPMStop = 0;
		if(vFPMDownTC == 0)
		{
			bFPMED = 0;
			fFPPMFall();
			vFPMDownTC = 1;

		}
		else
		{	bDigFPWinEn = 1;
			if(vFPMDownTC++ > mMaxWinMoveTime)
			{
				vFPMDownTC--;
				fFPPMStop();
			}	
		}
		return;
	}
 
//rise			
		if((bDrCtrFPMUp || bFPMUp ) && !bFPLock && !bDrCtrFPLock && !bFPMAutoDown  && !bFPMDown) 
		{	

			if(bFPMED & bFPMDR)
			return; 
			bFPMStop = 0;
	//	fDiagDrWin();
			if(vFPMUpTC == 0)
			{	bFPMED = 0;
				fFPPMRise();
				vFPMUpTC = 1;
			}
			else
			{	bDigFPWinEn = 1;
				if(vFPMUpTC++ > mMaxWinMoveTime)
				{ 
					vFPMUpTC--;
					fFPPMStop();
				}
			}
			return;
		}

//stop
	fFPPMStop();
	


   bFPMAutoDown = 0;
   bDrCtrFPMAutoDown = 0;

}


void fRLWinProcess(void)
{
	if(!bIGNIsOk||bBatterIsHightVolt||bBatteryIsLowVolt||bEnRLLRTC)
	{
		bRLMDown = 0;
		bRLMUp = 0;
    	bRLMAutoDown = 0;

		bDrCtrRLMDown = 0;
		bDrCtrRLMUp = 0;
    	bDrCtrRLMAutoDown = 0;
	}
	
	
	if(bIHBisEnable)
	{
		bRLMDown = 0;
		bRLMUp = 0;
    bRLMAutoDown = 0;
	}


	if(bRLMDown)
	{	if(vRLKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vRLKeyPreDownTC--;
			bRLMAutoDown = 1;												//autoDown
			bRLConPressDown = 1;
		}
	}	

	if(bDrCtrRLMDown)
	{	if(vDrCtrRLKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vDrCtrRLKeyPreDownTC--;
			bDrCtrRLMAutoDown = 1;											//autoDown
			bDrCtrRLConPressDown = 1;
		}
	}


//driver auto down without pressing the key && passenger press the key =  stop,
	if( !bDrCtrRLMDown && !bDrCtrRLMUp && bDrCtrRLMAutoDown && (bRLMUp || bRLMDown) )  
	bRLLock = 1;

//passenger auto down, then passenger press the key = stop,
	if(  bRLMAutoDown && ((bRLMDown && !bRLConPressDown ) || bRLMUp) &&  !bDrCtrRLMDown && !bDrCtrRLMUp )
	bRLLock = 1;


//passenger auto down without pressing the key && drver press key  = stop,
	if( !bRLMDown && !bRLMUp && bRLMAutoDown && (bDrCtrRLMUp || bDrCtrRLMDown) )  
	bDrCtrRLLock = 1;

//driver auto down, then driver press the key = stop,
	if(  bDrCtrRLMAutoDown && ((bDrCtrRLMDown && !bDrCtrRLConPressDown ) || bDrCtrRLMUp) && !bRLMDown && !bRLMUp )  
	bDrCtrRLLock = 1;


	if (!bRLMDown && !bRLMUp)
	bRLLock = 0;


	if (!bDrCtrRLMDown && !bDrCtrRLMUp)
	bDrCtrRLLock = 0;


 //fall
	if (    (!bDrCtrRLMDown && bDrCtrRLMAutoDown && !bRLLock && !bDrCtrRLLock && !bRLMUp )  || 
			( bDrCtrRLMDown && !bRLLock && !bDrCtrRLLock )									||	
			(( bRLMAutoDown ||bRLMDown) && !bRLLock && !bDrCtrRLLock && !bDrCtrRLMUp ) 		
		)
	{

		if(bRLMED & !bRLMDR)
		return; 
		bRLMStop = 0;
		if(vRLMDownTC == 0)
		{
			bRLMED = 0;
			fRLPMFall();
			vRLMDownTC = 1;
		}
		else
		{	bDigRLWinEn = 1;
			if(vRLMDownTC++ > mMaxWinMoveTime)
			{
				vRLMDownTC--;
				fRLPMStop();
			}	
		}
		return;
	}
 
//rise			
		if((bDrCtrRLMUp || bRLMUp ) && !bRLLock && !bDrCtrRLLock && !bRLMAutoDown  && !bRLMDown) 
		{
			if(bRLMED & bRLMDR)
			return; 
			bRLMStop = 0;
	//	fDiagDrWin();
			if(vRLMUpTC == 0)
			{	
				bRLMED = 0;
				fRLPMRise();
				vRLMUpTC = 1;
			}
			else
			{	bDigRLWinEn = 1;
				if(vRLMUpTC++ > mMaxWinMoveTime)
				{ 
					vRLMUpTC--;
					fRLPMStop();
				}
			}
			return;
		}

//stop
	fRLPMStop();
	


   bRLMAutoDown = 0;
   bDrCtrRLMAutoDown = 0;

}



void fRRWinProcess(void)
{
	if(!bIGNIsOk||bBatterIsHightVolt||bBatteryIsLowVolt||bEnRRLRTC)
	{
		bRRMDown = 0;
		bRRMUp = 0;
    	bRRMAutoDown = 0;

		bDrCtrRRMDown = 0;
		bDrCtrRRMUp = 0;
    	bDrCtrRRMAutoDown = 0;
	}
	
	
	if(bIHBisEnable)
	{
		bRRMDown = 0;
		bRRMUp = 0;
    	bRRMAutoDown = 0;
	}


	if(bRRMDown)
	{	if(vRRKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vRRKeyPreDownTC--;
			bRRMAutoDown = 1;												//autoDown
			bRRConPressDown = 1;
		}
	}	

	if(bDrCtrRRMDown)
	{	if(vDrCtrRRKeyPreDownTC++ > mAutoThresholdTime)
		{			
			vDrCtrRRKeyPreDownTC--;
			bDrCtrRRMAutoDown = 1;											//autoDown
			bDrCtrRRConPressDown = 1;
		}
	}


//driver auto down without pressing the key && passenger press the key =  stop,
	if( !bDrCtrRRMDown && !bDrCtrRRMUp && bDrCtrRRMAutoDown && (bRRMUp || bRRMDown) )  
	bRRLock = 1;

//passenger auto down, then passenger press the key = stop,
	if(  bRRMAutoDown && ((bRRMDown && !bRRConPressDown ) || bRRMUp) &&  !bDrCtrRRMDown && !bDrCtrRRMUp )
	bRRLock = 1;


//passenger auto down without pressing the key && drver press key  = stop,
	if( !bRRMDown && !bRRMUp && bRRMAutoDown && (bDrCtrRRMUp || bDrCtrRRMDown) )  
	bDrCtrRRLock = 1;

//driver auto down, then driver press the key = stop,
	if(  bDrCtrRRMAutoDown && ((bDrCtrRRMDown && !bDrCtrRRConPressDown ) || bDrCtrRRMUp) && !bRRMDown && !bRRMUp )  
	bDrCtrRRLock = 1;


	if (!bRRMDown && !bRRMUp)
	bRRLock = 0;


	if (!bDrCtrRRMDown && !bDrCtrRRMUp)
	bDrCtrRRLock = 0;


 //fall
	if (    (!bDrCtrRRMDown && bDrCtrRRMAutoDown && !bRRLock && !bDrCtrRRLock && !bRRMUp )  || 
			( bDrCtrRRMDown && !bRRLock && !bDrCtrRRLock )									||	
			(( bRRMAutoDown ||bRRMDown) && !bRRLock && !bDrCtrRRLock && !bDrCtrRRMUp ) 		
		)
	{	

		if(bRRMED & !bRRMDR)
		return; 
		bRRMStop = 0;
		if(vRRMDownTC == 0)
		{	bRRMED = 0;
			fRRPMFall();
			vRRMDownTC = 1;

		}
		else
		{	bDigRRWinEn = 1;
			if(vRRMDownTC++ > mMaxWinMoveTime)
			{
				vRRMDownTC--;
				fRRPMStop();
			}	
		}
		return;
	}
 
//rise			
		if((bDrCtrRRMUp || bRRMUp ) && !bRRLock && !bDrCtrRRLock && !bRRMAutoDown  && !bRRMDown) 
		{

			if(bRRMED & bRRMDR)
			return;	
			bRRMStop = 0;
	//	fDiagDrWin();
			if(vRRMUpTC == 0)
			{	bRRMED = 0;
				fRRPMRise();
				vRRMUpTC = 1;
			}
			else
			{	bDigRRWinEn = 1;
				if(vRRMUpTC++ > mMaxWinMoveTime)
				{ 
					vRRMUpTC--;
					fRRPMStop();
				}
			}
			return;
		}

//stop
	fRRPMStop();
	


   bRRMAutoDown = 0;
   bDrCtrRRMAutoDown = 0;

}



void fSCanInhibitedInput(void)
{
					if(IHB)
					{	
							if (vIHBKeyBouncedTC++ > mJitter)
							{	
									bInhibitedPressed = 0;
							   		vIHBKeyBouncedTC--;
									vIHBKeyPressedTC = 0;
							}
					}
					else 	
					{
							if (vIHBKeyPressedTC++ > mJitter+5)
							{ 		
									if(vIHBKeyPressedTC == mJitter+7)
									{	
										vIHBKeyPressedTC +=4; 
										bInhibitedPressed = 1;
									}	 
									vIHBKeyPressedTC--;
									vIHBKeyBouncedTC = 0;
							}
					}			
}


void fIHBKeyProcess(void)
{
		if(bInhibitedPressed)
		{	
				bInhibitedPressed = 0;				
				bIHBisEnable = 1^bIHBisEnable;
				if(bIHBisEnable)
				TurnOnIHBLight;
				else
				TurnOffIHBLight;
		}
}





void fGetPowerVolt(void)
{			
		unsigned char vPowerVolt;

	if(bEnSvsPower)	
	{
		fItlADC();
		vPowerVolt = fADConverter(AD_Power);
	
		vHigtVoltSeries	= vHigtVoltSeries<<1;
		vLowVoltSeries	= vLowVoltSeries<<1;
		bBatterIsHightVolt = 0;
		bBatteryIsLowVolt= 0;
		if( vPowerVolt > mHighVolt )
		if( ++vHigtVoltSeries == 0xff )
		bBatterIsHightVolt = 1;
		
		if( vPowerVolt < mLowVolt )
		if( ++vLowVoltSeries == 0xff)
		bBatteryIsLowVolt = 1;
	}
}








void fSelectHC4051Channel(unsigned char ChannelNum)
{
	ChannelNum &= 0x07;
	HC4051_A = ChannelNum;
	HC4051_B = ChannelNum>>1;
	HC4051_C = ChannelNum>>2;
	fDelay(200);
}



unsigned char fADConverter(unsigned char ChannelNum)
{	
	unsigned char ad_result = 0;
	ChannelNum &= 0x07;
	ChannelNum <<=2;
	ADCON0 |= (ChannelNum + 0x01);     //ADON

	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();
	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();
	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	
	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();
	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();
	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();	nop();
																			//sample time
	GODONE = 1;
	while(GODONE);
	ad_result = ADRESH; 
	return(ad_result);
}

void fDelay(unsigned int us)
{
	while (us--);	
}



#endif

⌨️ 快捷键说明

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