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

📄 main.c

📁 一个DVD组合机的MCU代码,FM,机芯出入仓,功放的控制及DVD数据通过通信来访问.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*-TAB=2-------------------------------------------------------------------*/
/**------------------------------------------------------------------------*
 *                                                                         *
 * NAME:MAIN.C                                                             *
 *                                                                         *
 *                                                                         *
 * UPDATE: 2002/8/15  YCD                                                  *
 *                                                                         *
 *                                                                         *
 *                                                                         *
 *-------------------------------------------------------------------------*/
#include "..\SRC\ZM.H"
#include "..\SRC\key.H"
#include "..\SRC\display.H"
#include "..\SRC\radio.h"

void InitSystem(void);
void MainProc(void);
void InitRun(void);
void RunWorkProcess(void);
void RunStandByProcess(void);
void WorkDvdProcess(void);
void WorkRadioProcess(void);
void ShowIcon(BYTE aIcon);
void TextOut(BYTE Index,BYTE *aBuf);
BYTE IsPressStandBy(void);
WORD GetRadioFrequency(void);
WORD GetRadioCurValue(void);

void WordToStr(BYTE *aBuf,WORD aData);
BYTE IsTimeOut(BYTE aIndexType);
void InitTime(BYTE aIndexType,BYTE aCount);
BYTE Lsb_DetectStMo();
BYTE IsStereo(void);
BYTE IsSaveFrequency(BYTE aBand);

extern bit gCdRoundBool;

bit 		gboolWorkOrStandby;
bit 		gboolDvdOrRadio;
bit 		gboolRadioAmOrFm;


bit 		gbooStandbyInit;
bit 		gboolDvdInit;
bit 		gboolRadioAmInit;
bit			gboolRadioFmInit;
extern  bit gboolRestBoxEnd;
extern  bit gboolMtln;
extern  bit gBoolCanOpenBox;

BYTE    gFmMemAddr=0;
BYTE    gAmMemAddr=0;
extern  bit  gboolSt;
BYTE    gAmMoneyCRT;
#define RADIO_ATOTSEARCH_WAIT2S 1200
WORD    gRadioKeyToAutoTmCount;
bit     gBoolInitMute;
#define RADIO_MUTE_TM 	1200
#define DVD_MUTE_TM   	3500
WORD    gCloseMuteWaitTm;
bit  		gRadioCLK=P1.2;
bit  		gRadioStMo=P1.3;
/**
 *@void main(void)
 *@update 2002/8/20
 */
void main(void)
{
	InitSystem();
	MainProc();
}


/**
 *@void InitSystem(void)
 *@update 2002/8/20
 */
void InitSystem(void)
{
	/*(1) delay */
	Lst_ResetDelay();

	/*(2) io init*/
	InitCdDriver();
	Lsb_InitMpg();
	InitRemote();
	InitRadio();
	InitMpg();
	InitVfd();
	InitAt89c52();

	/*(3) process */
	TurnOffOpenCloseLed();

	/*(4) power process */
	CloseRadioPower();
	CloseDvdPower();
	RstStandbyPowHiProc();

	/*(5)app init */
	InitRun();
}

/**
 *@void MainProc(void)
 *@update 2002/8/20
 */
void MainProc(void)
{
	for(;;){
		CdRoundProc();
		BoxProce();
		OpenCloseLedProc();
		if(gboolWorkOrStandby==RUN_WORK) RunWorkProcess();
		else RunStandByProcess();
	}
}

/**
 *@void InitRun(void)
 *@update 2002/9/2
 */
void InitRun(void)
{
	gCdRoundBool=0;
	gboolWorkOrStandby=RUN_STANDBY;
	gboolDvdOrRadio=WORK_DVD;
	gboolRadioAmOrFm=RADIO_FM;
	gbooStandbyInit=UNINIT;
	gboolDvdInit=UNINIT;
	gboolRadioAmInit=UNINIT;
	gboolRadioFmInit=UNINIT;
	gCloseMuteWaitTm=65535;
	gBoolInitMute=1;
	gboolSt=0;
}


/*-- standby proc ---------------------------------------------------------*/
void StandbyKeyProc(void);
bit gboolNoTurnOffStandbyPower;
/**
 *@void InitStanby(void)
 *@update 2002/9/2
 */
void InitStanby(void)
{
	/*-(1)show -*/
	EnableMute();
	InitVfd();
	TurnOnStandbyLed();

	/* (2)init */
	gbooStandbyInit=INIT;
	gCdRoundBool=0;
	gboolNoTurnOffStandbyPower=1;

	/* (3) proc */
	CloseRadioPower();
	CloseDvdPower();
	ResetBox();

	/*(4) clr key code*/
	ClrRmtKey();
}


/**
 *@void QuitStandby(void)
 *@update 2002/9/2
 */
void QuitStandby(void)
{
	/*- (1)turn of power -*/
	StandbyLow();
	DelayMs(250);

	/* (2) set param*/
	gbooStandbyInit=UNINIT;
	gboolWorkOrStandby=RUN_WORK;
	gboolDvdOrRadio=WORK_DVD;

	/* (3) proc*/
	StartBox();
	TurnOffStandbyLed();

	/* (4) clr key */
	ClrRmtKey();
}


/**
 *@void RunStandByProcess(void)
 *@update 2002/9/2
 */
void RunStandByProcess(void)
{
	if(gbooStandbyInit==UNINIT)	InitStanby();
	else StandbyKeyProc();
}

/**
 *@void StandbyKeyProc(void)
 *@update 2002/9/2
 */
void StandbyKeyProc(void)
{
	BYTE KeyCode;

	/*-(1)turn off power process -------------------------*/
	if(gboolNoTurnOffStandbyPower==1 && gboolRestBoxEnd==1) {
		gboolNoTurnOffStandbyPower=0;
		DelayMs(250);
		StandbyHi();
	}

	/* (2) remotekey process */
	if(RemoteKbHit()){
		KeyCode=RemoteGetKey();
		if(KeyCode==RADIO_STANDBY_EKY&&gboolRestBoxEnd==1) QuitStandby();
	}

	/* (3) local standby key process */
	else if(IsPressStandBy()) QuitStandby();
}


/**
 *@void RunWorkProcess(void)
 *@update 2002/9/2
 */
void RunWorkProcess(void)
{
	if(gboolDvdOrRadio==WORK_DVD) WorkDvdProcess();
	else WorkRadioProcess();
	if(gBoolInitMute==1&&gCloseMuteWaitTm==0){
		DesableMute();
		gBoolInitMute=0;
	}
}

const BYTE kMuteBuf[]="  MUTE  ";
bit gboolMuteShow;
/**
 *@void MuteShow(void)
 *@update 20002/10/8
 */
void MuteShow(void)
{
	if(!gboolMtln){
		if(IsTimeOut(INDEX_MUTE_SHOW)){
			HideIcon(ICON_COL_7G);
			HideIcon(ICON_COL_5G);
			HideIcon(ICON_DP_5G);
			HideIcon(ICON_DP_7G);
			if(gboolMuteShow)	TextOut(0,kMuteBuf);
			else ClrDigitRang();
			gboolMuteShow=~gboolMuteShow;
			InitTime(INDEX_MUTE_SHOW,1);
		}
	}
}

/*------------------------------------------------------------------------*/
/*       dvd   process                                                    */
/*------------------------------------------------------------------------*/
void DvdKeyProcess(void);
const BYTE kDvdTitle[]="  DVD  ";
extern bit gBoxOpenOrClose;

/**
 *@void InitDvd(void)
 *@update 2002/9/2
 */
void InitDvd(void)
{
	/*(1) clear screnn */
	ClrWorkRang();
	TextOut(0,kDvdTitle);

	/*(2) init */
	StopCdRound();
	gboolDvdInit=INIT;
	gBoolCanOpenBox=1;

	/*(3) power */
	CloseRadioPower();
	OpenDvdPower();

	/*(4) process */
	TurnOnServe();

	/*(5) select sound */
	SelectDvdSound();

	/*(6) clr rmt key */
	ClrRmtKey();

	gBoolInitMute=1;
	gCloseMuteWaitTm=DVD_MUTE_TM;
}

/**
 *@void QuitDvd(void)
 *@update 2002/9/2
 */
void QuitDvd(void)
{
	/*(1) mute */
	EnableMute();
	DelayMs(100);

	/*(2) uninit*/
	gboolDvdInit=UNINIT;

	/*(3) process*/
	TurnOffServe();

	/*(4) Power process */
	CloseDvdPower();

	/*(4) clear rmt key*/
	ClrRmtKey();
}


/**
 *@void WorkDvdProcess(void)
 *@update 2002/9/2
 */
void WorkDvdProcess(void)
{
	if(gboolDvdInit==UNINIT) InitDvd();
	else{
		MpgRcvProc();
		DvdKeyProcess();
		if(IsPressStandBy()){
			gboolWorkOrStandby=RUN_STANDBY;
			QuitDvd();
		}
	}
}


/**
 *@void DvdKeyProcess(void)
 *@update 2002/9/2
 */
void SnedKeytoMpg(BYTE aKeyCode);
void DvdKeyProcess(void)
{
	BYTE KeyCode;

	/* vfd key process */
	if(VfdKbHit()){
		KeyCode=VfdGetKey();
		switch(KeyCode){
			case RADIO_DVD_RADIO_KEY:
				gboolDvdOrRadio=WORK_RADIO;
				QuitDvd();
				return;
			case RADIO_NO_KEY:
				break;
			case RADIO_OPENCLOSE_KEY:
				KeyOpnClsManagerBox();
				break;
			case RADIO_PLAY_KEY:
				CloseBox();
				/*break send key*/
			default:
				SnedKeytoMpg(KeyCode);
				break;
		}
	}

	/* remote key process */
	if(RemoteKbHit()){
		KeyCode=RemoteGetKey();
		switch(KeyCode){
			case RADIO_STANDBY_EKY:
				gboolWorkOrStandby=RUN_STANDBY;
				QuitDvd();
				break;
			case RADIO_DVD_RADIO_KEY:
				gboolDvdOrRadio=WORK_RADIO;
				QuitDvd();
				break;
			case RADIO_OPENCLOSE_KEY :
				KeyOpnClsManagerBox();
				break;
			case 	RADIO_MUTE_KEY:
				if(gBoolInitMute==1) break;
				MuteProc();
				if(gboolMtln) DVDDiMute();
				else DVDMute();
				break;
			case RADIO_PLAY_KEY:
				CloseBox();
				break;
		}
	}
}


/*------------------------------------------------------------------------*/
/*       radio process                                                    */
/*------------------------------------------------------------------------*/
void RadioFmProcess(void);
void RadioAmProcess(void);
void ShowFmFrequency(void);
void SaveIconProc(void);

/**
 *@void WorkRadioProcess(void)
 *@update 2002/9/2
 */
void WorkRadioProcess(void)
{
	if(gboolRadioAmOrFm==RADIO_FM) RadioFmProcess();
	else RadioAmProcess();
	SaveIconProc();
	RadioMonoStereoShow();
	if(gBoolInitMute==0) MuteShow();
}

/*------fm--------------------------------------------------------------------*/
extern bit  gboolRmtContinueKey;

void RadioDownSearch(BYTE aBand);
void RadioUpSearch(BYTE aBand);
void SaveRadioToFlash(BYTE aNumber);
void LoadRadioFromFlash(BYTE aNumber);
void RadioFmKeyProc(void);
void InitAutoSearchCountKey(void);

#define RADIO_NORMAL   0
#define RADIO_SAVE	   1
#define RADIO_VOICE		 2

bit		gboolSaveIcon;
BYTE  gRadioMode;
BYTE  gOldRadioMode;
BYTE 	gRadioCurAddr;
BYTE  gRadioAutoSearchCountKey;
bit   gboolAutoShow;
BYTE  gAutoSearchFlag;
bit   gboolAutoSearchUp;


const BYTE	kNumber[20][3]={
"1","2","3","4","5","6","7","8","9",
"10","11","12","13","14","15","16","17","18","19","20"};


/**
 *@void InitAutoSearchCountKey(void)
 *@update 2002/9/2

⌨️ 快捷键说明

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