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

📄 rds.c

📁 我个人编写的车载dvd上的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
			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 + -