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

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

?? tea5757.c

?? 收音芯片TEA5757驅動!我不太懂
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*
tea5757 tuner
*/
#include "common.h"
#include "mvd.h"
#include "rds.h"
#include "ioport.h"   
#include "amp.h"
#include "amp_port.h"
#include "TEA5757.h"
#include "i2c_prom.h"
#include "romconst.h"
#include "i2cdrv.h"
#include "amp_const.h"
#define wait_timer(x)	RISC_sleep_nsec(x)

static int  RdsID = -1; 
static uchar Identify_Code;
static uchar  Block_Status;
static int	prev_wcmd = 0; 
int PI_Code;
int RDS_Minutes;
uchar TP_Bit;
uchar TA_Bit;
uchar Text_AB_Flag;
uchar MusicSpeech_Bit;
uchar Version_Bit;
uchar RDS_Data_NonRead;
uchar PTY_Code;

unsigned char tuner_mode = 0 ;
unsigned char PS[PS_BYTE];
unsigned char RdsServiceName[PS_BYTE];

unsigned char ServiceValidFlag=0;
unsigned char rds_timeout;
unsigned char pty_avail_flag=0;     
unsigned char Rds_char_index[4];
unsigned char tuner_sensitive;
unsigned char tuner_preset_flag=0;

extern unsigned char tuner_program_timeout ;
extern unsigned char stereo_mono_flag ;
extern unsigned char memory_timeout;
#ifdef PHILIPS_GUI
extern unsigned char search_ante_flag;
#endif
/************* tea5757 parameter *************/
TUNER_PARA tuner_para[] = 
{
//fm step 100k,am step 10k
	{	/* mode usa */
		0x22,	/*fm-am SENSITIVITY*/

		8750,	/* fm para */
		10800,
		10,  /*rocksun change it to be 100K*/
		9710,

		530,	/* am para */
		1710,
		10,
		610,

		5,		/* am_freq_ref */
#ifdef TUNER_AM	
		{ 8750, 9010, 9810, 10610, 10800 },	/* fm freq */	
		{ 530, 610, 1000, 1400, 1710 }		/* am freq */
#else		
		{8750, 9010, 9810, 10610, 10800 }
#endif
	},	
//fm step 50k	,am step 9k
	{	/* mode europe */
		0x12,	

      		8750,	/* fm para */
        	10800,
        	5,
		9710,

        	531,	/* am para */
        	1602,
        	9,
		612,

		3,		/* am_freq_ref */
#ifdef TUNER_AM      		
             { 8750, 9010, 9810, 10610, 10800 },	/* fm freq */
             { 531, 612, 999, 1404, 1602 }		/* am freq */
#else		
	      {8750, 9010, 9810, 10610, 10800 }
#endif
	},
};
// rds text block define
static int rds_timing[] = {
        7000,   /* tAA     */
        6700,   /* tBUF    */
        4500,   /* tHD_STA */
        6700,   /* tSU_STA */
        6700,   /* tLOW    */
        4500,   /* tHIGH   */
           0,   /* tHD_DAT */
         500,   /* tSU_DAT */
        1000,   /* tR      */
         300,   /* tF      */
        6700,   /* tSU_STO */
         300,   /* tDH     */
     1000000    /* tWR     */
};

#ifdef NEW_RDS

