📄 cddriver.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 + -