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

📄 radio.c

📁 我个人编写的车载dvd上的程序
💻 C
📖 第 1 页 / 共 5 页
字号:
*********************************************/
void RadioOff(void)
{
	#ifndef NOT_SAVE_BAND_AF
	RDSSaveBandAF();
	#endif
}

/*********************************************
	Function:		RadioMain
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:38:47
*********************************************/
void RadioMain(void)
{
	if(System.FWorkMode.Next==WORKMODE_RADIO)
		RadioOn();
	if(System.FWorkMode.Last==WORKMODE_RADIO)
		RadioOff();
		
	RadioSeek();
	RadioWork();
	RadioKey();
#if 0	
	RadioDisplay();
#endif
}

/*********************************************
	Function:		RadioKey
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:38:31
*********************************************/
void RadioKey(void)
{

	if(System.FWorkMode.Current!=WORKMODE_RADIO||F_MuteKey)return;

      //  debug("Radio mode !you input a key!");
	if(Radio.F_ManualSeek ||((SeekKeyTimer%2)==0 && SeekKeyTimer>50))
	{
		if(Radio.F_ManualSeek)
			SeekKeyTimer=50;
		else
			SeekKeyTimer=255;
			
		Radio.F_ManualSeek=0;
		
		RadioMute(SOFTON);
		Radio.ReqFreq=RadioFreqCal(Radio.Step);
		//DisplaySeekFreq(Radio.ReqFreq);
		RadioSetFreq(Radio.ReqFreq);
		Wait1ms(1);
		RadioMute(SOFTOFF);
		Radio.F_TunerDispReq=1;
		debug("seek auto");
	}

	switch(SysCommand)
	{
		case SYSTEM_COMMAND_RADIO_SAVE_1:
		case SYSTEM_COMMAND_RADIO_SAVE_2:
		case SYSTEM_COMMAND_RADIO_SAVE_3:
		case SYSTEM_COMMAND_RADIO_SAVE_4:
		case SYSTEM_COMMAND_RADIO_SAVE_5:
		case SYSTEM_COMMAND_RADIO_SAVE_6:	
			M_RadioNewKey;
			RadioLoad(SysCommand  - SYSTEM_COMMAND_RADIO_SAVE_1);
			break;
		case SYSTEM_COMMAND_RADIO_LOAD_1:
		case SYSTEM_COMMAND_RADIO_LOAD_2:
		case SYSTEM_COMMAND_RADIO_LOAD_3:
		case SYSTEM_COMMAND_RADIO_LOAD_4:
		case SYSTEM_COMMAND_RADIO_LOAD_5:
		case SYSTEM_COMMAND_RADIO_LOAD_6:	
			M_RadioNewKey;
			RadioSave(SysCommand - SYSTEM_COMMAND_RADIO_LOAD_1);
			break;
		case SYSTEM_COMMAND_RADIO_SEEK_DN_LONG:
		case SYSTEM_COMMAND_RADIO_SEEK_UP_LONG:	
		
                 // debug("in state of seek mode");
			SeekKeyTimer=255;//Enter to continous manual seek mode after long press key
		  if(SysCommand == SYSTEM_COMMAND_RADIO_SEEK_UP){
				Radio.Direction=1;
			//	debug("seek up");
			}else{
				Radio.Direction= -1;
				//debug("seek down");
				}
			break;

		case SYSTEM_COMMAND_RADIO_SEEK_DN_RELEASE:
		case SYSTEM_COMMAND_RADIO_SEEK_UP_RELEASE:	
			
			if(SeekKeyTimer>50)//stop continous manual seek mode and set the valid time of manual seek mode
			{
				Radio.F_ManualSeek=0;
				SeekKeyTimer=50;
			}
			break;

		case SYSTEM_COMMAND_RADIO_SEEK_DN:
		case SYSTEM_COMMAND_RADIO_SEEK_UP:	
			if(SeekKeyTimer>0)//short press change one step in manual seek
			{
				Radio.F_ManualSeek=1;
			  if(SysCommand == SYSTEM_COMMAND_RADIO_SEEK_UP)	
					Radio.Direction=1;
				else
					Radio.Direction= -1;
			}
			else//short press in autoseek mode
			{
			 //  debug("AUTO SEEK STAGE!");
				M_RadioNewKey;
				if(AFTAShowTimer>1)AFTAShowTimer=1;
				if(AudioWorkMode!=AUDIO_MODE_IDLE)break;
			if(SysCommand  == SYSTEM_COMMAND_RADIO_SEEK_UP)	
				
					Radio.Direction=1;
				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 SYSTEM_COMMAND_RADIO_AF_LONG:
			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 SYSTEM_COMMAND_RADIO_AF_RELASE:
			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 SYSTEM_COMMAND_RADIO_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;
			}

			#ifndef NOT_SAVE_BAND_AF
			RDSSaveBandAF();
			#endif
			
			Radio.CurrentBand=MaxMinChangeProtect(Radio.CurrentBand,1, 4, 0, 0);
			if(Radio.CurrentBand < FM_BAND_NUM)
			{
				FmIdx = Radio.CurrentBand;
				Radio.ReqFreq=Radio.FMBand[FmIdx].BandFreq;
			}
			else
			{
				AmIdx = Radio.CurrentBand - FM_BAND_NUM;
				Radio.ReqFreq=Radio.AMBand[AmIdx].BandFreq;
			}
			Radio.F_ForceSetBuff=1;
			RadioMute(SOFTON);
			RadioSetFreq(Radio.ReqFreq);
			RadioMute(SOFTOFF);

			#ifndef NOT_SAVE_BAND_AF
			RDSLoadBandAF();
			#endif
			
			Radio.F_TunerDispReq=1;
			break;
			
		/*case S_AD_LOC:
			M_RadioNewKey;
			Radio.F_LocDx=~Radio.F_LocDx;
			Radio.F_ForceSetBuff=1;
			RadioMute(SOFTON);
			RadioSetFreq(Radio.ReqFreq);
			RadioMute(SOFTOFF);
			F_DISP_LOC=Radio.F_LocDx;
			Radio.F_TunerDispReq=1;
			break;*/

		/*case L_AD_DISP://scan
			M_RadioNewKey;
			if(AFTAShowTimer>1)AFTAShowTimer=1;
			//if(AudioWorkMode!=AUDIO_MODE_IDLE)break;
			if(RADIO_IN_SEEK)
			{
				Radio.WorkMode=RADIO_WORK_SEEKBREAK;
			}
			else if(RADIO_IN_AS||RADIO_IN_PS)
			{
				Radio.WorkMode=RADIO_WORK_ASPSBREAK;
			}

			if(Radio.F_Scan)
			{
				Radio.F_Scan=0;
			}
			else
			{
				Radio.Direction=1;
				Radio.F_Scan=1;
				Radio.ScanBackupFreq=Radio.Freq;
				Radio.WorkMode=RADIO_WORK_SEEKREQ;
			}
			break;*/			
	}

}

/*********************************************
	Function:		RadioDisplay
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:38:29
*********************************************/
#if 0
void RadioDisplay(void)
{

	volatile unsigned int i;
	volatile unsigned char j;
	unsigned char str[8]="        ";

	if(System.DispMode.Next==DISPMODE_RADIO)
	{
		Radio.F_TunerDispReq=1;
	}
	/*if(System.DispMode.Last==DISPMODE_RADIO)
	{
		DisplayClear(CLEARNUM9);
		F_DISP_P=0;
		F_DISP_ST=0;
	}*/
	// display others
	if(System.DispMode.Current!=DISPMODE_RADIO){
		// DisplayIcon(POINT_ICON,0);
		// Display7Seg(10);
		return;
		}
	
	/*if(F_HalfSecondOut)
	{
		ShowVolBar();
		if(F_SpecOK)
		{
			F_SpecOK=0;
			ShowSpectrum();
		}
		RadioTunerRead();
		if (F_TunerStereo)
			F_DISP_ST=1;
		else
			F_DISP_ST=0;
	}*/
	
	if(!Radio.F_TunerDispReq)return;
	Radio.F_TunerDispReq=0;
		
	if(RADIO_IN_SEARCH&&Radio.WorkMode!=RADIO_WORK_SCANWAIT)
	{
		if(RADIO_IN_AS)
		{
		#ifdef SINO_MOS
                     //PrintLine("AUTO ST");
		#else
			PrintLine(2,"     Auto Store");
		#endif
		}
		else if(Radio.F_Scan)
		{
		#ifdef SINO_MOS
                    // PrintLine("AUTOSCAN");
                     
		#else
			PrintLine(2,"     Auto Scan");
		#endif
		}
		else
		{
			/*if(RDS.F_PISeek)
				PrintLine2("     PI Seek");
			else if(RDS.F_TAEnable)
				PrintLine2("     TA Seek");
			else
				PrintLine2("   Auto Seek");*/
			#ifdef SINO_MOS
                    // PrintLine("AUTOSEEK");
                   //DisplaySeekFreq(Radio.BackupFreq);
			#else
			PrintLine(2,"     Auto Seek");
			#endif
		}
		// DisplayIcon(POINT_ICON,0);
		return;
	}
	
	//Display(DISP_CLEAR2);
	
	if(FreqInFM(Radio.Freq))
	{
		if(Radio.FMBand[FmIdx].CurrentMem==0)
		{
	#ifdef SINO_MOS
                 // Display7Seg(10);
	#else
			DispBuff[2][14]=' ';
			DispBuff[2][15]=' ';
	#endif		
			
		}
		else
		{
		#ifdef SINO_MOS
                     
		    //  Display7Seg(Radio.FMBand[FmIdx].CurrentMem);
		#else
			DispBuff[2][14]='M';
			DispBuff[2][15]='0'+Radio.FMBand[FmIdx].CurrentMem;
		#endif	
		}
	}
	else
	{
		if(Radio.AMBand[AmIdx].CurrentMem==0)
		{
		#ifdef SINO_MOS

                  // Display7Seg(10);
		#else
			DispBuff[2][14]=' ';
			DispBuff[2][15]=' ';
		#endif	
		}
		else
		{
		#ifdef SINO_MOS
                   // Display7Seg(Radio.AMBand[AmIdx].CurrentMem);
		#else
			DispBuff[2][14]='M';
			DispBuff[2][15]='0'+Radio.AMBand[AmIdx].CurrentMem;
		#endif	
		}
	}
	if(FreqInFM(Radio.Freq))
	{
		if(FreqInWBFM(Radio.Freq))
		{
	
#ifdef SINO_MOS
                  str[0] = 'W';
                  str[1] = 'B';
                  str[2] = '1';
                  str[3] = '6',
                  i = Radio.Freq;
                  j = i %10;
                  str[4] = j + '0';
                  i = i /10;
                  j = i %10;
                  str[5] = j + '0';
                  i = i/10;
                  j = i%10;
                  str[6] = j+ '0';
                  i = i/10;
                  j = i%10;
                  str[7] = j + '0';

#else
			DispBuff[2][3]='W';
			DispBuff[2][4]='B';
			DispBuff[2][5]='1';
			DispBuff[2][6]='6';
			i=Radio.Freq;
			j=i%10;
			DispBuff[2][9]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][10]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][11]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][12]='0'+j;
