📄 power.c
字号:
#include "public.h"
void AccCheck(void)
{
switch (AccState)
{
case ACC_OFF:
if (Pin_ACC)
{
AccDelay = 100; // 1s
AccState = ACC_ONTEST;
}
break;
case ACC_ONTEST:
if (!Pin_ACC)
{
AccState = ACC_OFF;
}
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;
}
}
void AccMain(void)
{
switch(System.AccMode)
{
case ACCMODE_ACCON:
break;
case ACCMODE_ACCONREQ:
System.AccMode=ACCMODE_ACCONWAIT;
break;
case ACCMODE_ACCONWAIT:
System.AccMode=ACCMODE_ACCON;
break;
case ACCMODE_ACCOFF:
break;
case ACCMODE_ACCOFFREQ:
System.AccMode=ACCMODE_ACCOFFWAIT;
break;
case ACCMODE_ACCOFFWAIT:
System.AccMode=ACCMODE_ACCOFF;
break;
}
}
void PowerMain(void)
{
unsigned char i,j;
unsigned char temp;
switch(System.PowerMode)
{
case POWERMODE_POWERON:
break;
case POWERMODE_POWERONREQ:
Pin_POWER=1;
AudioMute(HARDOFF);
PowerWaitTimer=5;
System.PowerMode=POWERMODE_POWERONWAIT;
break;
case POWERMODE_POWERONWAIT:
if(PowerWaitTimer>0)break;
AudioSend(AUDIO_AREA_ALL);
ChangeFWorkmode(System.FWorkMode.Save);
System.PowerMode=POWERMODE_POWERON;
Animation(ANIMATION_STOP);
break;
case POWERMODE_POWEROFF:
break;
case POWERMODE_POWEROFFREQ:
ChangeFWorkmode(WORKMODE_STANDBY);
System.PowerMode=POWERMODE_POWEROFFWAIT;
PowerWaitTimer=5;
break;
case POWERMODE_POWEROFFWAIT:
if(PowerWaitTimer>0)break;
AudioMute(HARDON);
System.PowerMode=POWERMODE_POWEROFF;
#if TDA7540Tuner
Animation(ANIMATION_START,"ST FST JIG BOARD (TDA7540+TDA7419+TDA7479+TDA7384A+ST72321) -- Press 'Power' key to power on/off, press 'Mode' key to change modes between normal tuner mode and align mode. Red keys only for align mode, black keys only for normal tuner mode and blue keys for both. -- ST Shenzhen CRM",30);
#endif
#if TDA7541Tuner
Animation(ANIMATION_START,"ST FST08 JIG BOARD (TDA7541+TDA7419+TDA7479+TDA7384A+ST72321) -- Press 'Power' key to power on/off, press 'Mode' key to change modes between normal tuner mode and align mode. Red keys only for align mode, black keys only for normal tuner mode and blue keys for both. -- ST Shenzhen CRM",30);
#endif
break;
}
}
void PowerOff (void)
{
System.PowerMode=POWERMODE_POWEROFFREQ;
}
void PowerOn (void)
{
System.PowerMode=POWERMODE_POWERONREQ;
}
void PowerInit(void)
{
Pin_ACC=0;//yete ask: It's input, why need to clear 0
PD_ACC=0;
PO_ACC=1;
Pin_POWER=0;
PD_POWER=1;
PO_POWER=1;
MCCSR = 0x0E; //Timer B Input Capture 1 High Register
AccState = ACC_OFF;
System.PowerMode=POWERMODE_POWEROFF;
System.AccMode=ACCMODE_ACCOFF;
#if TDA7540Tuner
Animation(ANIMATION_START,"ST FST JIG BOARD (TDA7540+TDA7419+TDA7479+TDA7384A+ST72321) -- Press 'Power' key to power on/off, press 'Mode' key to change modes between normal tuner mode and align mode. Red keys only for align mode, black keys only for normal tuner mode and blue keys for both. -- ST Shenzhen CRM",30);
#endif
#if TDA7541Tuner
Animation(ANIMATION_START,"ST FST08 JIG BOARD (TDA7541+TDA7419+TDA7479+TDA7384A+ST72321) -- Press 'Power' key to power on/off, press 'Mode' key to change modes between normal tuner mode and align mode. Red keys only for align mode, black keys only for normal tuner mode and blue keys for both. -- ST Shenzhen CRM",30);
#endif
}
void PowerTimer10ms(void)
{
if(AccDelay>0)AccDelay--;
if(PowerWaitTimer>0)PowerWaitTimer--;
}
void PowerTimer1s(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -