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

📄 bbktuner.~c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 ~C
📖 第 1 页 / 共 4 页
字号:
			_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
void vVol_Process(void)large
{
BYTE  bByte;
BYTE bVal = bAdspCurrVol();
  if (_bPlayerMute==1) // mute off
  {
  _bPlayerMute=0;
   //tanglushan 05/10/11
SetDapMute();
V_MUTE=0;
  }

	switch(_bRunStep)
	{
		case 0:						
			//cutkeyflag=KEY_DISABLE;								// 按键无效
			_bRunStep=2;
			if(_bDisplayState==D_mDIS_VOLUME)	// master volume adjust
			{
				  if (bVal < MAX_VOL_LEVEL)
				  {
				    bVal ++;
				  /* change volume level first */
				  vAdspVolume(bVal);
				  }

				_bDisplayStep=1;								// 显示屏显示参数	
				
			}

			else _bDisplayStep=0;

			_bDisplayState=D_mDIS_VOLUME;
		break;

		case 1:
			//cutkeyflag=KEY_DISABLE;								// 按键无效
			_bRunStep=2;
			if(_bDisplayState==D_mDIS_VOLUME)		// master volume adjust
			{
				  if (bVal > MIN_VOL_LEVEL)
				  {
				    bVal --;
				  /* change volume level first */
				  vAdspVolume(bVal);
				  }
				_bDisplayStep=1;	// 显示屏显示参数	
			}
			else _bDisplayStep=0;

			_bDisplayState=D_mDIS_VOLUME;
		break;

		case 2:
			_bRunStep=3;
		break;

		case 3:
			_bRunStep=4;
		break;

		case 4:
		default:
			_bProcess=RUN_NOTHING;
		break;
	}
}

#if 1
void vMute_Process(void)large
{
	switch(_bRunStep)
	{
		case 0:					
			if(_bPlayerMute==FALSE)	_bPlayerMute=TRUE;
			else  _bPlayerMute=FALSE;
		//	if(_rAudioCtrl.sVol.fgIsMute==FALSE)	_rAudioCtrl.sVol.fgIsMute=TRUE;
			//else  _rAudioCtrl.sVol.fgIsMute=FALSE;
			_bRunStep=1;
		break;

		case 1:
			_bRunStep=2;
			if((_bPlayerMute==TRUE)||(fgIsMute())) 
			{
				//SetDapMute();
				ClrDapMute();
				V_MUTE=1;
				_bDisplayStep=0;
			}
			else
			{
				SetDapMute();
				V_MUTE=0;
				_bDisplayStep=1;
			}
			_bDisplayState=D_mDIS_MUTE;
			vVfdClearAll();
		break;

		case 2:	
		case 3:
		default:
			_bProcess=RUN_NOTHING;
		break;
	}	
}

#endif

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

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vStepProcess(void) large
{
	switch(_bProcess)
	{
		case RUN_NOTHING:
			vRunWaiting();
		break;
		
		case RUN_TUNER:
			vRunTuner();
		break;
			
		case RUN_KEYAMFM:
			vRunAmFm();
		break;
			
		case RUN_KEYTUNEMORY:
			vRunTunerMemory();
		break;
		
		case RUN_KEYAUTOSEARCH:
			vRunAutoSearch();
		break;
		case RUN_TUNERSLEEP:
			vRunTunerSleep();
		break;
		case RUN_KEYCHANNEL:
			vRunTunerChannel();
		break;
			
		case RUN_KEYTUNEPRESET:
			vRunTunerPreset();
		break;
		#ifdef  TUNER_SHOWVOLUME
		case	RUN_KEYNORMALKEY:
			vVol_Process();
		break;	

		case   RUN_KEYMUTE:
			vMute_Process();
		break;
		#endif	
		case RUN_KEYTUNCLEAR:
			vRunTunerClear();
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerSaveString(void) large
{
	_bVfdTimer=0;

	#ifdef  TEMP_CLOSE0426
	vVfdMessage(VFD_MESSAGE_MEMORY);	
	#endif
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAutoSearchString(void) large
{
	_bVfdTimer=0;

	#ifdef  TEMP_CLOSE0426
	vVfdMessage(VFD_MESSAGE_SEARCH);	
	#endif
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerClearString(void) large
{
	_bVfdTimer=0;

	#ifdef  TEMP_CLOSE0426
	vVfdMessage(VFD_MESSAGE_SLEEPOFF);	
	#endif
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAutoManString(void) large
{
	_bVfdTimer=0;
	
	if(_fgTunerMode==MODE_AUTO)
	{
	#ifdef  TEMP_CLOSE0426
		vVfdMessage(VFD_MESSAGE_MAN);
	#endif
	}		
	else
	{
	#ifdef  TEMP_CLOSE0426
		vVfdMessage(VFD_MESSAGE_AUTO);	
	#endif
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAmStepString(void) large
{
	_bVfdTimer=0;
	
	if(_fgStep9K10K==STEP_9K)
	{
	#ifdef  TEMP_CLOSE0426
		vVfdMessage(VFD_MESSAGE_STEP9K);
	#endif
	}
	else
	{
	#ifdef  TEMP_CLOSE0426
		vVfdMessage(VFD_MESSAGE_STEP10K);
	#endif
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAmFmFreqString(void) large
{
	WORD  vol;

	if (_fgAmFm==AMFM_AM)
	{

		if(_fgStep9K10K==STEP_9K)
		{
			vol=_bAmFreq*9+522;
		}
		else
		{
			vol=_bAmFreq*10+520;
		}
	}
	else 
	{
		#ifdef FM_PLUS
		if(_bFmFreq<=MAX_FMFREQ_LOW)
		{
			vol=_bFmFreq*FMstep_LOW+FMstartFREQ_LOW;
		}
		else
		{
			vol=(_bFmFreq-MAX_FMFREQ_LOW-1)*FMstep_HIGH+FMstartFREQ_HIGH;
		}
		#else
		vol=_bFmFreq*FMstep+FMstartFREQ;
		#endif
	}

	vVfdShowFreq(vol, _fgAmFm);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerChanneString(BYTE flash) large
{
	_bVfdTimer=0;
	
	vVfdShowChannel(_bProgram, _fgAmFm);

	if(flash==0)
	{

	}
}

⌨️ 快捷键说明

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