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

📄 bbktuner.~c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 ~C
📖 第 1 页 / 共 4 页
字号:
/**************************************************************************************/
/***********************                    BBK CONFIDENTIAL                   ************************/
/***********************                                                                    ************************/
/***********************         Description : Digital Audio Process          ************************/
/***********************                                                                    ************************/
/*********************** Company: BBK AV ELECTRONICS CORP.,LTD ************************/
/***********************                                                                    ************************/
/***********************              Programmer : Terry Lee                  ******** ****************/
/**************************************************************************************/

#define BBKTUNER_PAR
#pragma NOAREGS
#include "general.h"
#include  "..\..\procdef.h"
#include "..\..\typedef.h"
#include "..\..\vardef.h"
#if defined(DV997K) || defined(DV979) || defined(DV985) || defined(DVR003)   
sbit  V_MUTE = P3^0;
#endif

extern BOOL fgCOMVolumeDownKey(void) large;
extern BOOL fgCOMMuteKey(void) large;
extern BOOL fgCOMVolumeUpKey(void) large;
extern BYTE bSetMic(WORD wEEPos, BYTE bValue) large;
extern void vKaraOkTunerToDvd(void)large;

//#define BBKTUNER_DEBUG
#ifdef BBKTUNER_DEBUG
extern void DRS232LogS(char * pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif


#ifdef BBK_RD2_OLD_TUNER

//#define BBKTUNER_DEBUG
#ifdef BBKTUNER_DEBUG
extern void DRS232LogS(char * pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vBandKey(void) large
{
	_bProcess=RUN_KEYAMFM;
	_bRunStep=0;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAmStepKey(void) large
{
	if(_fgAmFm!=AMFM_AM) return;
	
	_bProcess=RUN_KEYAMFM;
	_bRunStep=13;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAutoManKey(void) large
{
	_bRunStep=8;
	_bProcess=RUN_KEYAMFM;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vStepUpDownKey(BYTE conreg) large
{
	_bRunStep=2;
	if(conreg==0x0F)
	{
		_fgTunerDir=T_FREQUP;
	}
	else	
	{
		_fgTunerDir=T_FREQDN;
	}
	
	_bProcess=RUN_KEYAMFM;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vSearchUpDownKey(BYTE conreg) large
{
	_bRunStep=3;
	if(conreg==0x0F)
	{
		_fgTunerDir=T_FREQUP;
	}
	else	
	{
		_fgTunerDir=T_FREQDN;
	}
	
	_bProcess=RUN_KEYAMFM;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vAutoSearchLongKey(void) large
{
	_bRunStep=0;
	_bProcess=RUN_KEYAUTOSEARCH;
	
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void fgTunerSleepKey(void) large
{
	_bRunStep=0;
	_bProcess=RUN_TUNERSLEEP;
	
}
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerMemoryKey(void) large
{
	_bRunStep=0;
	_bProcess=RUN_KEYTUNEMORY;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerChKey(BYTE channel) large
{
	static BYTE xdata r_ch0;
	static BYTE xdata r_ch1;

	if(_fgTuneKey==0)
	{
		if(channel==0)
		{
			return;
		}
		r_ch1=0;
		r_ch0=0;
	}
	if(channel==10)
	{
		r_ch0=0;
		r_ch1+=10;
		if(r_ch1>=40)
		{
			r_ch1=40;
			_fgTuneKey=0;
		}
		else
		{
			_fgTuneKey=1;
		}
	}
	else
	{
		r_ch0=channel;
		//_bKeyEnable=ENABLE_NON_KEY;
	}
	
	_bProgram=r_ch1+r_ch0;
	_bRunStep=0;
	_bProcess=RUN_KEYCHANNEL;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vPresetUpDownKey(BYTE conreg) large
{
	if(conreg==0x0F)
	{
		_bRunStep=0;																		// UP
	}
	else	
	{
		_bRunStep=2;																		// DN
	}
	_bProcess=RUN_KEYTUNEPRESET;
}
#ifdef  TUNER_SHOWVOLUME
/*============================================================================*/
/*============================================================================*/
/*	system	master volume processor						  */
/*============================================================================*/
/*============================================================================*/
void	vVolKey(BYTE  conreg)large
{
	//if(f_mute==MUTE_ON) f_mute=MUTE_OFF;

	if(conreg==0x0F)	_bRunStep=0;

	else		_bRunStep=1;
	_bProcess=RUN_KEYNORMALKEY;
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
#if 1
void	vMuteKey(void )large
{
	_bProcess=RUN_KEYMUTE;
	_bRunStep=0;
}
#endif
#endif
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void vTunerClearKey(void) large
{
	_bRunStep=0;																		// UP
	_bProcess=RUN_KEYTUNCLEAR;
}
/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
BOOL vIrKeyEnableTunerPro(void) large
{
#ifdef BBKTUNER_DEBUG
 DRS232LogB(_bIRKey, 0, 0, 1);
#endif

	switch(_bIRKey)
	{
		case IR_AMP_SAVE:
			vTunerMemoryKey();
		break;
		
		case IR_AMP_BAND:
		case IR_AMP_FUN_RADIO:
			vBandKey();
		break;
		
		case IR_AMP_AUTO_MAN:
			vAutoManKey();
		break;

		case IR_AMP_AM_STEP:
			vAmStepKey();
		break;
			
		//case IR_FR:
		case IR_LEFT:
			vStepUpDownKey(0xf0);
		break;
			
		//case IR_FF:
		case IR_RIGHT:
			vStepUpDownKey(0x0f);
		break;

	//	case IR_DOWNSEARCH:
		case IR_DOWN:
			_bVfdTimer=0;
			vSearchUpDownKey(0xf0);
		break;

	//	case IR_UPSEARCH:
		case IR_UP:
			_bVfdTimer=0;
			vSearchUpDownKey(0x0f);
		break;
		
		case IR_AMP_SEARCHLONG:
			vAutoSearchLongKey();
		break;
		case IR_NUM0:
		case IR_NUM1:
		case IR_NUM2:
		case IR_NUM3:
		case IR_NUM4:
		case IR_NUM5:
		case IR_NUM6:
		case IR_NUM7:
		case IR_NUM8:
		case IR_NUM9:
		case IR_ADD10:
			vTunerChKey(_bIRKey);
		break;
			
		case IR_PREV:
			vPresetUpDownKey(0xf0);
		break;
			
		case IR_NEXT:
			vPresetUpDownKey(0x0f);
		break;
		
		case IR_AMP_TUNER_CLEAR:
#ifdef BBKTUNER_DEBUG
 DRS232LogB(_bIRKey, 0, 0, 2);
#endif
			vTunerClearKey();
		break;	
		
		default:
		break;
	}
	return(1);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
bBBKTunerSpecKey(void) large
{
	BOOL bRet = 1;//RET_SUCCESS;

	switch(_bIRKey)
	{
		case IR_AMP_MUTE:
			//fgNonDvdCOMMuteKey();
		break;

		/*This keys are processed in main keyproc!*/
		case IR_POWER: 
			//_bBBKSysState = SYS_STATE_POWERDOWN;
			vBBKTunerExit();
			//fgSetPlayPostKey(IR_POWER);
		break;
			
		#ifdef BBK_RD2_RDS
		case IR_SETUP:
			vRDSDispDeal();
		break;
		#endif

		#ifdef TIME_SLEEP_FUCTION
		case IR_AMP_SLEEP:
			vVfdClearAll();
			fgTunerSleepKey();
		break;
		#endif
		case IR_AMP_FUN_DVD:
			vBBKDvdEnter();
		break;	

		case IR_AMP_FUN:
			_bIRKey=IR_AMP_FUN_AUX;
	//	case IR_AMP_FUN_DVD:
		case IR_AMP_FUN_OPTICAL:
		case IR_AMP_FUN_COAXIAL:
		//case IR_AMP_FUN_AUX:
		case IR_FUNCTION:
		case IR_CAPTURE:
			vBBKTunerExit();
		break;

		/*case IR_AMP_FUN:
		case IR_AMP_FUN_AUDIO:
			#ifdef RDS_USE_BU1924
			MDisableTimer1();   
			#endif
			fgAmpFunAudioKey();
		break;

		case IR_AMP_FUN_MMUI:
			fgAmpFunUsbKey();
		break;*/

		case IR_AMP_CHANNEL_LEFT:
			fgAmpChannelLeftKey();
		break;

		case IR_AMP_CHANNEL_RIGHT:
			fgAmpChannelRightKey();
		break;

		case IR_AMP_CHANNEL_UP:
			fgAmpChannelUpKey();
		break;

		case IR_AMP_CHANNEL_DN:
			fgAmpChannelDnKey();
		break;

		case IR_AMP_BASS_UP:
			fgAmpBassUpKey();
		break;

		case IR_AMP_BASS_DN:
			fgAmpBassDnKey();
		break;

		case IR_AMP_TREBLE_UP:
			fgAmpTrebleUpKey();
		break;

		case IR_AMP_TRENLE_DN:
			fgAmpTrebleDnKey();
		break;

		case IR_AMP_BASS_BOOST:
			fgAmpBassBoostKey();
		break;

#ifdef  TUNER_SHOWVOLUME
		case IR_VOLUME_DOWN:
			//fgCOMVolumeDownKey();
			vVolKey(0XF0);
		break;

		case IR_VOLUME_UP:
		//	fgCOMVolumeUpKey();
			vVolKey(0X0F);
		break;
			
  case IR_MUTE:
       vMuteKey();
      break;


#else
    case IR_VOLUME_UP:
    	//bSetMic(NULL_POSITION, 1);
      fgCOMVolumeUpKey();
        
      break;

    case IR_VOLUME_DOWN:
    fgCOMVolumeDownKey();
        // bSetMic(NULL_POSITION, 0);
      break;

  case IR_MUTE:
       fgNonDvdMuteKey();
      break;
#endif
		default:
			bRet = 0;//RET_FAILURE;
		break;
	}

	return(bRet);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vBBKTunerModeKey(void) large
{
	switch(_eTunerMode)
	{
		case TUNER_MODE_INIT:
			_bIRKey = IR_NONE;
		break;

		case TUNER_MODE_NORMAL:
			switch(_bProcess)
			{
				case RUN_NOTHING:
				break;

				default:
					switch(_bIRKey)
					{
						case IR_AMP_MUTE:
						#ifdef TIME_SLEEP_FUCTION
						case IR_AMP_SLEEP:
						#endif
						case IR_AMP_CHANNEL_LEFT:
						case IR_AMP_CHANNEL_RIGHT:
						case IR_AMP_CHANNEL_UP:
						case IR_AMP_CHANNEL_DN:
						case IR_AMP_BASS_UP:
						case IR_AMP_BASS_DN:
						case IR_AMP_TREBLE_UP:
						case IR_AMP_TRENLE_DN:
						case IR_AMP_BASS_BOOST:
							_bIRKey=IR_NONE;
						break;

						default:
						break;
					}
			}
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void eeprom_save_am(BYTE bChannel) large
{
	WORD bAddress;
	
	bAddress = TUNER_AM_STATION1 + (bChannel - 1);
	fgEepromWriteByte(bAddress,_bAmFreq);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void eeprom_clear_am(BYTE bChannel) large
{
	WORD bAddress;
	
	bAddress = TUNER_AM_STATION1 + (bChannel - 1);
	fgEepromWriteByte(bAddress,0xff);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
BYTE eeprom_call_am(BYTE bChannel) large
{
	WORD bAddress;
	WORD wFreqBuf;
	
	bAddress = TUNER_AM_STATION1 + (bChannel - 1);
	wFreqBuf = (WORD)(bEepromReadByte(bAddress));
if((wFreqBuf>MAX_AMFREQ9K)&&(_fgStep9K10K==STEP_9K))
{
wFreqBuf=0;
}
else if((wFreqBuf>MAX_AMFREQ10K)&&(_fgStep9K10K==STEP_10K))
{
wFreqBuf=0;
}

	if(((_fgStep9K10K==STEP_9K) &&(wFreqBuf<=MAX_AMFREQ9K))||(wFreqBuf<=MAX_AMFREQ10K))
	{
		_bAmFreq=wFreqBuf;
		_fgRunTuner=ON;
		return(1);
	}
	return(0);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void eeprom_save_fm(BYTE bChannel) large
{
	WORD bAddress;
	
	bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
	fgEepromWriteByte(bAddress+1, bHiByte(_bFmFreq));
	fgEepromWriteByte(bAddress, bLoByte(_bFmFreq));
	//fgEepromWriteByte(bAddress, bHiByte(_bFmFreq));
	//fgEepromWriteByte(bAddress+1, bLoByte(_bFmFreq));
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
WORD eeprom_call_fm(BYTE bChannel) large
{
	WORD bAddress;
	WORD wFreqBuf;
	union
	{
		WORD wWord;
		BYTE bByte[2];
	}uChannel;

	bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
	uChannel.bByte[0] = bEepromReadByte(bAddress);
	uChannel.bByte[1] = bEepromReadByte(bAddress+1);
	//wFreqBuf = uChannel.wWord;
	wFreqBuf = (uChannel.bByte[1]<<8)+uChannel.bByte[0];

	 if(wFreqBuf>MAX_FMFREQ)
	{
		wFreqBuf=0;
	}

	if(wFreqBuf<=MAX_FMFREQ)
	{
		_bFmFreq=wFreqBuf;
		_fgRunTuner=ON;
		return(1);
	}
	return(0);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
void eeprom_clear_fm(BYTE bChannel) large
{
	WORD bAddress;
	
	bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
	fgEepromWriteByte(bAddress, 0xff);
	fgEepromWriteByte(bAddress+1, 0xff);
}

/***************************************************************************************
    Function : 
    Description : 

⌨️ 快捷键说明

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