📄 rds.c
字号:
if(F_HalfSecondOut)
F_DISP_AF=~F_DISP_AF;
}
}
else
{
F_DISP_AF=0;
}
F_DISP_TA=RDS.F_TAEnable;
F_DISP_PTY=RDS.F_PTYEnable;
F_DISP_REG=RDS.F_REGEnable;
if(RDSStation&&RDS.TP)
{
F_DISP_TP=1;
}
else
{
F_DISP_TP=0;
}
if(RDSStation&&F_InEONTASwitch&&RDS.TA)
{
F_DISP_EON=1;
}
else
{
F_DISP_EON=0;
}
if(UIcon.byte!=BcIcon && (System.DispMode.Current==DISPMODE_RDS
||System.DispMode.Current==DISPMODE_RADIO||System.DispMode.Current==DISPMODE_DVD))
{
BcIcon=UIcon.byte;
#ifndef SINO_MOS
//PrintLine(3, "");
#endif
if(F_DISP_AF)
{
#ifdef SINO_MOS
//DisplayIcon(AF_ICON,1);
#else
//DispBuff[3][0]='A';
//DispBuff[3][1]='F';
#endif
}
#ifdef SINO_MOS
//else DisplayIcon(AF_ICON,0);
#endif
if(F_DISP_TA)
{
#ifdef SINO_MOS
// DisplayIcon(TA_ICON,1);
#else
DispBuff[3][3]='T';
DispBuff[3][4]='A';
#endif
}
#ifdef SINO_MOS
// else DisplayIcon(TA_ICON,0);
#endif
if(F_DISP_TP)
{
#ifdef SINO_MOS
//DisplayIcon(TP_ICON,1);
#else
DispBuff[3][6]='T';
DispBuff[3][7]='P';
#endif
}
#ifdef SINO_MOS
// else DisplayIcon(TP_ICON,0);
#endif
if(F_DISP_EON)
{
#ifdef SINO_MOS
//DisplayIcon(EON_ICON,1);
#else
DispBuff[3][9]='E';
DispBuff[3][10]='O';
DispBuff[3][11]='N';
#endif
}
#ifdef SINO_MOS
// else DisplayIcon(EON_ICON,0);
#endif
if(F_DISP_PTY)
{
#ifdef SINO_MOS
// DisplayIcon(PTY_ICON,1);
#else
DispBuff[3][13]='P';
DispBuff[3][14]='T';
DispBuff[3][15]='Y';
#endif
}
#ifdef SINO_MOS
// else DisplayIcon(PTY_ICON,0);
#endif
#ifndef SINO_MOS
if(F_DISP_REG)
{
DispBuff[3][17]='R';
DispBuff[3][18]='E';
DispBuff[3][19]='G';
}
#endif
}
if(RADIO_IN_AS)return;
if(RDSDispTimer==1)
{
RDSDispTimer=0;
if(RDS.F_PSExist)
{
if(RDSDispMode!=RDSDISP_PTYSELECT)
{
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PS;
}
}
}
if(RDS.F_GetNewPS && System.FWorkMode.Current==WORKMODE_RADIO)
{
RDS.F_GetNewPS=0;
if(RDSDispMode!=RDSDISP_TRAFFIC)
{
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PS;
}
}
if(System.DispMode.Current!=DISPMODE_RDS)return;
if(!RDS.F_PSExist)
{
System.DispMode.Requst=DISPMODE_RADIO;
RDSDispMode=RDSDISP_IDLE;
}
if(!F_RDSDispReq)return;
F_RDSDispReq=0;
switch(RDSDispMode)
{
case RDSDISP_PS:
// Display(DISP_CLEAR2);
for(i=0;i<8;i++)
#ifdef SINO_MOS
str[i] = RDS.PS[i];
#else
DispBuff[2][i+6]=RDS.PS[i];
Display(DISP_REFRESH2);
#endif
break;
case RDSDISP_PTY:
//Display(DISP_CLEAR2);
for(i=0;i<8;i++)
#ifdef SINO_MOS
str[i] = PTYDisplayTable[RDS.PTY][i];
#else
DispBuff[2][i+6]=PTYDisplayTable[RDS.PTY][i];
Display(DISP_REFRESH2);
#endif
break;
case RDSDISP_PTYSELECT:
//Display(DISP_CLEAR2);
for(i=0;i<8;i++)
#ifdef SINO_MOS
str[i] = PTYDisplayTable[PTYSelectType][i];
#else
DispBuff[2][i+6]=PTYDisplayTable[PTYSelectType][i];
#endif
if(F_NoPTY)
{
#ifdef SINO_MOS
// PrintLine("NOMATCH");
return ;
#else
PrintLine(2," No Match");
#endif
}
//Display(DISP_REFRESH2);
break;
case RDSDISP_TRAFFIC:
#ifdef SINO_MOS
// PrintLine("TRAFFIC");
return ;
// *str = "TRAFFIC ";
#else
PrintLine(2," TRAFFIC");
#endif
break;
}
// PrintLine(str);
}
/*********************************************
Function: SwitchToTa
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:41
*********************************************/
void SwitchToTa(void)
{
if(F_InTASwitch)return;
F_InTASwitch=1;
InTADelayTimer=10;
System.FWorkMode.Save=System.FWorkMode.Current;
ChangeFWorkmode(WORKMODE_RADIO);
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_TRAFFIC;
F_RDSDispReq=1;
AudioVolBackup=AudioVol;//add traffic vol by yete at Sept.2006
AudioVol=TAVol;
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_SOURCE_VOL);
}
/*********************************************
Function: TaSwitchBack
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:40
*********************************************/
void TaSwitchBack(void)
{
unsigned char temp;
if(!F_InTASwitch)return;
F_InTASwitch=0;
RDSClearTAFlags();
ChangeFWorkmode(System.FWorkMode.Save);
//System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PS;
F_RDSDispReq=1;
TAVol=AudioVol;
AudioVol=AudioVolBackup;
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_SOURCE_VOL);
}
#ifdef EON_ENABLE
/*********************************************
Function: SwitchToEONTa
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:38
*********************************************/
void SwitchToEONTa(void)
{
unsigned char i;
if(F_InEONTASwitch)return;
F_InEONTASwitch=1;
InTADelayTimer=30;
for(i=0;i<25;i++)
{
RDS.EONAFBackup[i]=RDS.AF[i];
RDS.AF[i]=RDS.EONAF[i];
}
for(i=0;i<8;i++)
{
RDS.EONPSBackup[i]=RDS.PS[i];
RDS.PS[i]=RDS.EONPS[i];
}
RDS.EONPIBackup=RDS.PI;
RDS.PI=RDS.EONPI;
RDS.EONAFNumBackup=RDS.AFNum;
RDS.AFNum=RDS.EONAFNum;
RDS.PILast=RDS.PI;
RDS.PIBackup=RDS.PI;
RadioMute(SOFTON);
RDSAFSearchSetFreq(RDS.AF[0]);
SetAFSearch();
RDSClearEONTAFlags();
RDSClearTAFlags();
System.FWorkMode.Save=System.FWorkMode.Current;
ChangeFWorkmode(WORKMODE_RADIO);
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_TRAFFIC;
F_RDSDispReq=1;
AudioVolBackup=AudioVol;
AudioVol=TAVol;
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_SOURCE_VOL);
}
/*********************************************
Function: EONTaSwitchBack
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:36
*********************************************/
void EONTaSwitchBack(void)
{
unsigned char i;
if(!F_InEONTASwitch)return;
F_InEONTASwitch=0;
InTADelayTimer=20;
for(i=0;i<25;i++)
{
RDS.AF[i]=RDS.EONAFBackup[i];
}
for(i=0;i<8;i++)
{
RDS.PS[i]=RDS.EONPSBackup[i];
}
RDS.PI=RDS.EONPIBackup;
RDS.AFNum=RDS.EONAFNumBackup;
RDS.PILast=RDS.PI;
RDS.PIBackup=RDS.PI;
RadioMute(SOFTON);
RDSAFSearchSetFreq(RDS.AF[0]);
SetAFSearch();
RDSClearEONTAFlags();
RDSClearTAFlags();
ChangeFWorkmode(System.FWorkMode.Save);
RDSDispMode=RDSDISP_PS;
//System.DispMode.Requst=DISPMODE_RDS;
F_RDSDispReq=1;
TAVol=AudioVol;
AudioVol=AudioVolBackup;
AudioCalc(AUDIO_ALL_VAL);
AudioSend(AUDIO_AREA_SOURCE_VOL);
}
#endif
/*********************************************
Function: RDSTimer100ms
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:34
*********************************************/
void RDSTimer100ms(void)
{
if(RDSDispTimer>1)RDSDispTimer--;
if(AutoTASeekTimer>1)AutoTASeekTimer--;
if(PTYSelectTimer>1)PTYSelectTimer--;
if(InTADelayTimer>0)InTADelayTimer--;
if(EnterTADelayTimer>1)EnterTADelayTimer--;
if(EnterEONTADelayTimer>0)EnterEONTADelayTimer--;
}
void AFSPin(unsigned char AFSmode)
{
switch(AFSmode)
{
case 0:
Pin_AFS=0;
break;
case 1:
Pin_AFS=1;
break;
}
}
unsigned char ReadRDSDataPin(void)
{
if(PinIn_RDSDATA)
return (1);
else
return (0);
}
/*********************************************
Function: Disable_RDS_Int
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:07
*********************************************/
void Disable_RDS_Int(void)
{
PD_RDSCLK=0;
PCR1_RDSCLK=1;
PCR2_RDSCLK=0;
}
/*********************************************
Function: Enable_RDS_Int
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:37:06
*********************************************/
void Enable_RDS_Int(void)
{
//pull-up interrupt input
PD_RDSCLK=0;
PCR1_RDSCLK=1;
PCR2_RDSCLK=1;
}
/*********************************************************
File End
*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -