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

📄 cddriver.c

📁 一个DVD组合机的MCU代码,FM,机芯出入仓,功放的控制及DVD数据通过通信来访问.
💻 C
字号:
/*-TAB=2-------------------------------------------------------------------*/
/**------------------------------------------------------------------------*
 *                                                                         *
 * NAME:CDDRIVER.C                                                         *
 *                                                                         *
 *                                                                         *
 * UPDATE: 2002/8/15  YCD                                                  *
 *                                                                         *
 *                                                                         *
 *                                                                         *
 *-------------------------------------------------------------------------*/

#include "..\SRC\ZM.H"
#include "..\SRC\key.H"
#include "..\SRC\display.H"

void DelayMs(BYTE aCount);
void CloseServe(void);
void OpenServe(void);
BYTE IsTimeOut(BYTE aIndexType);
void InitTime(BYTE aIndexType,BYTE aCount);


bit SERVE_CLOSE=P2.4;  /* CLOSE STATUS P2.4 */
bit SERVE_OPEN=P2.3;   /* OPEN STATUS P2.3  */
extern bit gBoolCanOpenBox; /*close delay*/
extern bit gboolDvdOrRadio;

/*       old
bit 	gDvdPower=P1.7;
bit 	gStandbyPower=P1.6;
*/

bit 	gDvdPower=P1.6;
bit 	gStandbyPower=P1.7;
bit   gboolRestBoxEnd;

bit 	SERVE_STANDBY=P2.0; /* STANDBY status P2.0 */

bit 	DRIVER_ML=P3.0;     /* M+ RXD */
bit 	DRIVER_MR=P3.1;     /* M- TXD */
bit 	SW1=P3.7;           /* ??? HX is not define*/
bit 	SW2=P2.1;           /* */
bit  	SW3=P2.2;           /* */


#define BOX_DEST_NOW		 0
#define BOX_DEST_OPEN    1
#define BOX_DEST_PLAY    2
#define BOX_DEST_CLOSE   3
BYTE  gBoxDest=BOX_DEST_NOW;
bit	  gBoxOpenOrClose;

/**
 *@void InitCdDriver(void)
 *@update 2002/9/2
 */
void InitCdDriver(void)
{
	DRIVER_ML=1;
	DRIVER_MR=1;
}

/**
 *@void OpenDiskDrv(void)
 *@update 2002/815
 */
void OpenDiskDrv(void)
{
	InitCdDriver();
	DelayMs(5);

	DRIVER_ML=0;
	DRIVER_MR=1;
	TurnOnOpenCloseLed();

	DelayMs(5);
}


/**
 *@void CloseDiskDrv(void)
 *@update 2002/815
 */
void CloseDiskDrv(void)
{
	InitCdDriver();
	DelayMs(5);

	DRIVER_ML=1;
	DRIVER_MR=0;
	TurnOnOpenCloseLed();

	DelayMs(5);
}


/**
 *@void StopDiskDrv(void)
 *@update 2002/815
 */
void StopDiskDrv(void)
{
	DRIVER_ML=1;
	DRIVER_MR=1;
	TurnOffOpenCloseLed();
}


/*-------------------------------------------------------------------------*/
/**
 *@void StartBox(void)
 *@update 200/9/7
 */
void StartBox(void)
{
	if( SW1==0 && SW2==0 && SW3==1 ){
		OpenServe();
		OpenDiskDrv();
		gBoxDest=BOX_DEST_PLAY;
		InitTime(INDEX_CLOSE_OPEN_WAIT,2);
	}
}



/**
 *@void ResetBox(void)
 *@update 200/9/7
 */
void ResetBox(void)
{
	if(SW1==0&&SW2==0&&SW3==1) {
		gboolRestBoxEnd=1;
		return;
	}
	CloseServe();
	CloseDiskDrv();
	gBoxDest=BOX_DEST_CLOSE;
	InitTime(INDEX_CLOSE_OPEN_WAIT,8);

	#define  TO_LHH

	#ifdef TO_LHH
	gboolRestBoxEnd=0;
	#else
	gboolRestBoxEnd=1;
	#endif
}


/**
 *@void CloseBox(void)
 *@update 200/9/7
 */
void OpenBox(void)
{
	if(SW1==0&&SW2==1&&SW3==0) return;
	else if(SW1==1&&SW2==1&&SW3==1){
		if(gBoolCanOpenBox==1){
			OpenDiskDrv();
			gBoxDest=BOX_DEST_OPEN;
			CloseServe();
			InitTime(INDEX_CLOSE_OPEN_WAIT,5);
		}
	}
}


/**
 *@void CloseBox(void)
 *@update 200/9/7
 */
void CloseBox(void)
{
	if(SW1==1&&SW2==1&&SW3==1) return;
	else if(SW1==0&&SW2==1&&SW3==0){
		OpenServe();
		CloseDiskDrv();
		gBoxDest=BOX_DEST_PLAY;
		InitTime(INDEX_CLOSE_OPEN_WAIT,5);
		if(gboolDvdOrRadio==WORK_DVD){
			SnedKeytoMpg(UPD6311_KEY_BOXCLOSE);
			gBoolCanOpenBox=0;
		}
	}
}

/**
 *@void ServeProce(void)
 *@UPDATE 2002/8/17
 */
void BoxProce(void)
{
	switch(gBoxDest){
		case BOX_DEST_OPEN:
			if(SW1==0&&SW2==1&&SW3==0) StopDiskDrv();
			break;
		case BOX_DEST_PLAY:
			if(SW1==1&&SW2==1&&SW3==1) StopDiskDrv();
			break;
		case BOX_DEST_CLOSE:
			if(SW1==0&&SW2==0&&SW3==1) {
				DelayMs(255);
				StopDiskDrv();
				gboolRestBoxEnd=1;
			}
			break;
	}
	if(IsTimeOut(INDEX_CLOSE_OPEN_WAIT)){
		if(BOX_DEST_CLOSE==gBoxDest) gboolRestBoxEnd=1;
		StopDiskDrv();
	}
}


/**
 *@void KeyOpnClsManagerBox(void)
 *@update 2002/9/12
 */
void KeyOpnClsManagerBox(void)
{
	if(SW1==0&&SW2==1&&SW3==0) {
		CloseBox();
		gBoxOpenOrClose=0;
	}
	else if(SW1==1&&SW2==1&&SW3==1) {
		OpenBox();
		gBoxOpenOrClose=1;
	}
}

/*-------------------------------------------------------------------------*/
/*                 POWER PROCESS                                           */
/*-------------------------------------------------------------------------*/
/**
 *@void ClosePower(void)
 *@update 2002/8/20
 */
void OpenDvdPower(void)
{
	gDvdPower=1;
}

/**
 *@void ClosePower(void)
 *@update 2002/8/20
 */
void CloseDvdPower(void)
{
	gDvdPower=0;
}

/*-------------------------------------------------------------------------*/
/*                 STANDBY PROCESS                                         */
/*-------------------------------------------------------------------------*/

/**
 *@void SeveClose(void)
 *@update 2002/8/20
 */
void CloseServe(void)
{
	SERVE_OPEN=0;
	SERVE_CLOSE=1;
}


/**
 *@void SeveOpen(void)
 *@update 2002/8/20
 */
void OpenServe(void)
{
	SERVE_OPEN=1;
	SERVE_CLOSE=0;
}


/**
 *@void TurnOnServe(void)
 *@update 2002/8/20
 */
void TurnOnServe(void)
{
	if( (SW1==0&&SW2==1&&SW3==0) || (SW1==0&&SW2==0&&SW3==1) ) return;
	OpenServe();
}


/**
 *@void TurnOffServe(void)
 *@update 2002/8/20
 */
void TurnOffServe(void)
{
	CloseServe();
}



/**
 *@void RestProce(void)
 *@update 2002/9/27
 */
void PowerAllLow(void)
{
	gDvdPower=0;
	gStandbyPower=0;
}

/**
 *@void StandbyHi(void)
 *@update 2002/9/27
 */
void StandbyHi(void)
{
	gStandbyPower=1;
}

/**
 *@void StandbyLow(void)
 *@update 2002/9/27
 */
void StandbyLow(void)
{
	gStandbyPower=0;
}


/**
 *@void StandbyRestProc(void)
 *@update 2002/9/27
 */
void RstStandbyPowHiProc(void)
{
	if(SW1==0&&SW2==0&&SW3==1) {
		DelayMs(250);
		StandbyHi();
	}
	else StandbyLow();
}

⌨️ 快捷键说明

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