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

📄 tuner.c

📁 车载DVD osdIC TW8816原厂代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	else{
	
		//if( AFT(TVFreq)) ;
		//else 
			SetTVFreq( TVFreq ); // AFT Fail
	}
	
	delay(10);
	
	//SWReset();
	//WriteDecoder(MISC3, val);	// Disable Blue/black Screen
	//WriteDecoder(0x2f, 0x91); // Rewrite Clroma low pass filter data for Noinput color killer problem.
	DisplayTVChannel(TVChannel,1);		
	SetTVPrEE();
	PanelBlack(0);

	AudioOn();			//SetMSPVol();



}

//=======================  Called from outside ==============================================
void ChangeTVChannel(BYTE NewCh)
{
	TVChManual = 0;

	if( NewCh >= MIN_TVCHN[TVInputSel - AIRTV] && NewCh <= MAX_TVCHN[TVInputSel - AIRTV] )		
	{
		TVChannel = DummyChannel = NewCh;
		SetTVChannel();
	}
}

BYTE UpDownTVChannel(BYTE flag)
{
	BYTE i=0, OldTVChannel;
	BYTE MinChannel=0;
	BYTE MaxCount;

	ClearOSDInfo();

	MinChannel = MIN_TVCHN[TVInputSel - AIRTV];
	MaxCount = MAX_TVCHN[TVInputSel - AIRTV]  -  MinChannel + 1;

	OldTVChannel = TVChannel;

	do {
		i++;
		if( i > MaxCount ) 
		{
			TVChannel = DummyChannel = OldTVChannel;
			break;
		}	

		if(flag == UP)	 DummyChannel = ( TVChannel + 1 - MinChannel) % MaxCount + MinChannel; 
		else  DummyChannel = ( TVChannel + MaxCount - 1 - MinChannel) % MaxCount + MinChannel; 
		
		TVChannel = DummyChannel;

	} while( GetTVPrSystem(TVChannel) & SKIPCHN_MASK);
	
	SetTVChannel();
	return TRUE;
}

// TV Channel Auto Scan..
void ScanTVChannel(void)
{
	BYTE i;
	BYTE str[4];
	DWORD TEMP_TVFREQ;
	#ifdef SUPPORT_HRCIRC
	BYTE HRC_Count = 0;
	BYTE STD_Count = 0;
	bit HRC_Flag=0, IRC_Flag = 0;
	#endif
	BYTE PreTVChannel;

	PreTVChannel = TVChannel;
	AudioOff();

	for(i=MIN_TVCHN[TVInputSel-AIRTV]; i<= MAX_TVCHN[TVInputSel-AIRTV]; i++) {

		if( WantToStopTVScan() )
			break;

		TVChannel = i;
		SetTVPrSystem(TVChannel, SKIPCHN_MASK);	// skip
		SetFineTuneEE(TVChannel, 0);
		TEMP_TVFREQ = Get_Channel2Divid(); // Get Freq Data from Channel table. 

		utoa( (WORD)i, str,10);
		DisplayScanTVChannel(str);		

		#ifdef SUPPORT_HRCIRC
		// HRC Check
		if( (TVChannel != 5) && (TVChannel != 6)){
				SetTVFreq( TEMP_TVFREQ-20 );	   // STD-1.25 Mhz
				delay(30);	// Wait for 100mS
				if(IsVideoInput()) 
				{	
					HRC_Count++ ;
					//Video_Status = TRUE;
					SetTVPrSystem(TVChannel, 0);	// Not skip
				}
		}
			
		if( (TVChannel == 5) || (TVChannel == 6)){
			// STD
				SetTVFreq( TEMP_TVFREQ);	   // STD
				delay(30);	
				if(IsVideoInput()) 
				{	
					STD_Count++ ;
					//Video_Status = TRUE;
					SetTVPrSystem(TVChannel, 0);	// Not skip
				}
			// HRC
				SetTVFreq( TEMP_TVFREQ+12 );	   // STD + 0.75 Mhz
				delay(30);	
				if(IsVideoInput()) 
				{	
					HRC_Count++ ;
					//Video_Status = TRUE;
					SetTVPrSystem(TVChannel, 0);	// Not skip
				}
			// IRC
				SetTVFreq( TEMP_TVFREQ+32 );	   // STD + 2.0 Mhz
				delay(30);	
				if(IsVideoInput()) 
				{	
					HRC_Flag = 0; 
					IRC_Flag = 1;
					//Video_Status = TRUE;
					SetTVPrSystem(TVChannel, 0);	// Not skip
				}
		}
		#endif	//SUPPORT_HRCIRC
		
		// STD
		SetTVFreq(TEMP_TVFREQ);
		delay(30);	// Wait for 100mS
		if(IsVideoInput()) 
		{	
				#ifdef SUPPORT_HRCIRC
				STD_Count++ ;
				#endif
				//Video_Status = TRUE;
				SetTVPrSystem(TVChannel, 0);	// Not skip
		}

		
		//delay(10);
		//if( IsVideoInput() )
		//	AddTVChannelEE(TVInputSel,i);
	}

	#ifdef SUPPORT_HRCIRC
		if( !IRC_Flag )
			if( HRC_Count > STD_Count ) {
				HRC_Flag = 1;
		}

		for( TVChannel = 1; TVChannel<125; TVChannel++ )
		{
			TVFreq = 0;

			if( (TVChannel == 5) || (TVChannel == 6))
			{
				if(IRC_Flag)
					TVFreq = 30; // IRC=STD+2.00Mhz
				else
				{
					if( HRC_Flag)
						TVFreq = 12; // HRC=STD+0.75Mhz
				}
			}
			else
			{
				if( HRC_Flag)
					TVFreq = -20; // HRC=STD-1.25Mhz
			}

			SetFineTuneEE(TVChannel, TVFreq);
			
		}// for
	#endif	// SUPPORT_HRCIRC

	CheckAndClearMuteOn();

	if( PreTVChannel > ( TVInputSel==CABLETV ? MAX_CABLETV : MAX_AIRTV ) )
			TVChannel = 2;
	else TVChannel = PreTVChannel;

	SetTVChannel();

	if( IsAudioMuteOn() )	DisplayMuteInfo();
	else AudioOn();

}