unsigned int SynTable[]={
	0x200,      /* 10 0000 0000b ;m bit 5 */
	0x100,      /* 01 0000 0000b ;14 */
	0x80,       /* 00 1000 0000b ;13 */
	0x40,       /* 00 0100 0000b ;12 */
	0x20,       /* 00 0010 0000b ;11 */
	0x10,       /* 00 0001 0000b ;10 */
	0x08,       /* 00 0000 1000b ;9  */
	0x04,       /* 00 0000 0100b ;8  */
	0x02,       /* 00 0000 0010b ;7  */
	0x01,       /* 00 0000 0001b ;6  */
	0x2dc,      /* 10 1101 1100b ;5  */
	0x16e,      /* 01 0110 1110b ;4  */
	0x0b7,      /* 00 1011 0111b ;3  */
	0x287,      /* 10 1000 0111b ;2  */
	0x39f,      /* 11 1001 1111b ;1  */
	0x313,      /* 11 0001 0011b ;0  */
	0x355,      /* 11 0101 0101b ;c bit9 */
	0x376,      /* 11 0111 0110b ;8  */
	0x1bb,      /* 01 1011 1011b ;7  */
	0x201,      /* 10 0000 0001b ;6  */
	0x3dc,      /* 11 1101 1100b ;5  */
	0x1ee,      /* 01 1110 1110b ;4  */
	0x0f7,      /* 00 1111 0111b ;3  */
	0x2a7,      /* 10 1010 0111b ;2  */
	0x38f,      /* 11 1000 1111b ;1  */
	0x31b       /* 11 0001 1011b ;0 */
};
unsigned long int Bdata=0;
unsigned char RDS_receive_flag=0;  //0:wait receive,1:recieve finish
unsigned char RDS_check_flag=0;     //0:wait check ,1:check finish

unsigned char bit_counter=0;
unsigned char word_counter=0;
unsigned char temp_bit_counter=0;
unsigned char temp_word_counter=0;

unsigned char RdsSync=0;
unsigned char RdsBitNo=0;
unsigned char RdsGrp=0;
unsigned char RdsBlk=0;
unsigned char RdsDecode=0;
unsigned char RdsBeginFlag=0;
unsigned char Service_Disp_Flag=0;
unsigned char RdsServiceBak[8];        
unsigned char continue_check_flag=0;
unsigned long int receive_data[N_WORD];

static unsigned int CalSyn(void);
#endif
/***************variable define*********************/
unsigned char search_stop_flag=0;
unsigned char absolute_search_flag =0;
unsigned char auto_search_flag=0;
int fm_am_flag=TUNER_MODE_FM;
static short search_delay=200;

/******am******/
unsigned short am_freq_min;
unsigned short am_freq_max;
unsigned short cur_am_freq;
unsigned short am_freq_step;
unsigned short am_freq_ref;
/******fm******/
unsigned short fm_freq_min;
unsigned short fm_freq_max;
unsigned short cur_fm_freq;
unsigned short fm_freq_step;

unsigned short preset_up_down_mode; 

extern unsigned char audio_source;

static void freq_decrease(void);
static void freq_increase(void);
static void search_finish(void);
static unsigned char proc_find_station(void);

static unsigned short ReadStationFreqValue(unsigned char radio_station);
static void WriteFreqValue(unsigned char radio_station, unsigned short freq_value);
static unsigned short CheckFreqValue(unsigned short freq_value);
static void check_station();
static void check_frequency();
static void write_frequency() ;
static void write_TEA5757(unsigned long data);
static unsigned long read_TEA5757(void);
static void freq_init() ;
static void TEA5757_EPROM_init(void);
//////////////////////////////////////////////////

static void freq_decrease(void)
{
	if(fm_am_flag)
	{
		cur_fm_freq -=fm_freq_step;
	}
	else 
	{
		cur_am_freq -=am_freq_step;
	}
	check_frequency();
}

static void freq_increase(void)
{
	if(fm_am_flag)
	{
		cur_fm_freq += fm_freq_step;
	}
	else
	{
		cur_am_freq += am_freq_step;
	}
	check_frequency();	
}

void write_current_freq()
{
	if( TUNER_MODE_FM == fm_am_flag )
	{
		    write_freq_to_eeprom(CURRENT_FM_FREQ_ADDRESS);
	}
        else
        {
	 	     write_freq_to_eeprom(CURRENT_AM_FREQ_ADDRESS);    	
        }
}

