📄 power.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 (Pin_ACC)
{
AccDelay = 100; // 1s
AccState = ACC_ONTEST;
//AudioMute(HARDON);
}
break;
case ACC_ONTEST:
if (!Pin_ACC)
{
AccState = ACC_OFF;
//AudioMute(HARDOFF);
}
else
{
if (AccDelay != 0)break;
AccState = ACC_ON;
System.AccMode=ACCMODE_ACCONREQ;
}
break;
case ACC_ON:
if (!Pin_ACC)
{
AccDelay = 5; //50ms
AccState = ACC_OFFTEST;
}
break;
case ACC_OFFTEST:
if (Pin_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:
Pin_POWER=1;
Pin_LCDINH=1;
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);
ResetIconBuffer();
}
else
{
AudioMute(HARDON);
}
AccWaitTimer=5;
System.AccMode=ACCMODE_ACCONWAIT;
break;
case ACCMODE_ACCONWAIT:
if(AccWaitTimer>0)break;
System.AccMode=ACCMODE_ACCON;
break;
case ACCMODE_ACCOFF:
if(WakeUpTimer==0 )
{
Pin_LCDINH=0;
#ifdef MCU8_664M
TACR1 = 0;// Timer1 Output Compare Int Disable */
asm WFI;
TACR1 = 0x40;// Timer1 Output Compare Int Enable */
#else
asm HALT;
#endif
}
if(Pin_ACC) /* ACC ON */
{
WakeUpTimer=50;
}
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);
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)
{
PowerDisp();
PowerProc();
}
void PowerDisp(void)
{
}
void PowerProc(void)
{
switch(System.PowerMode)
{
case POWERMODE_POWERON:
break;
case POWERMODE_POWERONREQ:
Enable_RDS_Int();
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_ALL);
ChangeFWorkmode(System.FWorkMode.Save);
ResetIconBuffer();
Animation(ANIMATION_STOP);
//accordo_initial();
PowerWaitTimer=5;
System.PowerMode=POWERMODE_POWERONWAIT;
break;
case POWERMODE_POWERONWAIT:
if(PowerWaitTimer>0)break;
AudioMute(HARDOFF);
System.PowerMode=POWERMODE_POWERON;
break;
case POWERMODE_POWEROFF:
break;
case POWERMODE_POWEROFFREQ:
if (F_MuteKey)
{
F_MuteKey=0;
AudioMute(SOFTOFF);
}
Disable_RDS_Int();
Animation(ANIMATION_STOP);
if(System.FWorkMode.Current!=WORKMODE_STANDBY)
{
System.FWorkMode.Save=System.FWorkMode.Current;
ChangeFWorkmode(WORKMODE_STANDBY);
}
AudioMute(HARDON);
BackupIconBuffer();
System.PowerMode=POWERMODE_POWEROFFWAIT;
PowerWaitTimer=5;
break;
case POWERMODE_POWEROFFWAIT:
if(PowerWaitTimer>0)break;
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;
}
/*********************************************
Function: PowerOn
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:39:46
*********************************************/
void PowerOn (void)
{
System.PowerMode=POWERMODE_POWERONREQ;
}
/*********************************************
Function: PowerInit
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:16
*********************************************/
void PowerInit(void)
{
PD_ACC=0; //Pin PF7//pull up input
PO_ACC=1;
Pin_ACC=0;
//PD_ACC=1;
//PO_ACC=1;
//Pin_ACC=1;
PD_POWER=1;//Pin PF0//push-pull output
PO_POWER=1;
Pin_POWER=1;
MCCSR = 0x0E;//MCU control and status reg
AccState = ACC_OFF;
System.PowerMode=POWERMODE_POWEROFF;
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 + -