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

📄 power.c

📁 我个人编写的车载dvd上的程序
💻 C
字号:
/*********************************************************
	Project:		ST FST(TDA7540)
	File name:	power.c
	Description:	
	Write/Modify:	Perry Liang
	Time:		2006-1-24- 15:35:12
*********************************************************/

#include "public.h"

/*********************************************
	Function:		AccCheck
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:39:37
*********************************************/
void AccCheck(void)
{
	switch (AccState)
	{
		case ACC_OFF:
			if (PinIn_ACC)
			{
				AccDelay = 100;		// 1s
				AccState = ACC_ONTEST;
				
			}
			break;
		
		case ACC_ONTEST:
			if (!PinIn_ACC)
			{
				AccState = ACC_OFF; 
				
			}
			else
			{
				if (AccDelay != 0)break;
				AccState = ACC_ON;
				System.AccMode=ACCMODE_ACCONREQ;
			}
			break;
		case ACC_ON:
			if (!PinIn_ACC)
			{
				AccDelay = 5;			//50ms
				AccState = ACC_OFFTEST;
			}
			break;
		
		case ACC_OFFTEST:
			if (PinIn_ACC)
			{
				AccState = ACC_ON;
			}
			else
			{
				if (AccDelay != 0)break;
				AccState = ACC_OFF;
				System.AccMode=ACCMODE_ACCOFFREQ;
			}			
			break;
	}
}


/*********************************************
	Function:		AccMain
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:39:39
*********************************************/
void AccMain(void)
{
	AccProc();	
	//AccDisp();

}
void AccDisp(void)
{
	/*if((System.AccMode==ACCMODE_ACCONINIT||System.AccMode==ACCMODE_ACCOFFINIT)&&AccWaitTimer==0)
	{
		if(AniCounter<1&&System.PowerMode==POWERMODE_POWEROFF)
		{
			Animation(ANIMATION_RUN);
			Clock_display=0;
		}
		else 
		{
			Animation(ANIMATION_STOP);
			Clock_display=1;
		}
	}*/
}

void AccProc(void)
{
	unsigned char i;
	switch(System.AccMode)
	{
		case ACCMODE_ACCON:
			break;
		case ACCMODE_ACCONREQ:
			
			//Wait1ms(100);
			//ADCCSR|=y00100000;	/* A/D Convert Enable */
			//CDPowerOn();
			//Animation(ANIMATION_START, "        WELCOME        ",1);
			AccWaitTimer=8;
			System.AccMode=ACCMODE_ACCONINIT;
			break;
			
		case ACCMODE_ACCONINIT:
			if(AccWaitTimer>0)break;
			//if(AniCounter==0&&F_DispAnimation==1)break;
			//else Animation(ANIMATION_STOP);
			if(System.PowerMode==POWERMODE_POWERON)
			{
				Enable_RDS_Int();
				AudioCalc(AUDIO_ALL_VAL);
				AudioSend(AUDIO_AREA_ALL);
				//ChangeFWorkmode(System.FWorkMode.Save);
				//AudioMute(HARDOFF);  2009-1-2
				//AmpSend(0x6,0x10);
				//ResetIconBuffer();
			}
			else
			{
				//AudioMute(HARDON); 2009-1-2
			//	AmpSend(0,0);
			}
			AccWaitTimer=5;
			System.AccMode=ACCMODE_ACCONWAIT;
			break;
			
		case ACCMODE_ACCONWAIT:
			if(AccWaitTimer>0)break;
			System.AccMode=ACCMODE_ACCON;
			break;

		case ACCMODE_ACCOFF:
           		#if 0
           		if(PinIn_ACC)   /*  ACC ON */
           		{
           			WakeUpTimer=50;
           		}
           		#endif
			break;


		case ACCMODE_ACCOFFREQ:
			if (F_MuteKey)
			{
				F_MuteKey=0;
				AudioMute(SOFTOFF);
			}
			//CDPowerOff();
			Disable_RDS_Int();
			if(System.PowerMode==POWERMODE_POWERON)
			{
				System.FWorkMode.Save=System.FWorkMode.Current;
				//ChangeFWorkmode(WORKMODE_STANDBY);
				//BackupIconBuffer();
			}
			AudioMute(HARDON);
	
                   //  AmpSend(0,0);
	
			//ADCCSR&=y11011111;	//A/D Convert Disable */
			//Animation(ANIMATION_START, "        SEE YOU       ",1);
			System.AccMode=ACCMODE_ACCOFFINIT;
			AccWaitTimer=10;
			break;

		case ACCMODE_ACCOFFINIT:
			if(AccWaitTimer>0)break;
			//if(AniCounter==0&&F_DispAnimation==1)break;
			//else Animation(ANIMATION_STOP);
			//Pin_LCDINH=0;
			//Pin_POWER=0;
			AccWaitTimer=2;
			System.AccMode=ACCMODE_ACCOFFWAIT;
			break;

		case ACCMODE_ACCOFFWAIT:
			if(AccWaitTimer>0)break;
    			System.AccMode=ACCMODE_ACCOFF;
			break;
		
	}
	
}