void write_freq_to_eeprom(unsigned char radio_station)
{
	  unsigned short freq_value;			
	  if( fm_am_flag == TUNER_MODE_FM )
	  {	
		  freq_value = cur_fm_freq;
	  }
	  else	
	  {
	 	 freq_value = cur_am_freq;	 
	  }	
	  WriteFreqValue( radio_station, freq_value);
}

void read_freq_from_eeprom(unsigned char radio_station)
{
	 unsigned short freq_value;
	 freq_value = ReadStationFreqValue(radio_station);
	 if( fm_am_flag == TUNER_MODE_FM )
	 {
		 cur_fm_freq=freq_value;
	 }
	 else
	 {
		 cur_am_freq=freq_value;
	 }
}

static unsigned short ReadStationFreqValue(unsigned char radio_station)
{
	unsigned char freq_add;
	unsigned short freq_val1, freq_val2, return_freq;

	freq_add =  station_address +(radio_station - 1)* 2;
	freq_val1 = i2c_e2prom_byread(freq_add);
	freq_val2 = i2c_e2prom_byread(freq_add+1);
	return_freq = (freq_val1 << 8) | freq_val2;
	if( return_freq & 0x8000 )
	{
		fm_am_flag = TUNER_MODE_FM;
	}
	else
	{
		fm_am_flag = TUNER_MODE_AM;
	}
	i2c_e2prom_bywrite(FM_AM_FLAG_ADDRESS, fm_am_flag);
	return_freq = return_freq & 0x7fff;
	return_freq = CheckFreqValue(return_freq);
	return return_freq;
}

static void WriteFreqValue(unsigned char radio_station, unsigned short freq_value)
{
	unsigned char freq_add;
    
	freq_value = CheckFreqValue(freq_value);
	if( TUNER_MODE_FM == fm_am_flag )
	{
		freq_value = freq_value | 0x8000;
	}	
       if(radio_station!= CURRENT_FM_FREQ_ADDRESS && 
          radio_station!=CURRENT_AM_FREQ_ADDRESS)	
       {
       	  freq_add =  station_address + (radio_station - 1)* 2;
       }
	else 
	{
		 freq_add= radio_station; 	
	}
       i2c_e2prom_bywrite(freq_add, freq_value>>8);
       freq_value = freq_value & 0x0ff;
       i2c_e2prom_bywrite(freq_add+1, freq_value);	
}

/***************************************************************************
收音頻率越界檢查
****************************************************************************/
static unsigned short CheckFreqValue(unsigned short freq_value)
{
	 unsigned short cur_freq;
	 cur_freq = freq_value;
	 if( fm_am_flag == TUNER_MODE_FM )
	 {
		   if( (cur_freq < fm_freq_min) || (cur_freq > fm_freq_max  ) )
		   {
				cur_freq =fm_freq_min;
		   }
	 }
	 else
	 {
		   if( (cur_freq <am_freq_min) || (cur_freq > am_freq_max) )
		   {
				cur_freq = am_freq_min; 
		   }
	 }
	 return cur_freq;
}


/***************************************************************************
note: this function only call by fully auto search function.
****************************************************************************/	
extern unsigned char station_counter;
void auto_search_pause_station()
{
        freq_decrease();
        freq_increase();
        hand_tuner() ;
        delay_5ms();
        delay_5ms();
        hand_tuner() ;
        tdm_adc_turn_off();
        tdm_adc_turn_on();        
        tuner_current_freq_disp();
        write_current_freq();
}

