亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tuner.c

?? 此程序為twell8806驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//============ TV Tuner =========================================================
//
//	ljy.EDITTVCHN	10/30/03~	
//				.Enhance the way to get channel number via remocon
//					NTSC AIR -	Wait to get channel number until EDITTVCHN_TIMEOUT
//								is reached or two number are endtered.
//					NTSC CABLE-	Wait to get channel number until EDITTVCHN_TIMEOUT
//								is reached or three number are endtered.
//					PAL  -		Wait to get channel number until EDITTVCHN_TIMEOUT
//								is reached.
//				.Change DisplayTVChannel()->DisplayTVChannel( chn )
//
//	ljy.TV_OPTI		10/31/03~
//				.Use constant MIN_TVCHN[] and MAX_TVCHN[] for TVInputSel
//
//	ljy01xx04		
//				.Insert 'sacnning TV...'message when start to scan TV.
//
//===============================================================================
#include "Config.h"
#include	"reg.h"
#include	"typedefs.h"

#if defined (SUPPORT_TV) && defined( NTSC_TV )

#include	"i2c.h"
#include	"main.h"
#include	"osdbasic.h"
#include    "dispinfo.h"
#include	"osdmenu.h"
#include	"tuner.h"
#include	"audio.h"
#include	"eds.h"
#include    "cc.h"
#include	"debug.h"
#include    "printf.h"
#include	"tw88.h"
#include	"etc_eep.h"
#include	"RegMap.h"

//#define  Fpc_NTSC	45750;			// 45.75Mhz

//--------------------------------------------------------------------------

		PDATA BYTE	TVInputSel;
static  IDATA BYTE	MTSType;

		PDATA BYTE	TVChannel, DummyChannel;

extern  bit   TVTunerAudioActive;
	    bit   TVChManual = 0;

extern CODE struct RegisterInfo UserRange;


static  IDATA DWORD TVFreq=0;

//static  IDATA BYTE  NewTVChannel=0;			//ljy.EDITTVCHN
//static  IDATA WORD  EditTVChnStartTime;		//ljy.EDITTVCHN

//#define EDITTVCHN_TIMEOUT		100		//ljy.EDITTVCHN timeout for each number(in msec)

#define MIN_FREQUENCY	0x572//0x51b//0x54a //580
#define SECAM_L_MIN		0x51b//0x54a //580
#define MAX_FREQUENCY  0x3882		// PAL FREQ INFO
#define  FREQ_INC	     16  // 1000			// 1Mhz		

// TVPRSYSTEM: X XXXXXXX :  STORE[1] :  COLORSYSTEM[bit6~0]

//---------- Control Code -----------------------------------------------------
#if TVTunerDevice==PHILIPS

CODE	WORD	kLowBand  = 0xCEA0;
CODE	WORD	kMidBand  = 0xCE90;
CODE	WORD	kHighBand = 0xCE30;

#elif TVTunerDevice==ALPS

CODE	WORD	kLowBand  = 0xCE01;
CODE	WORD	kMidBand  = 0xCE02;
CODE	WORD	kHighBand = 0xCE08;

#elif TVTunerDevice==TEMIC

CODE	WORD	kLowBand  = 0x8EA2;
CODE	WORD	kMidBand  = 0x8E94;
CODE	WORD	kHighBand = 0x8E31;

#elif TVTunerDevice==TVAVA

CODE	WORD	kLowBand  = 0x8001;
CODE	WORD	kMidBand  = 0x8002;
CODE	WORD	kHighBand = 0x8008;

#elif TVTunerDevice==LGTUNER	// TAPC-H701F (NTSC Only)

CODE	WORD	kLowBand  = 0x8E01;
CODE	WORD	kMidBand  = 0x8E02;
CODE	WORD	kHighBand = 0x8E08;

#elif TVTunerDevice==SAMSUNGMUTITUNER	// PAL/SECAM
CODE	WORD	kLowBand  = 0x8EA1;
CODE	WORD	kMidBand  = 0x8E91;
CODE	WORD	kHighBand = 0x8E31;

#endif
//---------- PLL divider ------------------------------------------------------
#if TVTunerDevice==TVAVA

#define FreqIF		3800 // 38.00 Mhz
#define FreqSetp	20	 // 

#else
//TVTunerDevice==PHILIPS || TVTunerDevice==ALPS || TVTunerDevice==TEMIC || TVTunerDevice==LGTUNER || TVTunerDevice==SAMSUNGMUTITUNER
#define FreqIF		4575 // Picture Intermediate Freq. in NTSC tuner : 45.75 MHz
#define FreqSetp	16	 // 1Mhz/62.5Khz (RSA=RAB=1) // 1000/62.5 = 16

#endif

// Calculate 
#define TVFreqDiv1   0x770  //(7325L+FreqIF)*FreqSetp/100;
#define	TVFreqDiv2   0x650  //(5525+FreqIF)*FreqSetp/100;
#define TVFreqDiv5   0x7b0  //(7725+FreqIF)*FreqSetp/100;
#define TVFreqDiv7   0xdd0 //(17575L+FreqIF)*FreqSetp/100;
#define TVFreqDiv14_AIR  0x2050 // (47125L+FreqIF)*FreqSetp/100;
#define TVFreqDiv14  0xa70 // (12125L+FreqIF)*FreqSetp/100;
#define	TVFreqDiv23  1070 // (21725L+FreqIF)*FreqSetp/100;
#define	TVFreqDiv95  0x890 // (9125L+FreqIF)*FreqSetp/100;
#define	TVFreqDiv100 0x2b70 // (64925L+FreqIF)*FreqSetp/100;

#define	TVFreqDivINC  0x60  //6*FreqSetp;	// 6Mz step in NTSC

CODE	WORD	MIN_TVCHN[]=	{	2,	1 };		//{ AIR, CABLE }
CODE	WORD	MAX_TVCHN[]=	{	69,	125 };		


//-----------------------------------------------------------------------------

#ifdef NTSC_TV 
WORD Get_Channel2Divid (void)
{
	WORD FreqDiv=NIL;

	if( TVInputSel==CABLETV )  {
		if( TVChannel < 1 )TVChannel = 1;
		if( TVChannel ==1 )	FreqDiv = TVFreqDiv1;		
		else if( TVChannel >=2 && TVChannel <=4 )   FreqDiv = (TVChannel-2)*TVFreqDivINC + TVFreqDiv2;						
		else if( TVChannel >=5 && TVChannel <=6 ) 	FreqDiv = (TVChannel-5)*TVFreqDivINC + TVFreqDiv5;	//(77.55+45.75)*16
		else if( TVChannel >=95 && TVChannel <=99 )	FreqDiv = (TVChannel-95)*TVFreqDivINC + TVFreqDiv95;	//(91.25+45.75)*16
		else if( TVChannel >=14 && TVChannel <=22 ) FreqDiv = (TVChannel-14)*TVFreqDivINC + TVFreqDiv14;	//(121.25+45.75)*16
		else if( TVChannel >=7 && TVChannel <=13 )  FreqDiv = (TVChannel-7)*TVFreqDivINC + TVFreqDiv7;	//(175.25+45.75)*16
		else if( TVChannel >=23 && TVChannel <=94 ) FreqDiv = (TVChannel-23)*TVFreqDivINC + TVFreqDiv23;	//(217.25+45.75)*16
		else if( TVChannel >=100 && TVChannel <=125 ) 	FreqDiv = (TVChannel-100)*TVFreqDivINC + TVFreqDiv100;//(649.25+45.75)*16
	}
	else 
	{  // AIRTV 
		if( TVChannel < 2 )TVChannel = 2;
		if( TVChannel >=2 && TVChannel <=4 ) FreqDiv = (TVChannel-2)*TVFreqDivINC + TVFreqDiv2;			//(91.25+45.75)*16
		else if( TVChannel >=5 && TVChannel <=6 ) 	FreqDiv = (TVChannel-5)*TVFreqDivINC + TVFreqDiv5;	//(77.55+45.75)*16
		else if( TVChannel >=7 && TVChannel <=13 )	FreqDiv = (TVChannel-7)*TVFreqDivINC + TVFreqDiv7;	//(175.25+45.75)*16
		else if( TVChannel >=14 && TVChannel <=69)	FreqDiv = (TVChannel-14)*TVFreqDivINC + TVFreqDiv14_AIR;  //(471.25+45.75)*16
	}

	return FreqDiv;
}

#endif	// NTSC_TV
//-----------------------------------------------------------------------------
void SetTVFreq(WORD FreqDiv)
{
	WORD TVCtrlCode=0;

	TVFreq = FreqDiv;	

	#ifdef DEBUG_TV
	dPuts("\r\n++(SetTVFreq)");
	Printf("\r\CH:%d  ", (WORD)TVChannel);
	#endif

	#ifdef DEBUG_TV
	Printf("\rTVFreqDiv:0x%04x",(WORD)FreqDiv);
	#endif

	// Get Control Code
	if( FreqDiv <= kUpperLowBand)
			TVCtrlCode = kLowBand;
	else
	{
		if( FreqDiv <= kUpperMidBand)
				TVCtrlCode = kMidBand;
		else
				TVCtrlCode = kHighBand;
	}
	
	#ifdef DEBUG_TV
	Printf("  TVCtrlCode:0x%04x", (WORD)TVCtrlCode);
	#endif

	I2CStart();
	I2CWriteData(TVTunerI2CAddress & 0xFE);
	I2CWriteData(FreqDiv>>8);
	I2CWriteData(FreqDiv);
	I2CWriteData(TVCtrlCode>>8);
	I2CWriteData(TVCtrlCode);
	I2CStop();
	

	if( !TVTunerAudioActive )
		AudioAutoStdDetection();

	#ifdef DEBUG_TV
	dPuts("\r\n__(SetTVFreq)");
	#endif
}

//BYTE GetTVChannel(void)
//{
//	return TVChannel;
//}
//---------------------------------------------------------------------------
//Auto Fine Tune
//	if (FINE == 0) {	
	 // +/-1.5Mhz : Data +/-24, : AutoScan 
	 // +/-2.0Mhz : Data +/-32  : ManualScan
	 // Data 1: 62.25Khz
//	}  
/*#ifdef PAL_TV
// Read Tuner ADC Data
BYTE ReadTuner(void)
{
	BYTE Val;

 	I2CStart();
	I2CWriteData(TVTunerI2CAddress & 0xFE);
	I2CStart();
	I2CWriteData(TVTunerI2CAddress | 0x01);
	Val = I2CReadData();
	I2CStop();

	Printf("\rTuner ADC:0x%02x",(WORD)Val);

	return Val;
}

BYTE AFT( WORD TVFreqDiv )
{
	BYTE amount = 8, Check_Cnt=8, val;
	
	//FreqDiv = FreqDiv & ( ~SKIPCHN_MASK );
	if( IsNoInput() ) return FALSE;  // ???

	SetTVFreq(TVFreqDiv);
	delay(30);	
	val = ReadTuner();
	if(((val & 0x07) < 0x03 ) && ((val & 0x07) > 0x01 ))	
			goto true_aft;

	if( (val & 0x07) == 4 ) 	{
		TVFreqDiv -= 12;
		SetTVFreq(TVFreqDiv);
		delay(30);	
		val = ReadTuner();
		if ( (val & 0x07) == 4 ) {
			TVFreqDiv += 24;
			SetTVFreq(TVFreqDiv);
			delay(30);	
			val = ReadTuner();
			if ( (val & 0x07) == 4 ) {
				TVFreqDiv -= 36;
				SetTVFreq(TVFreqDiv);
				delay(30);	
				val = ReadTuner();
				if ( (val & 0x07) == 4 ) {
					TVFreqDiv += 48;
					SetTVFreq(TVFreqDiv);
					delay(30);	
					val = ReadTuner();
				if ( (val & 0x07) == 4 )  goto fail_aft;
			    }
			}
		}
	}

	do{
		SetTVFreq(TVFreqDiv);
		delay(30);	
		val = ReadTuner();
		if ( (val & 0x07) > 2 )  
			TVFreqDiv += amount;
		else if( (val & 0x07) < 2 )  
			TVFreqDiv -= amount;
		else goto true_aft; // == 2 ?

		amount = (amount==1 ? 1 : amount >> 1 );

	  }while( Check_Cnt-- > 0 );
	  goto fail_aft;

	if(((val & 0x07) < 0x03 ) && ((val & 0x07) > 0x01 )) goto true_aft;

fail_aft:
		return FALSE;

true_aft:
		if( IsNoInput() ) return FALSE;
		if(IsVideoInput()) 	return TRUE;
		else return FALSE;
}
#endif
*/
void SetTVChannel(void)
{
	WORD TVFreq;
	char Fine;

	//BYTE val;
	//val = ReadDecoder(MISC3);
	//WriteDecoder(MISC3, val|0x08);  // Force to output blue or black Screen
	//ljy061303..Already in DisplayTVChannel()..CheckAndClearBlockedInput();
	//ljy061303..Already in CheckAndClearMuteOn..ClearMuteOn();
	PanelBlack(1);
	CheckAndClearMuteOn();
	AudioOff();	// to remove Pop Noise.
	delay(5);

	TVFreq = Get_Channel2Divid();

	Fine = GetFineTuneEE(TVChannel);// - 31;
	#ifdef DEBUG_TV
	Printf("\rTVFreqDiv:0x%04x",(WORD)Fine);
	#endif
	if( Fine ) SetTVFreq( TVFreq + Fine); // 
	else{
	
		//if( AFT(TVFreq)) ;
		//else 
			SetTVFreq( TVFreq ); // AFT Fail

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区不卡视频| 色哟哟精品一区| 亚洲国产综合在线| 国产精品―色哟哟| 亚洲成人午夜电影| 韩国欧美国产一区| 成人av网址在线观看| 91丨porny丨首页| 欧美一区二区国产| 欧美成人性福生活免费看| 亚洲国产精品视频| 一区二区三区在线免费视频| 亚洲激情自拍视频| 美女在线一区二区| 精品久久久久av影院| 日韩一区二区免费视频| 精久久久久久久久久久| 不卡的av网站| 国产精品自拍在线| 不卡一区在线观看| 欧洲激情一区二区| 亚洲精品在线网站| 久久久亚洲欧洲日产国码αv| 中文字幕一区二区三| 青娱乐精品在线视频| av不卡免费在线观看| 久久久久久**毛片大全| 青草国产精品久久久久久| 日本伦理一区二区| 中文字幕免费在线观看视频一区| 久久黄色级2电影| 日韩精品一区二区三区在线| 免费久久99精品国产| 欧美一卡二卡在线观看| 欧美精品一卡两卡| 一区二区三区四区精品在线视频| 国产高清在线观看免费不卡| 中文字幕一区二区日韩精品绯色| 在线观看免费亚洲| 911精品国产一区二区在线| 亚洲成人先锋电影| 日本一区二区久久| 日韩无一区二区| eeuss鲁一区二区三区| 欧美日本国产一区| 亚洲第一会所有码转帖| 欧美丝袜第三区| 久久精品国产在热久久| 欧美mv日韩mv国产| 麻豆国产一区二区| 久久先锋资源网| 国产白丝网站精品污在线入口| 国产视频一区二区三区在线观看 | 亚洲不卡av一区二区三区| 99视频国产精品| 激情久久五月天| 午夜欧美在线一二页| 日本一不卡视频| 欧美日韩综合不卡| 久久99国产精品成人| 亚洲丝袜自拍清纯另类| 日韩欧美国产wwwww| 欧美日韩一区高清| 成人精品高清在线| 裸体歌舞表演一区二区| 最新日韩av在线| 久久久久久影视| 精品日韩一区二区三区免费视频| 欧美主播一区二区三区美女| 亚洲一区在线免费观看| 欧美老人xxxx18| 91精品国产色综合久久ai换脸| 欧美成人欧美edvon| 国产欧美精品一区二区三区四区| 国产精品福利一区| 中文字幕亚洲不卡| 成人美女视频在线观看| 成人18视频在线播放| 波多野结衣欧美| 成人a区在线观看| caoporn国产精品| 亚洲免费观看高清在线观看| 亚洲国产电影在线观看| 国产日本一区二区| 国产欧美日韩精品一区| 国产精品久线在线观看| 一区二区三区免费网站| 久久国产人妖系列| 色综合久久久久网| 欧美私模裸体表演在线观看| 欧美美女直播网站| 精品国精品国产尤物美女| 亚洲视频在线观看一区| 日韩福利电影在线观看| av一本久道久久综合久久鬼色| 国产精品一级片在线观看| 色哟哟亚洲精品| 日韩精品最新网址| 国产欧美日韩三级| 五月婷婷激情综合网| 国产成人8x视频一区二区| 99在线精品观看| 精品国精品自拍自在线| 欧美一区二区三区四区五区| 99久久伊人精品| 在线播放/欧美激情| 亚洲精品一卡二卡| 懂色av一区二区三区蜜臀 | 国产a久久麻豆| 91精品国产一区二区三区香蕉| 亚洲va欧美va人人爽午夜| 91精彩视频在线观看| 亚洲日本韩国一区| 国产精品一级片| 午夜精品aaa| 欧美无人高清视频在线观看| 国产日本一区二区| 国产成人综合精品三级| 欧美性一区二区| 亚洲另类春色国产| 91视频免费看| 中文字幕亚洲区| 色婷婷精品久久二区二区蜜臀av| 日韩精品1区2区3区| 欧美性xxxxxxxx| 午夜激情久久久| 免费观看一级欧美片| 蜜臀久久99精品久久久久宅男 | 亚洲婷婷在线视频| 成人性生交大片免费看视频在线| 欧美日韩一级二级| 中文字幕一区二区在线观看| 国产精品女人毛片| 99久久婷婷国产综合精品| 136国产福利精品导航| 成人h动漫精品一区二| 中文字幕第一区第二区| 国产精品沙发午睡系列990531| 国产99精品视频| 亚洲男帅同性gay1069| 91精品国产91久久综合桃花| 国产一区二区三区精品欧美日韩一区二区三区 | 91黄色在线观看| 日本不卡视频在线| 在线免费观看一区| 日韩成人免费电影| 国产精品免费久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚瑟在线精品视频| 中文在线资源观看网站视频免费不卡 | 蜜桃视频在线一区| 亚洲免费观看在线观看| 久久天天做天天爱综合色| 在线视频你懂得一区二区三区| 久久99在线观看| 亚洲精品大片www| 国产日韩视频一区二区三区| 欧美日韩精品一区二区三区四区| 国产suv一区二区三区88区| 亚洲成人自拍网| 一区二区三区在线视频播放 | 强制捆绑调教一区二区| 亚洲最快最全在线视频| 国产精品国产三级国产普通话三级 | 一区二区成人在线| 国产日产欧产精品推荐色| 欧美一级理论片| 欧美一区二区三区婷婷月色| 欧美日韩色综合| 欧美精品18+| 欧美日韩欧美一区二区| 8x8x8国产精品| 日韩欧美一级片| 精品日韩在线一区| 久久影院视频免费| 中文字幕免费在线观看视频一区| 亚洲精品一区二区三区福利 | 久久色在线视频| 欧美国产精品v| 亚洲精品高清在线| 日本不卡一区二区| 狠狠色丁香久久婷婷综合_中 | 91在线精品一区二区| 91官网在线免费观看| 在线免费观看日本一区| 91精品婷婷国产综合久久竹菊| 欧美久久久久久久久| 久久九九国产精品| 97se亚洲国产综合自在线不卡| 欧美探花视频资源| 日本一区二区在线不卡| 一卡二卡三卡日韩欧美| 激情国产一区二区| 欧美美女一区二区三区| 亚洲国产成人私人影院tom| 亚洲一区二区三区小说| 精品亚洲国内自在自线福利| 亚洲欧美二区三区| 韩国三级电影一区二区| 在线视频中文字幕一区二区|