/*********************************************
	Function:		PowerMain
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:39:41
*********************************************/
void PowerMain(void)
{
	
	PowerProc();
}
#if 0
void PowerDisp(void)
{
     #ifdef D_ADD_EXT
          switch(System.PowerMode){

                case POWERMODE_POWERONREQ:
                	
                      break;
                case POWERMODE_POWEROFFREQ:
                
                      break;
                    
          	}
     #endif
}
#endif
#if 0
void AmpTDA7564Proc(unsigned char on)
{
     
      if(on)
      	{
      	  db0 |= DIAGNOSTIC_ENABLE;
      	  db1 |= STANDBY_ON;
      	  AmpSend(db0,db1);
      	  Wait1ms(600);
      	  db0 |= (MUTE_FRONT_CHANNEL|MUTE_REAR_CHANNEL);
      	  AmpSend(db0,db1);
      	  
      	  //Wait1ms(400);
      	  //AmpSend(0xff,0xff);
      	  debug("amp on");
      	}else{
      	    db0 &= (UNMUTE_FRONT_CHANNEL)|(UNMUTE_REAR_CHANNEL); 
      	    AmpSend(db0,db1);
      	    Wait1ms(20);
      	    db0 &= DIAGNOSTIC_DISABLE;
      	    db1 &= STANDBY_OFF;
      	   AmpSend(db0,db1);
      	  
      	   debug("amp off");
      		}
}
#endif
void PowerProc(void)
{
	switch(System.PowerMode)
	{
		case POWERMODE_POWERON:
			//debug("POWER ON");
		
			break;
			
		case POWERMODE_POWERONREQ:
			debug("POWER ON REQ");
			
			//Wait10us(10);
			Enable_RDS_Int();
			AudioCalc(AUDIO_ALL_VAL);
			AudioSend(AUDIO_AREA_ALL);
			//debug_val("POWER ON MODE:         ",System.FWorkMode.Current);
			//ChangeFWorkmode(System.FWorkMode.Save);
			//ResetIconBuffer();
			//Animation(ANIMATION_STOP);
			//accordo_initial();
			PowerWaitTimer=15;
			//AudioMute(SOFTOFF);
			#ifdef SINO_MOS
			//db0 = 0;
			//db1  = 0;
                    //AmpSend(amp_byte1_init,amp_byte2_init);
                   
                    // AmpTDA7564Proc(ON);
			#endif
			
			System.PowerMode=POWERMODE_POWERONWAIT;
			
			
			break;
			
		case POWERMODE_POWERONWAIT:
			if(PowerWaitTimer>0)break;
			debug("POWER ON WAIT");
			//AudioMute(HARDOFF);
			
			System.PowerMode=POWERMODE_POWERON;
			break;

		case POWERMODE_POWEROFF:
			//debug("POWER OFF");
		   
			break;
			
		case POWERMODE_POWEROFFREQ:
			
			if (F_MuteKey)
			{
			//debug("now is mute");
				F_MuteKey=0;
				AudioMute(SOFTOFF);
			}
			//PrintLine("POW  OFF");
			debug("POWER OFF REQ");
			Disable_RDS_Int();
			
			//Animation(ANIMATION_STOP);
			if(System.FWorkMode.Current !=WORKMODE_STANDBY)
			{
				System.FWorkMode.Save=System.FWorkMode.Current;
				//ChangeFWorkmode(WORKMODE_STANDBY);
			}
			//AudioMute(SOFTON);
			#ifdef SINO_MOS
                    // AmpSend(0,0);
                    
                     // AmpTDA7564Proc(OFF);
			#endif
			//BackupIconBuffer();
			System.PowerMode=POWERMODE_POWEROFFWAIT;
			PowerWaitTimer=15;
			break;

		case POWERMODE_POWEROFFWAIT:
			if(PowerWaitTimer>0)break;
			debug("POWER OFF WAIT");
		
    			System.PowerMode=POWERMODE_POWEROFF;
			break;
		
	}
	
}