/****************************************************************************
自動或全自動收臺:

*****************************************************************************/
void tuner_auto_search_proc()  /**ziva ch 06-04*/
{
         extern  unsigned char vfd_osd_timeout;
         extern  unsigned char stop_RDS_display_timeout;
         
	  if(( auto_search_flag&0x80)||(absolute_search_flag&0x80))
         { 
	 	 mute_proc();
	 	 #ifdef M62446
	 	 M62446_mute();
	 	 #endif
           	 auto_search_flag &=0x03 ;
           	 if(auto_search_flag==2)   //ch 11-19
           	 {
                       freq_increase();
           	 }
               else
               {
           	 	  freq_decrease();
               }
               if(absolute_search_flag)
         	 {
              	 station_counter =STATION_MIN ;		 
			 fm_am_flag = TUNER_MODE_FM ;
			 cur_fm_freq = fm_freq_min-6*fm_freq_step ;//ziva ch 10-15                             
	               absolute_search_flag = 1 ;
       	        auto_search_flag =2 ;
              }  
              hand_tuner();
              hand_tuner();
        	delay_100ms();       
        	write_frequency() ; 
        	if (absolute_search_flag)
              {
               	VFD_msg(VFDMSG_auto_prog);
              }
        	else
              {
		       VFD_msg(VFDMSG_search);	
              }
              VFD_icon(VFDICON_dp_off);
              VFD_icon(VFDICON_clear_khz_mhz);
              search_stop_flag=0;
	       memory_timeout=0;
        }
	 while( auto_search_flag )
	 {	    
		if( search_delay )
		{
			search_delay --;
			break;
		}
		else
		{
			search_delay = 200;
		}      
              check_station();    
              ServiceValidFlag =0 ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧美一区二区三区乱码| 一区二区在线免费| 7777精品伊人久久久大香线蕉| 欧美一区二区精品久久911| 欧美日韩精品一区二区| 国产亚洲一区二区三区四区| 亚洲自拍另类综合| 99re这里都是精品| 国产日韩在线不卡| 激情综合网激情| 高清不卡一区二区| 91美女蜜桃在线| 国产女同互慰高潮91漫画| 日本少妇一区二区| 欧美日韩高清一区二区三区| 亚洲色图19p| 亚洲国产精品一区二区www | 国产精品青草久久| 久色婷婷小香蕉久久| 欧美日韩国产综合一区二区| 亚洲日本va在线观看| 成人的网站免费观看| 精品99一区二区三区| 国产精品蜜臀在线观看| 国产综合成人久久大片91| 日韩精品一区二区三区在线播放| 久久久精品天堂| 亚洲日本成人在线观看| 日韩高清欧美激情| 成人精品电影在线观看| 久久久久久电影| 国产成人一区在线| 欧洲av在线精品| 一区二区三区产品免费精品久久75| 不卡的av电影| 亚洲九九爱视频| 日韩和欧美一区二区| 在线播放欧美女士性生活| 午夜精品久久久久久久久久久| 欧美午夜不卡视频| 国产日韩欧美综合在线| 亚洲国产精品久久一线不卡| 精品在线一区二区三区| 欧美xxxxxxxx| 国产99一区视频免费| 国产精品国产成人国产三级| 久久国产乱子精品免费女| 欧美精品一区二区久久婷婷 | 国产丶欧美丶日本不卡视频| 久久久三级国产网站| 成人av资源站| 精品久久一区二区| 国产不卡高清在线观看视频| 亚洲精品免费在线观看| 欧美高清激情brazzers| 国产一区视频网站| 91精品国产综合久久久久久久 | 精品国产一二三| 成人免费看的视频| 久久综合精品国产一区二区三区 | 欧美日韩免费不卡视频一区二区三区 | www日韩大片| 91亚洲资源网| 蜜桃av一区二区在线观看| 欧美国产国产综合| 欧美日韩国产影片| 成人一级片在线观看| 精品少妇一区二区三区免费观看| 一区二区三区四区在线免费观看| 欧美一卡2卡3卡4卡| 成人免费视频视频| 七七婷婷婷婷精品国产| 欧美精品三级在线观看| 亚洲高清免费在线| 欧美日韩国产精品成人| 国产精品69毛片高清亚洲| 精品播放一区二区| 欧美三级视频在线播放| 亚洲午夜久久久久久久久久久 | 日韩欧美在线观看一区二区三区| 国产宾馆实践打屁股91| 国产亚洲成av人在线观看导航| 色综合天天天天做夜夜夜夜做| 美女一区二区视频| 亚洲午夜精品在线| 国产精品久久午夜| 精品久久久久久无| 欧美人狂配大交3d怪物一区| 成人性生交大片免费看中文| 国产精品电影院| 91麻豆免费观看| 国产一区二区免费看| 午夜精品久久久久久| 欧美日韩aaaaa| 91在线观看一区二区| 国产精品一区二区三区网站| 国产精品毛片久久久久久| 精品免费国产一区二区三区四区| 在线免费一区三区| 另类专区欧美蜜桃臀第一页| 亚洲国产精品久久一线不卡| 中文字幕一区二区三区蜜月| 久久久久国产精品免费免费搜索| 欧美成人艳星乳罩| caoporn国产精品| 亚洲国产成人tv| 亚洲综合视频在线观看| 欧美一卡在线观看| 欧美一级片在线看| 日韩欧美在线综合网| 欧美xxxxx裸体时装秀| 91啪九色porn原创视频在线观看| 亚洲一本大道在线| 国产三级一区二区| 久久久久久久久久看片| 欧美亚洲国产一区二区三区va | 亚洲精品在线免费观看视频| 日韩欧美黄色影院| 精品国产免费人成电影在线观看四季| 日韩欧美中文字幕精品| 欧美成人猛片aaaaaaa| 精品成人一区二区三区| 92国产精品观看| 美女在线一区二区| 久久国产夜色精品鲁鲁99| 国产激情91久久精品导航 | 久久av资源站| 寂寞少妇一区二区三区| 国产成人8x视频一区二区| 不卡视频在线观看| 欧美性生活大片视频| 成人亚洲一区二区一| 色噜噜狠狠一区二区三区果冻| 欧美日韩一区三区| 99国产精品国产精品久久| 狠狠色丁香久久婷婷综合_中| 亚洲在线观看免费| 国产精品久久久久天堂| 亚洲视频图片小说| 日韩电影免费在线观看网站| 亚洲伦在线观看| 亚洲国产精品av| 精品国产人成亚洲区| 国产精品久久毛片| 亚洲超丰满肉感bbw| 国产一区二区精品久久91| 97aⅴ精品视频一二三区| 欧美一区二区视频网站| 日本一区二区三级电影在线观看 | 亚洲色图欧美激情| 国产精品欧美极品| 亚洲第一福利视频在线| 国产精品综合网| 欧美视频一区在线| 欧美三日本三级三级在线播放| 成人免费高清在线观看| 国产一区二区视频在线| 色婷婷av一区二区三区之一色屋| 99久久99久久综合| 成人av午夜电影| 波多野结衣在线一区| 5566中文字幕一区二区电影| 国产精品乱码妇女bbbb| 天堂一区二区在线| 色一情一乱一乱一91av| 91国内精品野花午夜精品| 91国偷自产一区二区三区观看| 欧美精品一区二区三| 国产人妖乱国产精品人妖| 丝袜美腿亚洲色图| 一本大道久久精品懂色aⅴ| 国产日韩精品一区二区三区在线| 亚洲电影一区二区| a亚洲天堂av| 国产喂奶挤奶一区二区三区| 亚洲国产精品99久久久久久久久| 奇米影视在线99精品| 91黄视频在线| 亚洲另类中文字| 免费观看日韩电影| 粉嫩av一区二区三区在线播放 | 中文字幕一区二| 一区二区三区成人在线视频| av中文字幕一区| 欧美性做爰猛烈叫床潮| 亚洲欧洲精品天堂一级| 国产精品一区二区在线观看网站 | 国产精品一区二区男女羞羞无遮挡 | 在线视频观看一区| 亚洲日本va午夜在线影院| 成人高清免费观看| 国产女人18毛片水真多成人如厕| 亚洲私人影院在线观看| 99久久国产综合精品麻豆| 欧美日韩午夜在线| 亚洲一区二区三区国产| 欧美日韩一区二区在线观看视频 | 国产精品久久一卡二卡| 亚洲图片欧美视频| 欧美亚洲国产一区在线观看网站|