CODE struct RegisterInfo OSDFineTuneRange={ -31, 31, 0 };
BYTE GetFineTune(void)
{
	char val;
	int rd;
	val =  GetFineTuneEE(TVChannel) ;
	Mapping1( val, &OSDFineTuneRange, &rd, &UserRange );
	return (BYTE)rd;
}

BYTE ChangeFineChannel(BYTE flag)
{
	int rd;
	char val;
	WORD Freq;

	val = GetFineTuneEE(TVChannel) ;
	Printf("\r\nFine Tune:%d", (WORD)val);

//	if( val & 0x80 )	rd = -(val&0x7f)
	val = ( flag==UP ?  val+1  :  val-1  );		
	if( val < OSDFineTuneRange.Min || val > OSDFineTuneRange.Max )
		return 0; // Retry!!
	#ifdef PAL_TV
	Freq = GetTVFreqEE(TVChannel);
	#else
	Freq = Get_Channel2Divid();
	#endif

	Freq = Freq + val;
	SetTVFreq( Freq );   
	SetFineTuneEE(TVChannel, (BYTE)val);

	Mapping1( val, &OSDFineTuneRange, &rd, &UserRange );
	return (BYTE)rd;
}


void GetFirstChannel(void)
{
	TVChannel = DummyChannel = GetTVPrEE();
	SetTVChannel();
}

BYTE IsSavedCurChn(void)
{                                                                  
	return( ( GetTVPrSystem( TVChannel ) & SKIPCHN_MASK ) ? CLEARED_CHN : SAVED_CHN   );
}

BYTE StoreClearCurChn(void)
{
	BYTE val,cleared;

	val = GetTVPrSystem( TVChannel );
	if( val & SKIPCHN_MASK )	{	val &= ( ~SKIPCHN_MASK );	cleared = SAVED_CHN ;    }
	else						{	val |= SKIPCHN_MASK;	    cleared = CLEARED_CHN ; 	}
	
	SetTVPrSystem( TVChannel, val );
	return cleared;
}

void EditTVChn(BYTE _RemoDataCode)
{
	WORD TempChannel; 
	TempChannel = DummyChannel ;

	if( TVChManual ) {
		TempChannel*= 10;
		TempChannel+= _RemoDataCode;

		#if defined NTSC_TV
		if( TempChannel > (TVInputSel==AIRTV ? MAX_AIRTV : MAX_CABLETV ) ) 
		#elif defined NTSC_JAPAN_TV
		if	(TempChannel > MAX_AIRTV ) 
		#endif
		{			
			while( TempChannel >= 10 )
				TempChannel -= 10;
		}
	}
	else {
		TempChannel = _RemoDataCode;
	}
	
	DummyChannel = TempChannel;
	DisplayTVChannel(DummyChannel, 0);
	TVChManual = 1;		// Request to run channel after timeout.
}

BYTE GetTVType(void)
{
	return TVInputSel;
}

BYTE ToggleTVType(void)
{
	TVInputSel = (TVInputSel==AIRTV? CABLETV : AIRTV);
	SetTVInputSelEE(TVInputSel);
	return TVInputSel;
}

void InitTV(void)
{
	TVInputSel			= GetTVInputSelEE();
	MTSType             = MTS_STEREO;

	#ifdef DEBUG_TV
	dPrintf("\r\n++(InitTV) TunerI2CAddress:0x%04x", (WORD)TVTunerI2CAddress);
	#endif

	#if TVTunerDevice==TVAVA
	WriteI2C(0x86, 0x00, 0x30);
	WriteI2C(0x86, 0x01, 0x10);		//Set NTSC audio
	WriteI2C(0x86, 0x02, 0x0c);		//Set NTSC Video
	#endif

//070406-start
#if TVTunerDevice==LGTUNER_MK5	//Fix Tuner Video 2Vpp problem
	WriteI2C(0x86, 0x00, 0x17);
	WriteI2C(0x86, 0x01, 0x20);		//Set NTSC audio
	WriteI2C(0x86, 0x02, 0x44);		//Set NTSC Video
#endif
//070406-end
}

void ResetTVValue(void)
{
	//ResetTVChannelEE(AIRTV);
	//ResetTVChannelEE(CABLETV);

}

#endif	//defined( NTSC_TV ) && defined(SUPPORT_TV) 

⌨️ 快捷键说明

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