/*********************************************
	Function:		PowerOff
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:39:43
*********************************************/

void PowerOff (void)
{
	System.PowerMode=POWERMODE_POWEROFFREQ;
	AmpMode  = AMPMODE_OFFREQ;
	//AmpReq(AMPMODE_OFFREQ);
	

}

/*********************************************
	Function:		PowerOn
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:39:46
*********************************************/
void PowerOn (void)
{
	System.PowerMode=POWERMODE_POWERONREQ;
	AmpMode = AMPMODE_ONREQ;
	//AmpReq(AMPMODE_ONREQ);
}

/*********************************************
	Function:		PowerInit
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:16
*********************************************/
void PowerInit(void)
{

/***************ACC and POWER Must be set INPUT and init value */
	PD_ACC=0;
	PCR1_ACC=1;
	PCR2_ACC=0;

	PD_DVDPOWER = 1;
	PCR1_DVDPOWER = 1;
	PCR2_DVDPOWER = 0;
	PIN_DVDPOWER  = 1;

	PD_ANTPOWER = 1;
	PCR1_ANTPOWER = 1;
	PCR2_ANTPOWER = 0;
	PIN_ANTPOWER = 0;

	PD_CAMERAPOWER = 1;
	PCR1_CAMERAPOWER = 1;
	PCR2_CAMERAPOWER = 0;
	PIN_CAMERAPOWER = 1;

	PD_AMPCTR = 1;
	PCR1_AMPCTR = 1;
	PCR2_AMPCTR = 0;
	PIN_AMPCTR = 1;

	PD_LIGHTDET = 0;
	PCR1_LIGHTDET = 1;
	PCR2_LIGHTDET = 0;

	PD_BREAKDET = 0;
	PCR1_BREAKDET = 1;
	PCR2_BREAKDET = 0;

	PD_POWER  = 1;
	PCR1_POWER = 1;
	PCR2_POWER = 0;
	Pin_POWER  = 0;
	
	AccState = ACC_OFF;


	System.PowerMode=POWERMODE_POWEROFFREQ;
	System.AccMode=ACCMODE_ACCOFF;
}

/*********************************************
	Function:		PowerTimer10ms
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:18
*********************************************/
void PowerTimer10ms(void)
{
	if(AccDelay>0)AccDelay--;
	if(AccWaitTimer>0)AccWaitTimer--;
	if(PowerWaitTimer>0)PowerWaitTimer--;
}

/*********************************************
	Function:		PowerTimer1s
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:20
*********************************************/
void PowerTimer1s(void)
{
	
	
}



void ACCTimer100ms(void)
{
       if(WakeUpTimer>0)WakeUpTimer--;
}

/*********************************************************
				File End
*********************************************************/

⌨️ 快捷键说明

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