📄 radio.c
字号:
else
Radio.Direction=-1;
if(RADIO_IN_SEEK)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if(RADIO_IN_AS||RADIO_IN_PS)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_SEEKREQ;
}
}
break;
case S_AD_AS:
case S_RM_AS:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_PSREQ;
}
break;
case L_AD_AS:
case L_RM_AS:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_ASREQ;
}
break;
case S_AD_BAND:
case S_RM_BAND:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
Radio.CurrentBand=MaxMinChangeProtect(Radio.CurrentBand,1, 4, 0, 0);
Radio.ReqFreq=Radio.Band[Radio.CurrentBand].BandFreq;
Radio.F_ForceSetBuff=1;
RadioMute(SOFTON);
RadioSetFreq(Radio.ReqFreq);
RadioMute(SOFTOFF);
Radio.F_TunerDispReq=1;
break;
case S_AD_NC://YT---060407
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
Radio.Area=MaxMinChangeProtect(Radio.Area,1, 4, 0, 0);
LoadArea();
Radio.ReqFreq=Radio.Band[Radio.CurrentBand].BandFreq;
Radio.F_ForceSetBuff=1;
RadioMute(SOFTON);
RadioSetFreq(Radio.ReqFreq);
RadioMute(SOFTOFF);
if(System.DispMode.Current==DISPMODE_RADIO)
{
switch(Radio.Area)
{
case AREA_USA:
AniBuff[13]='(';
AniBuff[14]='U';
AniBuff[15]='S';
AniBuff[16]='A';
AniBuff[17]=')';
break;
case AREA_LATIN:
AniBuff[13]='(';
AniBuff[14]='L';
AniBuff[15]='A';
AniBuff[16]='T';
AniBuff[17]=')';
break;
case AREA_EUROPE:
AniBuff[13]='(';
AniBuff[14]='E';
AniBuff[15]='U';
AniBuff[16]='P';
AniBuff[17]=')';
break;
case AREA_OIRT:
AniBuff[13]='(';
AniBuff[14]='O';
AniBuff[15]='I';
AniBuff[16]='R';
AniBuff[17]=')';
break;
case AREA_JAPAN:
AniBuff[13]='(';
AniBuff[14]='J';
AniBuff[15]='P';
AniBuff[16]='N';
AniBuff[17]=')';
break;
}
}
Radio.F_TunerDispReq=1;
break;
}
}
void RadioDisplay(void)
{
unsigned int i;
unsigned char j;
if(System.DispMode.Next==DISPMODE_RADIO)
{
Radio.F_TunerDispReq=1;
if((!RDS.F_AFEnable)&&(!RDS.F_TAEnable))
{
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 ");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V ");
break;
}
}
else
{
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
}
}
Animation(ANIMATION_START, AniBuff,20);
}
if(System.DispMode.Last==DISPMODE_RADIO)
{
//Display(DISP_CLEAR);
Animation(ANIMATION_STOP);
}
if(SeekKeyTimer<10&&SeekKeyTimer>0)
{
PrintLine2(" Auto Seek Key");
return;
}
// display others
if(System.DispMode.Current!=DISPMODE_RADIO)return;
if(Radio.F_Tuner_Empty==1&&RadioTunerEepromTimer>0)
{
PrintLine2("Tuner EEP Empty!");
return;
}
if(!Radio.F_TunerDispReq)return;
Radio.F_TunerDispReq=0;
//PrintLine1(" Tuner Mode");
if(RADIO_IN_SEARCH)
{
if(RADIO_IN_AS)
{
PrintLine2(" Auto Store");
}
else
{
if(RDS.F_PISeek)
PrintLine2(" PI Seek");
else if(RDS.F_TAEnable)
PrintLine2(" TA Seek");
else
PrintLine2(" Auto Seek");
}
return;
}
PrintLine2("FM0 M0 MHz");
if(Radio.Band[Radio.CurrentBand].CurrentMem==0)
{
DispBuff[20]=' ';
DispBuff[21]=' ';
}
else
{
DispBuff[20]='M';
DispBuff[21]=Radio.Band[Radio.CurrentBand].CurrentMem+'0';
}
if(FreqInFM(Radio.Freq))
{
DispBuff[16]='F';
DispBuff[17]='M';
DispBuff[18]=Radio.CurrentBand+'1';
DispBuff[29]='M';
i=Radio.Freq;
j=i%10;
if(Radio.Area==AREA_USA ||Radio.Area==AREA_LATIN)
DispBuff[28]=' ';
else
DispBuff[28]=j+'0';
i=i/10;
j=i%10;
DispBuff[27]=j+'0';
DispBuff[26]='.';
i=i/10;
j=i%10;
DispBuff[25]=j+'0';
i=i/10;
j=i%10;
DispBuff[24]=j+'0';
i=i/10;
j=i%10;
if(j==0)
DispBuff[23]=' ';
else
DispBuff[23]=j+'0';
}
else
{
DispBuff[16]='A';
DispBuff[17]='M';
DispBuff[18]=Radio.CurrentBand-3+'1';
DispBuff[29]='K';
i=Radio.Freq;
j=i%10;
DispBuff[28]=j+'0';
i=i/10;
j=i%10;
DispBuff[27]=j+'0';
i=i/10;
j=i%10;
DispBuff[26]=j+'0';
i=i/10;
j=i%10;
if(j==0)
DispBuff[25] = ' ';
else
DispBuff[25]=j+'0';
}
}
void RadioSeek(void)
{
switch(Radio.SeekMode)
{
case RADIO_SEEK_IDLE:
break;
case RADIO_SEEK_INIT:
Radio.SeekMode=RADIO_SEEK_CHANGE_FRE;
case RADIO_SEEK_CHANGE_FRE:
RadioSetFreq(Radio.ReqFreq);
Wait10us(60);
// enable IFC
/*...*/
if(FreqInFM(Radio.Freq))
{
Wait10us(200);//wait for SMeter stable
if(GetSMeter()>50)//(CheckSD(5,1000))
{
RadioWaitTimer=5;
Radio.SeekMode=RADIO_SEEK_WAIT;
}
else
{
Radio.SeekMode=RADIO_SEEK_IDLE;
}
/*RadioWaitTimer=5;
Radio.SeekMode=RADIO_SEEK_WAIT;*/
}
else
{
RadioWaitTimer=14;
Radio.SeekMode=RADIO_SEEK_WAIT;
}
break;
case RADIO_SEEK_WAIT:
if(RadioWaitTimer>0)break;
if(FreqInFM(Radio.Freq))
{
if (CheckIFC(50,1000))
Radio.F_GoodStation=1;
}
else
{
if (CheckIFC(50,1000)/*&&GetSMeter()>Radio.SeekTh*/)
Radio.F_GoodStation=1;
}
// disable IFC
/*...*/
Radio.SeekMode=RADIO_SEEK_IDLE;
break;
case RADIO_SEEK_CHECK:
break;
case RADIO_SEEK_GOOD_STATION:
break;
case RADIO_SEEK_BAD_STATION:
break;
}
}
void RadioWork(void)
{
unsigned char i,j;
float k;
switch(Radio.WorkMode)
{
case RADIO_WORK_IDLE:
if(System.DispMode.Current!=DISPMODE_RADIO)
break;
if(F_HalfSecondOut)
{
Radio.Smeter=GetSMeter();
//AniBuff[23]=Radio.Smeter/100+'0';
//i=Radio.Smeter%100;
//AniBuff[24]=i/10+'0';
//AniBuff[25]=i%10+'0';
//AniBuff[28]=Radio.Smeter/100+'0';
//i=Radio.Smeter%100;
//AniBuff[29]=i/10+'0';
//AniBuff[30]=i%10+'0';
k=(5.0/255.0)*(2.0*(float)Radio.Smeter);
i=(int)(k*100)/100;
//AniBuff[28]=int(k)+'0';
AniBuff[28]=i+'0';
AniBuff[29]='.';
i=(int)(k*100)%100;
AniBuff[30]=i/10+'0';
AniBuff[31]=i%10+'0';
Radio.F_TunerDispReq=1;
}
break;
case RADIO_WORK_SEEKREQ:
//Radio.Band[Radio.CurrentBand].CurrentMem=0;
Radio.F_TunerDispReq=1;
Radio.WorkMode=RADIO_WORK_SEEKWAIT;
Radio.BackupFreq=Radio.Freq;
SeekOn();
RadioMute(SOFTON);
Radio.SeekMode=RADIO_SEEK_IDLE;
//break;
case RADIO_WORK_SEEKWAIT:
if(Radio.SeekMode!=RADIO_SEEK_IDLE)break;
if(Radio.F_GoodStation)
{
Radio.F_GoodStation=0;
if((FreqInFM(Radio.Freq)&&!FreqInJapanFM(Radio.Freq)&&!FreqInWBFM(Radio.Freq))&&(RDS.F_AFEnable||RDS.F_TAEnable||RDS.F_PTYEnable||RDS.F_PISeek))
{
if(FreqInNormalFM(Radio.Freq))
{
if(Radio.Freq%10==0)
{
Radio.WorkMode=RADIO_WORK_SEEKWAITRDS;
RadioWorkTimer10ms=25;
}
else
Radio.WorkMode=RADIO_WORK_SEEKNEXT;
}
else
Radio.WorkMode=RADIO_WORK_SEEKNEXT;
}
else
Radio.WorkMode=RADIO_WORK_SEEKOK;
break;
}
case RADIO_WORK_SEEKNEXT:
Radio.ReqFreq=RadioFreqCal(Radio.SeekStep);
Radio.SeekMode=RADIO_SEEK_INIT;
Radio.WorkMode=RADIO_WORK_SEEKWAIT;
if((Radio.BackupFreq==Radio.ReqFreq)
||(Radio.BackupFreq==Radio.ReqFreq+5 && Radio.Direction==1)
||(Radio.BackupFreq==Radio.ReqFreq-5 && Radio.Direction==-1))
{
Radio.SeekMode=RADIO_SEEK_IDLE;
Radio.WorkMode=RADIO_WORK_SEEKOK;
RadioSetFreq(Radio.BackupFreq);
if(RDS.F_PTYEnable)
{
F_NoPTY=1;
PTYSelectTimer=50;
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PTYSELECT;
}
}
//Radio.F_TunerDispReq=1;
break;
case RADIO_WORK_SEEKWAITRDS:
if(RDS.F_RDSStation)
{
Radio.WorkMode=RADIO_WORK_SEEKWAITPI;
RadioWorkTimer10ms=100;
//Radio.WorkMode=RADIO_WORK_SEEKOK;
break;
}
if(RadioWorkTimer10ms==0)
Radio.WorkMode=RADIO_WORK_SEEKNEXT;
break;
case RADIO_WORK_SEEKWAITPI:
if(RDS.F_GetNewPI)
{
if(RDS.F_TAEnable)
{
Radio.WorkMode=RADIO_WORK_SEEKWAITTP;
RadioWorkTimer10ms=9;
}
else if(RDS.F_PTYEnable)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -