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

📄 bbktuner.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
📖 第 1 页 / 共 3 页
字号:
				else eeprom_call_fm(1);
				_fgRunTuner=ON;
			break;
			}
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunAmFm(void) large
{
	switch(_bRunStep)
	{
		case 0:								//KEY:BAND
			//_bKeyEnable=ENABLE_TUNER_KEY;
			_bRunStep=12;
			_fgAutoSearchTune=OFF;
			if(_fgTuneAuto==ON)
			{
				_fgTuneAuto=OFF;
			}
			else
			{
				if(_fgAmFm==AMFM_FM)
				{
					_fgAmFm=AMFM_AM;
					_bPreset=_bAmPreset;
				}
				else
				{
					_fgAmFm=AMFM_FM;
					_bPreset=_bFmPreset;
				}
				_bProgram=_bPreset;
				_fgSaveAmFm=1;
				_fgRunTuner=ON;
				vTunerMute(TRUE);
			}
			_bDisplayStep=0;
			_bDisplayState=D_mDIS_TUNED;
		break;
			
		case 2:								//KEY:TUNE+,TUNE-
			//_bKeyEnable=ENABLE_TUNER_KEY;
			switch(_bDisplayState)
			{
				case D_mDIS_TUNED:
				case D_mDIS_NORMAL:
					_fgAutoSearchTune=OFF;
					_fgTuneAuto=OFF;
					if (_fgTunerDir==T_FREQUP) vTunerFreqUp();               
					else vTunerFreqDown();
					_bDisplayStep=0;
					_bRunStep=12;
				break;
					
				case D_mDIS_TUNEMEMORY:
				break;
					
				default:
					_bDisplayStep=0;
					_bDisplayState=D_mDIS_TUNED;
					_bRunStep=10;
				break;
			}
		break;
			
		case 3:								//KEY:AUTOTUNE++,AUTOTUNE--
			//_bKeyEnable=ENABLE_TUNER_KEY;
			switch(_bDisplayState)
			{
				case D_mDIS_TUNED:
				case D_mDIS_NORMAL:
					if(_fgTuneAuto==OFF) 
					{
						_fgTuneAuto=ON;
						_fgRunTuner=ON;
						if(_fgAmFm==AMFM_FM) _bIntRegister=_bFmFreq;
						else _bIntRegister=_bAmFreq;
					}
					if (_fgTunerDir==T_FREQUP) vTunerFreqUp();               
					else vTunerFreqDown();
				break;
					
				case D_mDIS_TUNEMEMORY:
					if(_fgAutoSearchTune==OFF)
					{
						_bProgram=1;
						_bPreset=1;
						_fgAutoSearchTune=ON;
						_fgTuneAuto=ON;
						if(_fgAmFm==AMFM_FM) _bIntRegister=_bFmFreq;
						else _bIntRegister=_bAmFreq;
						_fgRunTuner=ON;
					}
				break;
			}
			_bDisplayStep=0;
			_bDisplayState=D_mDIS_TUNED;
			_bRunStep=12;
		break;
			
		case 5:								//KEY:ST\MONO
			//_bKeyEnable=ENABLE_TUNER_KEY;
			_fgAutoSearchTune=OFF;
			_fgTuneAuto=OFF;
			if(_fgAmFm==AMFM_FM) 
			{
				if(_fgTunerStMo==T_STEREO) _fgTunerStMo=T_MONO;
				else _fgTunerStMo=T_STEREO;
				_fgRunTuner=ON;
				_bDisplayStep=0;
				_bDisplayState=D_mDIS_STEREO;
			}
			_bRunStep=12;
			break;
			
		case 8:								//KEY:MODE	
			//_bKeyEnable=ENABLE_TUNER_KEY;
			if(_fgAmFm==AMFM_FM)
			{
				if(_fgTunerMode==MODE_AUTO) _fgTunerMode=MODE_MANU;
				else _fgTunerMode=MODE_AUTO;
				_fgSaveAmFm=1;
				_fgRunTuner=ON;
				vTunerMute(TRUE);
				_bComReg=0;
				_bDisplayStep=2;
				_bDisplayState=D_mDIS_TUNED;
				_bRunStep=9;
			}
			_bRunStep=12;
			_fgAutoSearchTune=OFF;
			_fgTuneAuto=OFF;
		break;
			
		case 9:
			_bComReg++;
			if(_bComReg>60) _bRunStep=12;
		break;
			
		case 10:
			_bProcess=RUN_NOTHING;
		break;
			
		case 11:
		case 12:
			_bProcess=RUN_TUNER;
		break;
			
		case 13:							//KEY:STEP
			_fgAutoSearchTune=OFF;
			_fgTuneAuto=OFF;
			if(_bDisplayState==D_mDIS_STEP)
			{
				if(_fgStep9K10K==STEP_9K)
				{
					_fgStep9K10K=STEP_10K;
					if(_bAmFreq>=MAX_AMFREQ10K) _bAmFreq-=2;
				}
				else
				{
					_fgStep9K10K=STEP_9K;
				}
				_fgSaveAmFm=1;
			}
			_bDisplayStep=0;
			_bDisplayState=D_mDIS_STEP;
			_bRunStep=12;
		break;	
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunTunerMemory(void) large
{
	_fgAutoSearchTune=OFF;
	_fgTuneAuto=OFF;
	switch(_bRunStep)
	{
		case 0:
			//_bKeyEnable=ENABLE_NON_KEY;						// 按键无效
			_bRunStep=1;
			_bDisplayStep=0;
			if(_bDisplayState!=D_mDIS_TUNEMEMORY)	_bDisplayState=D_mDIS_TUNEMEMORY;
			else	
				{
				_bVfdTimer=0;
				_bProcess=RUN_NOTHING;
				_bDisplayState=D_mDIS_NORMAL;
				}		break;
		
		case 1:
			_bProcess=RUN_NOTHING;
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunAutoSearch(void) large
{
	_fgAutoSearchTune=OFF;
	_fgTuneAuto=OFF;
	switch(_bRunStep)
	{
		case 0:
			//_bKeyEnable=ENABLE_NON_KEY;						// 按键无效
			_bRunStep=1;
			_bDisplayStep=0;
			if(_bDisplayState!=D_mDIS_TUNEAUTOSEARCH)	_bDisplayState=D_mDIS_TUNEAUTOSEARCH;
			/*else	
				{
				_bVfdTimer=0;
				_bProcess=RUN_NOTHING;
				_bDisplayState=D_mDIS_NORMAL;
				}	*/
			break;
		
		case 1:
			if(_fgAutoSearchTune==OFF)
			{
				_bProgram=1;
				_bPreset=1;
				_fgAutoSearchTune=ON;
				_fgTuneAuto=ON;
				if(_fgAmFm==AMFM_FM) _bIntRegister=_bFmFreq;
				else _bIntRegister=_bAmFreq;
				_fgRunTuner=ON;
				_bProcess=RUN_TUNER;
			}
		break;
	}
}

	
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunTunerSleep(void) large
{
	_fgAutoSearchTune=OFF;
	_fgTuneAuto=OFF;
	switch(_bRunStep)
	{
		case 0:
			//_bKeyEnable=ENABLE_NON_KEY;						// 按键无效
		 	_bRunStep=1;
			_bDisplayStep=0;
		 if(_bDisplayState==D_mDIS_TUNESLEEP)
		{
		switch(_bSetSleepState)
	{
		case SLEEP_ON:
			_bSetSleepState = SLEEP_ON_DISPLAY;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_ON_DISPLAY:
			_bSetSleepState = SLEEP_90M;
			_wSleepCounter = 91 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_OFF:
			_bSetSleepState = SLEEP_90M;
			_wSleepCounter = 91 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_90M:
			_bSetSleepState = SLEEP_75M;
			_wSleepCounter = 76 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_75M:
			_bSetSleepState = SLEEP_60M;
			_wSleepCounter = 61 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_60M:
			_bSetSleepState = SLEEP_45M;
			_wSleepCounter = 46 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;


		case SLEEP_45M:
			_bSetSleepState = SLEEP_30M;
			_wSleepCounter = 31*SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_30M:
			_bSetSleepState = SLEEP_15M;
			_wSleepCounter = 16*SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
		break;

		case SLEEP_15M:
			_bSetSleepState = SLEEP_OFF;
			_wSleepCounter = 0;
			_bSleepOSDCounter = 4;
		break;

		default:
			_bSetSleepState = SLEEP_OFF;
			_wSleepCounter = 0;
			_bSleepOSDCounter = 4;
		break;
	}

		 }
			else	
				{
			_bSetSleepState = SLEEP_90M;
			_wSleepCounter = 91 * SLEEP_TIME_ADJUST_LEVEL -1;
			_bSleepOSDCounter = 4;
			
			//bVfdTimer=0;
				_bDisplayState=D_mDIS_TUNESLEEP;
				}	
				_bDisplayState=D_mDIS_TUNESLEEP;
			_bDisplayStep=0;
			break;
		
		case 1:
			_bProcess=RUN_NOTHING;
		break;
	}
}
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunTunerChannel(void) large
{
	_fgAutoSearchTune=OFF;
	_fgTuneAuto=OFF;
	switch(_bRunStep)
	{
		case 0:
			//_bKeyEnable=ENABLE_TUNER_KEY;
			switch(_bDisplayState)
			{
				case D_mDIS_TUNEMEMORY:
				case  D_mDIS_TUNECLEAR:
				case  D_mDIS_TUNED:
					if((_bProgram==0)||((_fgAmFm==AMFM_AM)&&(_bProgram>TOTAL_SAVE_AM_NUM))||((_fgAmFm==AMFM_FM)&&(_bProgram>TOTAL_SAVE_FM_NUM))) _bRunStep=5;
					else _bRunStep=1;
					_bComReg=0;
					_bDisplayStep=4;
				break;
					
				default:
					_bDisplayStep=0xFF;
					_bDisplayState=D_mDIS_TUNED;
				break;
			}
		break;
			
		case 1:
			_bComReg++;
			if(_bComReg>60)	_bRunStep=2;//if(_bComReg>30)	_bRunStep=2;决定按两个数字键之间可以允许的间隔时间。
		break;
			
		case 2:
			switch(_bDisplayState)
			{
				case D_mDIS_TUNEMEMORY:
					if(_fgAmFm==AMFM_AM) eeprom_save_am(_bProgram);
					else eeprom_save_fm(_bProgram);
					_bRunStep=4;
				break;
					
				case  D_mDIS_TUNECLEAR:
					if(_fgAmFm==AMFM_AM) eeprom_clear_am(_bProgram);
					else eeprom_clear_fm(_bProgram);
					_bRunStep=4;
				break;
					
				case  D_mDIS_TUNED:
				default:
					if(((_fgAmFm==AMFM_AM)&&(eeprom_call_am(_bProgram)==0))||((_fgAmFm==AMFM_FM)&&(eeprom_call_fm(_bProgram)==0)))
					{
						_bDisplayStep=12;
						_bDisplayState=D_mDIS_TUNED;
						_bRunStep=4;
					}
					else
					{
						_bRunStep=3;
						_bPreset=_bProgram;
						if(_fgAmFm==AMFM_FM) _bFmPreset=_bPreset;
						else _bAmPreset=_bPreset;
						_fgSaveAmFm=1;
					}
				break;
			}		
			_fgTuneKey=0;
		break;
			
		case 3:
			_fgRunTuner=ON;
			_bProcess=RUN_TUNER;
		break;
			
		case 5:
			_bComReg++;
			if(_bComReg>30)	_bRunStep=6;
		break;
			
		case 6:
			_fgTuneKey=0;
			_bProgram=_bPreset;
			_bDisplayStep=0;
			_bDisplayState=D_mDIS_NORMAL;//_bDisplayState=D_mDIS_OPNULL_BEYOND;
			_bRunStep=4;			
		break;
			
		case 4:
		default:
			//_bKeyEnable=ENABLE_ALL_KEY;
			_bProcess=RUN_NOTHING;
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vRunTunerPreset(void) large
{
	_fgAutoSearchTune=OFF;
	_fgTuneAuto=OFF;
	switch(_bRunStep)
	{
		case 0:
			//_bKeyEnable=ENABLE_TUNER_KEY;
			if(_fgAmFm==AMFM_AM)	_bComReg=TOTAL_SAVE_FM_NUM-TOTAL_SAVE_AM_NUM;
			else		_bComReg=0;
			_bRunStep=1;
		break;
			
		case 1:
			_bPreset++;
			if(_fgAmFm==AMFM_AM)
			{
				if(_bPreset>TOTAL_SAVE_AM_NUM) _bPreset=1;
				if(eeprom_call_am(_bPreset)) _bRunStep=4;
			}
			else 				
			{
				if(_bPreset>TOTAL_SAVE_FM_NUM) _bPreset=1;
				if(eeprom_call_fm(_bPreset))	_bRunStep=4;
			}
			_bComReg++;
			if(_bComReg>=TOTAL_SAVE_FM_NUM) 	_bRunStep=7;
		break;
			
		case 2:
			if(_fgAmFm==AMFM_AM)	_bComReg=TOTAL_SAVE_FM_NUM-TOTAL_SAVE_AM_NUM;
			else		_bComReg=0;
			_bRunStep=3;
		break;
			
		case 3:
			_bPreset--;
			if(_fgAmFm==AMFM_AM)	
			{
				if(_bPreset==0) _bPreset=TOTAL_SAVE_AM_NUM;
				if(eeprom_call_am(_bPreset)) _bRunStep=4;
			}
			else 				
			{
				if(_bPreset==0) _bPreset=TOTAL_SAVE_FM_NUM;
				if(eeprom_call_fm(_bPreset))	_bRunStep=4;
			}
			_bComReg++;
			if(_bComReg>=TOTAL_SAVE_FM_NUM) 	_bRunStep=7;
		break;
			
		case 4:
			_bComReg=0;
			_bProgram=_bPreset;
			if(_fgAmFm==AMFM_FM) _bFmPreset=_bPreset;
			else _bAmPreset=_bPreset;
			_fgSaveAmFm=1;
			_bDisplayStep=4;
			_bDisplayState=D_mDIS_TUNED;
			_bRunStep=5;
		break;
			
		case 5:
			_bComReg++;
			if(_bComReg>20) _bRunStep=6;
		break;
			
		case 6:
			_fgRunTuner=ON;
			_bProcess=RUN_TUNER;
		break;
			
		case 7:
			_bComReg=0;
			_bDisplayStep=12;
			_bDisplayState=D_mDIS_TUNED;
			_bRunStep=9;
		break;
			
		case 8:
		case 9:
		default:
			_bProcess=RUN_NOTHING;
		break;
	}
}
#ifdef  TUNER_SHOWVOLUME
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vVol_Process(void)large
{
BYTE  bByte;
	switch(_bRunStep)
	{
		case 0:						
			//cutkeyflag=KEY_DISABLE;								// 按键无效
		  if ((fgIsMute())||(_bPlayerMute== TRUE)) /* if mute on */
		  {
		    //fgFromMute = TRUE;
		    /* turn mute off first */
		SetDapMute();
		ClrVMute();
		#ifdef  AV_CENTER
				_bPlayerMute = FALSE;
			#ifdef  CD4094
		         vSetCD4094Pin(Vmute);	
		      #endif
		#endif
		  }

			_bRunStep=2;
			if(_bMasterVol>20) _bMasterVol=20;

			if(_bDisplayState==D_mDIS_VOLUME)	// master volume adjust
			{
				if(_bMasterVol<20)
				{
					_bMasterVol++;
					#ifdef  VOLUME_PT2314USE
						vMainVolCtrltemp(_bMasterVol);
					#endif
				}
				_bDisplayStep=1;								// 显示屏显示参数	
				
			}

			else _bDisplayStep=0;

			_bDisplayState=D_mDIS_VOLUME;
		break;

		case 1:
			//cutkeyflag=KEY_DISABLE;								// 按键无衆

⌨️ 快捷键说明

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