📄 cd.c
字号:
#include "public.h"
void CDInit(void)
{
/*Pin_CD_POWER=;
PD_CD_POWER=;
PO_CD_POWER=;*/
PD_CD_RESET=1;
PO_CD_RESET=1;
Pin_CD_RESET=0;
PD_CD_ON=1;
PO_CD_ON=1;
Pin_CD_ON=0;
PD_CD_CRQ=0;
PO_CD_CRQ=0;
}
void CDMain(void)
{
CDSendAndRead();
CDDecodeData();
CDPowerMode();
CDWorkMode();
CDKey();
CDDisplay();
}
void CDKey(void)
{
switch(KeyCode)
{
case S_AD_EJECT:
if(CD.PowerMode==CD_POWER_NORMAL)
{
if(CD.LoaderMode==CD_LODER_EJECTING|| CD.LoaderMode==CD_LODER_EJECT_POS)
CDSendCommand(CD_CMD_LOADDISC);
else
CDSendCommand(CD_CMD_EJECTDISC);
}
else
{
CDWork(POWERON_LOAD_EJECT);
CD.WorkMode=CD_WORKMODE_POWER_ON_REQ;
}
break;
}
if(System.FWorkMode.Current!=WORKMODE_DISC&&System.FWorkMode.Current!=WORKMODE_USB&&System.FWorkMode.Current!=WORKMODE_SD)return;
if(F_MuteKey)return;
switch(KeyCode)
{
case S_AD_M1:
if(CD.PlayMode!=CD_PLAY_PLAY)
CDSendCommand(CD_CMD_PLAY);
else
CDSendCommand(CD_CMD_PAUSE);
break;
case S_AD_M2:
if(CD.SubPlayMode==CD_SUBPLAY_INT)
{
CDSendCommand(CD_CMD_INTSHFRPT_OFF);
CD.SubPlayMode=CD_SUBPLAY_NORMAL;
}
else
{
CDSendCommand(CD_CMD_INT_ON);
}
break;
case S_AD_M3:
if(CD.SubPlayMode==CD_SUBPLAY_RPT)
{
CDSendCommand(CD_CMD_INTSHFRPT_OFF);
CD.SubPlayMode=CD_SUBPLAY_NORMAL;
}
else
{
CDSendCommand(CD_CMD_RPT_ON);
}
break;
case L_AD_M3:
CDSendCommand(CD_CMD_WRAP);
break;
case S_AD_M4:
if(CD.SubPlayMode==CD_SUBPLAY_SHF)
{
CDSendCommand(CD_CMD_INTSHFRPT_OFF);
CD.SubPlayMode=CD_SUBPLAY_NORMAL;
}
else
{
CDSendCommand(CD_CMD_SHF_ON);
}
break;
case S_AD_SEEKUP:
CDSendCommand(CD_CMD_NEXT_FILE);
break;
case S_AD_SEEKDN:
CDSendCommand(CD_CMD_PREVIOUS_FILE);
break;
case L_AD_SEEKUP:
CDSendCommand(CD_CMD_FAST_FF);
break;
case L_AD_SEEKDN:
CDSendCommand(CD_CMD_FAST_FB);
break;
case R_AD_SEEKUP:
case R_AD_SEEKDN:
CDSendCommand(CD_CMD_PLAY);
break;
case S_AD_DISP:
if(System.DispMode.Current==DISPMODE_CD)
{
CD.DispMode=MaxMinChangeProtect(CD.DispMode, 1, CD_DISP_DISCTITLE, CD_DISP_NORMAL, 0);
if(CD.DispMode!=CD_DISP_NORMAL)CD.Anibegin=1;
CD.F_DispReq=1;
}
break;
/*case S_AD_M5:
CDSendCommand(CD_CMD_CHECK_MEMORY);
break;
case S_AD_M6:
CDSendCommand(CD_CMD_REQ_MECHPARA);
break;*///This's for test
}
}
void CDDisplay(void)
{
if(System.DispMode.Next==DISPMODE_CD)
{
CD.F_DispReq=1;
}
if(System.DispMode.Last==DISPMODE_CD)
{
DisplayClear(CLEARNUM9);
F_DISP_ST=0;
F_DISP_MP3=0;
F_DISP_CD=0;
F_DISP_CD1=0;
F_DISP_CD2=0;
F_DISP_CD3=0;
}
if(System.DispMode.Current!=DISPMODE_CD)return;
if(F_HalfSecondOut)
{
if(System.FWorkMode.Current==WORKMODE_DISC)
if(CD_DISCTYPE_MP3)F_DISP_MP3=1;
else if(System.FWorkMode.Current==WORKMODE_USB||System.FWorkMode.Current==WORKMODE_SD)
if(CD_DEVICETYPE_MP3)F_DISP_MP3=1;
else F_DISP_MP3=0;
//if(CD.CurrentSource==1)
//{
F_DISP_CD=1;
if(CD.PlayMode==CD_PLAY_PLAY)
{
if(!F_DISP_CD3)
{
F_DISP_CD1=0;
F_DISP_CD2=1;
F_DISP_CD3=1;
}
else if(!F_DISP_CD2)
{
F_DISP_CD1=1;
F_DISP_CD2=1;
F_DISP_CD3=0;
}
else if(!F_DISP_CD1)
{
F_DISP_CD1=1;
F_DISP_CD2=0;
F_DISP_CD3=1;
}
else
{
F_DISP_CD1=0;
F_DISP_CD2=1;
F_DISP_CD3=1;
}
}
else
{
F_DISP_CD1=1;
F_DISP_CD2=1;
F_DISP_CD3=1;
}
//}
/*if((CD.CurrentSource==2)||(CD.CurrentSource==3))
{
F_DISP_CD=0;
F_DISP_CD1=0;
F_DISP_CD2=0;
F_DISP_CD3=0;
}*/
}
if(!CD.F_DispReq)return;
CD.F_DispReq=0;
F_DISP_P=0;
switch(CD.DispMode)
{
case CD_DISP_IDLE:
break;
case CD_DISP_READING:
CopyString(DispNum," WAIT ");
DispNum[5]=45;
DispNum[6]=45;
DispNum[7]=45;
break;
case CD_DISP_NODISC:
CopyString(DispNum," NO CD ");
break;
case CD_DISP_NOUSB:
CopyString(DispNum," NO USB ");
break;
case CD_DISP_NOSD:
CopyString(DispNum," NO SD ");
break;
case CD_DISP_DISC_READ:
CopyString(DispNum," READ CD ");
break;
case CD_DISP_USB_READ:
CopyString(DispNum,"READ USB ");
break;
case CD_DISP_SD_READ:
CopyString(DispNum," READ SD ");
break;
case CD_DISP_DISC_ERROR:
CopyString(DispNum," CD ERR ");
break;
case CD_DISP_USB_ERROR:
CopyString(DispNum," USB ERR ");
break;
case CD_DISP_SD_ERROR:
CopyString(DispNum," SD ERR ");
break;
case CD_DISP_COMMUNICATION_ERROR:
CopyString(DispNum," COM ERR ");
break;
case CD_DISP_NORMAL:
Animation(ANIMATION_STOP);
if(CD.PlayMode==CD_PLAY_PAUSE)
{
CopyString(DispNum," PAUSE ");
break;
}
/*switch(CD.CurrentSource)
{
case CD_DEVICETYPE_DISC:
DispNum[8]='C';
break;
case CD_DEVICETYPE_USB:
DispNum[8]='U';
break;
case CD_DEVICETYPE_SD:
DispNum[8]='5';
break;
}*/
switch(System.FWorkMode.Current)
{
case WORKMODE_DISC:
DispNum[8]='C';
break;
case WORKMODE_USB:
DispNum[8]='U';
break;
case WORKMODE_SD:
DispNum[8]='5';
break;
}
switch(CD.SubPlayMode)
{
case CD_SUBPLAY_NORMAL:
DispNum[0]='T';
break;
case CD_SUBPLAY_INT:
DispNum[0]='I';
break;
case CD_SUBPLAY_SHF:
DispNum[0]='S';
break;
case CD_SUBPLAY_RPT:
DispNum[0]='R';
break;
}
DispNum[1]=ReturnDispNum(CD.AbsFileNum,10);
DispNum[2]=ReturnDispNum(CD.AbsFileNum,1);
DispNum[3]=' ';
DispNum[4]=ReturnDispNum(CD.PlayMin,10);
DispNum[5]=ReturnDispNum(CD.PlayMin,1);
DispNum[6]=ReturnDispNum((unsigned int)CD.PlaySec,10);
DispNum[7]=ReturnDispNum((unsigned int)CD.PlaySec,1);
F_DISP_P=1;
break;
case CD_DISP_FILENAME:
case CD_DISP_ALBUMTITLE:
case CD_DISP_TITLE:
case CD_DISP_ARTIST:
case CD_DISP_GENRE:
case CD_DISP_YEAR:
case CD_DISP_COMMENT:
case CD_DISP_DISCARTIST:
case CD_DISP_DISCTITLE:
DispNum[8]=' ';
if(CD.PlayMode==CD_PLAY_PAUSE)
{
Animation(ANIMATION_STOP);
CopyString(DispNum," PAUSE ");
CD.Anibegin=1;
}
else
{
if(CD.Anibegin)
{
CD.Anibegin=0;
if(CD.DispMode==CD_DISP_FILENAME)
{
if(CD.CurrentFileName[0])
{
CopyString(AniBuff,"File name-");
CopyString2(AniBuff+10, CD.CurrentFileName);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Fl name--none",20);
}
if(CD.DispMode==CD_DISP_ALBUMTITLE)
{
if(CD.AlbumTitle[0])
{
CopyString(AniBuff," Album--");
CopyString2(AniBuff+8, CD.AlbumTitle);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Album--none",20);
}
else if(CD.DispMode==CD_DISP_TITLE)
{
if(CD.TrackTitle[0])
{
CopyString(AniBuff," Title--");
CopyString2(AniBuff+8, CD.TrackTitle);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Title--none",20);
}
else if(CD.DispMode==CD_DISP_ARTIST)
{
if(CD.TrackArtist[0])
{
CopyString(AniBuff,"Artist--");
CopyString2(AniBuff+8, CD.TrackArtist);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Artist--none",20);
}
else if(CD.DispMode==CD_DISP_GENRE)
{
if(CD.Genre[0])
{
CopyString(AniBuff," Genre--");
CopyString2(AniBuff+8, CD.Genre);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Genre--none",20);
}
else if(CD.DispMode==CD_DISP_YEAR)
{
if(CD.Year[0])
{
CopyString(AniBuff," Year-- ");
CopyString2(AniBuff+8, CD.Year);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, " Year--none",20);
}
else if(CD.DispMode==CD_DISP_COMMENT)
{
if(CD.Comment[0])
{
CopyString(AniBuff,"Comment--");
CopyString2(AniBuff+9, CD.Comment);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "Comment--none",20);
}
else if(CD.DispMode==CD_DISP_DISCARTIST)
{
if(CD.DiscArtist[0])
{
CopyString(AniBuff,"CD Art--");
CopyString2(AniBuff+8, CD.DiscArtist);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "CD Art--none",20);
}
else if(CD.DispMode==CD_DISP_DISCTITLE)
{
if(CD.DiscTitle[0])
{
CopyString(AniBuff,"CD TITLE--");
CopyString2(AniBuff+10, CD.DiscTitle);
Animation(ANIMATION_START, AniBuff,20);
}
else
Animation(ANIMATION_START, "CD TITLE--none",20);
}
}
}
break;
}
DisplayRefresh();
}
void CDPower(unsigned char mode)
{
CD.PowerReq=mode;
switch(CD.PowerReq)
{
case OFF_TO_STANDBY:
CD.PowerMode=CD_POWER_OFF_TO_STANDBY_REQ;
break;
case OFF_TO_NORMAL:
CD.PowerMode=CD_POWER_OFF_TO_STANDBY_REQ;
break;
case STANDBY_TO_OFF:
CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
break;
case STANDBY_TO_NORMAL:
CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL_REQ;
break;
case NORMAL_TO_OFF:
CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY_REQ;
break;
case NORMAL_TO_STANDBY:
CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY_REQ;
break;
}
}
void CDPowerMode(void)
{
switch(CD.PowerMode)
{
case CD_POWER_OFF:
if(CD.PowerReq==STANDBY_TO_OFF ||CD.PowerReq==NORMAL_TO_OFF)
CD.PowerReq=0;
break;
case CD_POWER_OFF_TO_STANDBY_REQ:
//Pin_CD_POWER=1;
CD.PowerTimer10ms=10;
CD.PowerMode=CD_POWER_RESET_ON;
break;
case CD_POWER_RESET_ON:
if(CD.PowerTimer10ms>0)break;
Pin_CD_RESET=1;
CD.PowerMode=CD_POWER_WAIT_INIT_MSG;
CD.PowerTimer10ms=100;
break;
case CD_POWER_WAIT_INIT_MSG:
//if(CD.PowerTimer10ms==0)
// CD.PowerMode=CD_POWER_ERROR;
//break;
case CD_POWER_INIT:
//if(CD.PowerTimer10ms==0)
// CD.PowerMode=CD_POWER_ERROR;
if(CD.PowerTimer10ms==0)
CD.PowerMode=CD_POWER_STANDBY;
break;
case CD_POWER_STANDBY:
if(CD.PowerReq==OFF_TO_NORMAL)
CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL_REQ;
else if(CD.PowerReq==NORMAL_TO_OFF)
CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
else if(CD.PowerReq==OFF_TO_STANDBY ||CD.PowerReq==NORMAL_TO_STANDBY)
CD.PowerReq=0;
break;
case CD_POWER_STANDBY_TO_NORMAL_REQ:
Pin_CD_ON=1;
CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL;
CD.PowerTimer10ms=100;
break;
case CD_POWER_STANDBY_TO_NORMAL:
//if(CD.PowerTimer10ms==0)
// CD.PowerMode=CD_POWER_ERROR;
if(CD.PowerTimer10ms==0)
CD.PowerMode=CD_POWER_NORMAL;
break;
case CD_POWER_NORMAL:
if(CD.PowerReq==OFF_TO_NORMAL ||CD.PowerReq==STANDBY_TO_NORMAL)
CD.PowerReq=0;
break;
case CD_POWER_NORMAL_TO_STANDBY_REQ:
Pin_CD_ON=0;
CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY;
CD.PowerTimer10ms=10;
break;
case CD_POWER_NORMAL_TO_STANDBY:
if(CD.PowerTimer10ms==0)
CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
break;
case CD_POWER_STANDBY_TO_OFF_REQ:
Pin_CD_RESET=0;
//Pin_CD_POWER=0;
CD.PowerMode=CD_POWER_OFF;
break;
case CD_POWER_ERROR:
break;
}
}
void CDWork(unsigned char command)
{
CD.WorkReq=command;
}
void CDWorkMode(void)
{
switch(System.FWorkMode.Next)
{
case WORKMODE_DISC:
CD.WorkMode=CD_WORKMODE_DISC;
CDSendCommand(CD_CMD_SOURCE_TO_DISC);
CD.WorkTimer1s=5;
CD.DispMode=CD_DISP_DISC_READ;
CD.F_DispReq=1;
break;
case WORKMODE_USB:
CD.WorkMode=CD_WORKMODE_USB;
CDSendCommand(CD_CMD_SOURCE_TO_USB);
CD.WorkTimer1s=12;//when CD power on, USB inserting msg need long time to feedback
CD.DispMode=CD_DISP_USB_READ;
CD.F_DispReq=1;
break;
case WORKMODE_SD:
CD.WorkMode=CD_WORKMODE_SD;
CDSendCommand(CD_CMD_SOURCE_TO_SD);
CD.WorkTimer1s=15;
CD.DispMode=CD_DISP_SD_READ;
CD.F_DispReq=1;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -