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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tv_tuner.c

?? 一款車載DVD的車機(jī)源程序(正在生成中的哦)
?? C
字號(hào):
#include "TV_tuner.h"
#include "Inter.h"
#include "Libr.h"
#include "St72321.h"
#include "IOport.h"                                                         

#include "Sys_config.h" 
#include "System_operation.h"
#include "I2c_drv.h"
#include "OSD.h"

unsigned long TVpllPCfreq = VLF_MIN_FPC;
unsigned char TVchannelNum = 1;
unsigned char TV_tuner_flag;
unsigned char TV_fromat = TV_PAL_I;
unsigned long TV_frequence_list[50] = {VLF_MIN_FPC};

void TV_changer_freq(void);
void TV_adjust_divider(unsigned long PCfreq);
static unsigned char TV_station_detect(void);
void TV_autosearch(void);
static void TV_stepsearch(void);
void TVTUNER_init(void);
void TV_search_key_process(void);
void TV_change_format(void);
/************************************************************
Function:The frequecne adding 625 or dec 625
************************************************************/
void TV_changer_freq(void)
{
	if(ValBit(System_flag,bSearchDir))
		{
		TVpllPCfreq += TV_STEP_SIZE;
		if(TVpllPCfreq == (VLF_MAX_FPC + TV_STEP_SIZE))
			TVpllPCfreq = VHF_MIN_FPC;
		if(TVpllPCfreq == (VHF_MAX_FPC + TV_STEP_SIZE))
			TVpllPCfreq = UHF_MIN_FPC;
		}
	else
		{
		TVpllPCfreq -= TV_STEP_SIZE;
		if(TVpllPCfreq == (UHF_MIN_FPC - TV_STEP_SIZE))
			TVpllPCfreq = VHF_MAX_FPC;
		if(TVpllPCfreq == (VHF_MIN_FPC - TV_STEP_SIZE))
			TVpllPCfreq = VLF_MAX_FPC;
		}

	TV_frequence_list[TVchannelNum -1] = TVpllPCfreq;
}
/************************************************************
Function:Send the frequence and the band to the tuner
************************************************************/
void TV_adjust_divider(unsigned long  PCfreq)
{
	unsigned char Temp_data[4] ={0};
	unsigned short int PllDivider;
	unsigned char TVband;
	if((PCfreq <= VLF_MAX_FPC) && (PCfreq >= VLF_MIN_FPC))
		TVband = VLF_BAND;
	if((PCfreq >= VHF_MIN_FPC) && (PCfreq <= VHF_MAX_FPC))
		TVband = VHF_BAND;
	if((PCfreq >= UHF_MIN_FPC) && (PCfreq <= UHF_MAX_FPC))
		TVband = UHF_BAND;

	PllDivider = (unsigned short int)((PCfreq + 389000) * 16 /10000);//62.5khz
	if(ValBit(System_flag,bSearchDir))
		{
		Temp_data[0] = HIBYTE(PllDivider);
		Temp_data[1] = LOBYTE(PllDivider);
		Temp_data[2] = CONTROL_BYTE;
		Temp_data[3] = TVband;
		}
	else
		{
		Temp_data[0] = CONTROL_BYTE;
		Temp_data[1] = TVband;
		Temp_data[2] = HIBYTE(PllDivider);
		Temp_data[3] = LOBYTE(PllDivider);
		}
	I2CWrite_nBytes(TV_TUNER_ADDR, Temp_data, 4);
}
/********************************************************
Function:Check than the frequence have signal or not
********************************************************/
static unsigned char TV_station_detect(void)
{
	unsigned char TVlockOK;
    	unsigned char tuner_status = 0;
	tuner_status = I2CReadByte_no_sub(TV_TUNER_ADDR);
	asm	nop;
	asm	nop;
	if((tuner_status == 0x7c) && (!((TVpllPCfreq + 2500) % 5000)) && ValBit(PF_DR,VIDEO_ID))
		{
		if(TVchannelNum == 1)
			TVlockOK = 1;
		else
			{
			if(TVpllPCfreq - TV_frequence_list[TVchannelNum -2] >20000)
				TVlockOK = 1;
			else
				TVlockOK = 0;
			}
		}
	else
		TVlockOK = 0;
	
	return TVlockOK;
}
/*************************************************************
Function:All frequence search,start from 482500 to 8552500
*************************************************************/
void TV_autosearch(void)
{
	if(System_mode != TV_mode)
		return;
	if(ValBit(TV_tuner_flag,TVsearchOK))	/*If search successly then return*/
		return;
 	TV_changer_freq();	/*Adding frequence 625 or dec frequence 625*/
	if((TVpllPCfreq + 2500) % 5000)
		return;
	if(TVpllPCfreq > UHF_MAX_FPC || TVpllPCfreq < VLF_MIN_FPC)
		{
		SetBit(TV_tuner_flag,TVsearchOK);
		ClrBit(PE_DR,TV_MUTE);
		TVchannelNum = 1;
		TVpllPCfreq = TV_frequence_list[TVchannelNum -1];
		if(TVpllPCfreq > UHF_MAX_FPC || TVpllPCfreq < VLF_MIN_FPC)
			TVpllPCfreq = VLF_MIN_FPC;
		TV_adjust_divider(TVpllPCfreq);
		System_mute_off();
		return;
		}

	TV_adjust_divider(TVpllPCfreq);
	WAIT_10ms();
	WAIT_10ms();
	if(TV_station_detect())
		{
		TV_frequence_list[TVchannelNum -1] = TVpllPCfreq + 5000;
		TVchannelNum++;
		if(TVchannelNum > 50)
			{
			TVchannelNum = 1;
			TVpllPCfreq = TV_frequence_list[TVchannelNum -1];
			if(TVpllPCfreq > UHF_MAX_FPC || TVpllPCfreq < VLF_MIN_FPC)
				TVpllPCfreq = VLF_MIN_FPC;
			TV_adjust_divider(TVpllPCfreq);
			SetBit(TV_tuner_flag,TVsearchOK);
			System_mute_off();
			}
		}
}
/************************************************************
Function:Search step by step,one step id 625
************************************************************/
static void TV_stepsearch(void)
{
	TV_changer_freq();
	if(TVpllPCfreq > UHF_MAX_FPC)
		TVpllPCfreq = VLF_MIN_FPC;
	if(TVpllPCfreq < VLF_MIN_FPC)
		TVpllPCfreq = UHF_MAX_FPC;

	TV_adjust_divider(TVpllPCfreq);
}
/*************************************************************
Function:Init the TV tuner
*************************************************************/
void TVTUNER_init(void)
{
	unsigned char Temp_data[3] ={0};

	#ifdef TNJ_3321_UF
	Temp_data[0] = TV_B_DATA;
	Temp_data[1] = TV_C_DATA;
	if(TV_fromat == TV_PAL_BG)
		Temp_data[2] = TV_PAL_BG_DATA;	
	if(TV_fromat == TV_PAL_I)
		Temp_data[2] = TV_PAL_I_DATA;
	if(TV_fromat == TV_PAL_DK)
		Temp_data[2] = TV_PAL_DK_DATA;			
	if(TV_fromat == TV_NTSC_MN)
		Temp_data[2] = TV_NTSC_MN_DATA;	
	#endif
	
	#ifdef TNJ_8355_QF
	if(TV_fromat == TV_PAL_BG ||TV_fromat == TV_PAL_I ||TV_fromat == TV_PAL_DK)
		{
		Temp_data[0] = 0x56;
		Temp_data[1] = 0x70;
		}
	switch(TV_fromat)
		{
		case TV_PAL_BG:
			Temp_data[2] = 0x09;
			break;
		case TV_PAL_I:
			Temp_data[2] = 0x0a;
			break;
		case TV_PAL_DK:
			Temp_data[2] = 0x0b;	
			break;
		case TV_NTSC_MN:
			Temp_data[0] = 0x16;
			Temp_data[1] = 0x30;
			Temp_data[2] = 0x08;
			break;
		case TV_C_L:
			Temp_data[0] = 0x16;
			Temp_data[1] = 0x50;
			Temp_data[2] = 0x4b;
			break;
		case TV_C_L_L:
			Temp_data[0] = 0xc6;
			Temp_data[1] = 0x50;
			Temp_data[2] = 0x53;
			break;
		}
	#endif
	
	I2C_write_sub(TV_SUB_ADDR, TV_DATA_ADDR, Temp_data, 3);
	
	TVpllPCfreq = TV_frequence_list[TVchannelNum -1];
	if(TVpllPCfreq > UHF_MAX_FPC || TVpllPCfreq < VLF_MIN_FPC)
		TVpllPCfreq = VLF_MIN_FPC;
	TV_adjust_divider(TVpllPCfreq);   
}
void TV_search_key_process(void)
{
	if(ValBit(TV_tuner_flag,TVsearchOK))
		{
		System_mute_on();
		TVchannelNum = 1;
		SetBit(System_flag,bSearchDir);	//From the min to the max
		TVpllPCfreq = VLF_MIN_FPC;
		TV_adjust_divider(TVpllPCfreq);
		ClrBit(TV_tuner_flag,TVsearchOK);
		}
	else
		{
		SetBit(TV_tuner_flag,TVsearchOK);
		System_mute_off();
		}
}

void TV_change_format(void)
{
	TV_fromat++;
	#ifdef TNJ_3321_UF
	if(TV_fromat > TV_NTSC_MN)
		TV_fromat = TV_PAL_BG;
	#endif

	#ifdef TNJ_8355_QF
	if(TV_fromat > TV_C_L_L)
		TV_fromat = TV_PAL_BG;
	#endif
	
	TVTUNER_init();
}














?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线影院| 色婷婷激情综合| 日韩电影一二三区| 亚洲线精品一区二区三区| 亚洲主播在线观看| 亚洲aaa精品| 麻豆91免费看| 麻豆精品在线播放| 国内成人免费视频| 国产精品1区2区| av动漫一区二区| 91丨九色丨国产丨porny| 91福利在线导航| 欧美日韩免费电影| 欧美www视频| 欧美国产激情二区三区 | 九色|91porny| 九色|91porny| heyzo一本久久综合| 色就色 综合激情| 欧美一区二区福利在线| 久久久久9999亚洲精品| 中文字幕在线观看不卡| 午夜视频一区在线观看| 老汉av免费一区二区三区| 国产一区二区导航在线播放| 成人免费视频网站在线观看| 欧美在线免费视屏| 2024国产精品| 亚洲免费观看高清| 蜜臀av国产精品久久久久| 国产麻豆精品在线| 欧美系列日韩一区| 久久久精品免费观看| 伊人婷婷欧美激情| 韩国v欧美v日本v亚洲v| 色综合激情五月| 欧美成人精品福利| 夜夜嗨av一区二区三区| 国内精品国产成人国产三级粉色| 成人激情免费电影网址| 6080亚洲精品一区二区| 亚洲精品日产精品乱码不卡| 经典一区二区三区| 欧美疯狂做受xxxx富婆| 国产精品久久久久影院| 狂野欧美性猛交blacked| 91视频在线观看免费| 2020国产精品久久精品美国| 一个色综合av| 成人激情黄色小说| 久久久国产精品不卡| 日韩 欧美一区二区三区| 99久久精品免费精品国产| 欧美一级黄色大片| 亚洲不卡在线观看| 色悠久久久久综合欧美99| 久久人人97超碰com| 日韩精品电影在线| 欧美午夜精品久久久久久孕妇| 国产精品全国免费观看高清| 久久av老司机精品网站导航| 在线91免费看| 亚洲福利视频三区| 欧美色图天堂网| 亚洲精品国产成人久久av盗摄| 久久99久国产精品黄毛片色诱| 欧美三级蜜桃2在线观看| 亚洲一区在线播放| 在线区一区二视频| 亚洲一区在线看| 欧洲生活片亚洲生活在线观看| 国产精品激情偷乱一区二区∴| 国产乱淫av一区二区三区| ww久久中文字幕| 国产麻豆视频一区| 久久精品一区二区三区不卡| 精品一区二区成人精品| 2020国产精品自拍| 国产精品亚洲第一| 国产精品女主播在线观看| 成人午夜电影久久影院| 国产精品毛片久久久久久| av午夜精品一区二区三区| 亚洲欧洲成人精品av97| 91美女在线观看| 亚洲精品高清视频在线观看| 欧美伊人久久久久久午夜久久久久| 亚洲欧美怡红院| 色狠狠一区二区三区香蕉| 亚洲国产精品视频| 欧美男生操女生| 美女免费视频一区| 国产视频视频一区| 一本久道中文字幕精品亚洲嫩| 亚洲一区二区在线免费观看视频| 在线观看www91| 久久99热99| 国产精品久久看| 精品视频一区二区不卡| 久久精品72免费观看| 欧美高清在线视频| 在线视频中文字幕一区二区| 麻豆成人免费电影| 中文字幕在线免费不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲成人tv网| 欧美极品aⅴ影院| 91高清视频在线| 国产一区二三区好的| 亚洲乱码国产乱码精品精98午夜| 欧美日韩高清在线播放| 国产不卡视频在线观看| 亚洲影视在线观看| 久久久国产午夜精品| 欧美性大战久久久久久久蜜臀 | 中文天堂在线一区| 欧美日韩一级片在线观看| 国产成人日日夜夜| 日韩影院精彩在线| 亚洲色欲色欲www在线观看| 欧美成人猛片aaaaaaa| 在线观看日韩精品| 岛国精品在线播放| 美女在线一区二区| 伊人婷婷欧美激情| 国产精品私房写真福利视频| 日韩精品一区二区三区老鸭窝| 一本到不卡免费一区二区| 国产99久久久国产精品免费看 | 国产伦精品一区二区三区免费迷 | 91精品综合久久久久久| 不卡一区二区三区四区| 国产最新精品精品你懂的| 五月综合激情网| 综合久久久久久久| 中文字幕第一区综合| 26uuu精品一区二区在线观看| 8x福利精品第一导航| 欧美色精品天天在线观看视频| av日韩在线网站| 波多野结衣中文字幕一区二区三区| 蓝色福利精品导航| 久久丁香综合五月国产三级网站 | 久久免费国产精品| 精品日韩在线一区| 欧美一级二级在线观看| 欧美人与性动xxxx| 欧美精选一区二区| 欧美老年两性高潮| 欧美妇女性影城| 日韩视频123| 欧美mv日韩mv国产| 精品91自产拍在线观看一区| 欧美大片在线观看| 国产视频一区二区在线| 国产精品午夜久久| 国产精品福利一区二区| 国产精品国产自产拍高清av王其| 久久久精品免费网站| 国产精品五月天| 亚洲美女视频一区| 亚洲图片欧美色图| 麻豆精品久久精品色综合| 伦理电影国产精品| 懂色av一区二区三区免费观看| 成人高清视频在线| 一本色道亚洲精品aⅴ| 欧美伊人久久久久久午夜久久久久| 欧美系列日韩一区| 精品国产免费久久| 亚洲国产激情av| 一区二区三国产精华液| 午夜视黄欧洲亚洲| 国产精品资源在线| www.性欧美| 欧美久久久一区| 国产免费观看久久| 亚洲综合久久久久| 韩国一区二区在线观看| 97国产一区二区| 91麻豆精品国产91久久久 | 亚洲精品一二三| 全部av―极品视觉盛宴亚洲| 国产精品18久久久久| 色香蕉久久蜜桃| 欧美成人精品二区三区99精品| 国产精品久久久久影院| 天堂一区二区在线| 国产91对白在线观看九色| 欧美午夜片在线看| 久久久久国产精品麻豆ai换脸| 一区二区成人在线| 狠狠色丁香久久婷婷综合丁香| 99国产精品一区| 亚洲精品一区二区三区精华液| 亚洲欧美精品午睡沙发| 国产一区久久久| 制服.丝袜.亚洲.中文.综合| 一区在线播放视频|