#endif			
		}
		else
		{
#ifdef SINO_MOS
                str[0] = 'F';
                str[1] = 'M';
                str[2] = ' ';
#ifdef SINO_MOS_ADD                
                str[3] = '1'+ FmIdx;
#endif
                i = Radio.Freq;
                j = i%10;
                 str[7] = j + '0';       
                i = i/10;
                j = i %10;
                str[6] = j+ '0';
               DisplayIcon(POINT_ICON,1);
                i = i /10;
                j = i %10;
                str[5] = j + '0';
                i  = i /10;
                j = i%10;
                str[4] = j + '0';
                if(i /10)
                	str[3] = '1';
                else
                	str[3] = ' ';
                
               
       
                         
#else
			DispBuff[2][3]='F';
			DispBuff[2][4]='M';
			//DispNum[2]=Radio.CurrentBand+1;
			DispBuff[2][5]='1'+FmIdx;
			
			i=Radio.Freq;
			j=i%10;
			if(Radio.Area==AREA_USA ||Radio.Area==AREA_LATIN)
				DispBuff[2][12]=' ';
			else
				DispBuff[2][12]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][11]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][9]='0'+j;
			i=i/10;
			j=i%10;
			DispBuff[2][8]='0'+j;
			i=i/10;
			j=i%10;
			if(j==0)
				DispBuff[2][7]=' ';
			else
				DispBuff[2][7]='0'+j;
			
			DispBuff[2][10]='.';
#endif			
		}
	}
	else
	{
		if(FreqInLWAM(Radio.Freq))
		{
#ifdef SINO_MOS
                  str[0] = 'L';
                  str[1] = 'W';
#else
			DispBuff[2][3]='L';
			DispBuff[2][4]='W';
#endif			
		}
		else
		{
#ifdef SINO_MOS
                 str[0] = 'M';
                 str[1] = 'W';

#else
			DispBuff[2][3]='M';
			DispBuff[2][4]='W';
#endif			
		}
#ifdef SINO_MOS
              i = Radio.Freq;
              j = i%10;
              str[2] = ' ';
              str[6] = j + '0';
              i = i/10;
              j = i % 10 ;
              str[5] = j + '0';
              i =  i / 10;
              j  = i % 10;
              str[4] = j + '0';
              i = i/10;
              j = i%10;
              if(j == 0)
              	str[3] = ' ';
              else
              	str[3] = '0' + j;
               DisplayIcon(POINT_ICON,0);
#else
		i=Radio.Freq;
		j=i%10;
		DispBuff[2][12]='0'+j;
		i=i/10;
		j=i%10;
		DispBuff[2][11]='0'+j;
		i=i/10;
		j=i%10;
		DispBuff[2][10]='0'+j;
		i=i/10;
		j=i%10;
		if(j==0)
			DispBuff[2][9]= ' ';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -