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

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

?? radio_tuner.c

?? 一款車載DVD的車機(jī)源程序(正在生成中的哦)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/***************************************************************************
Project  :  Car two ting dvd System
Compiler :  ST7 HiCross C (HiWARE)
Module   :  autos.c 
Version  :  V 1.0
Created  :  24 11, 2005
Author   :  tomi / SA
Description
         -  Radio tuner  
Modified
		 - tomi
***************************************************************************/
#include "Radio_tuner.h"
#include "Libr.h"
#include "Sys_config.h"
#include "i2c_drv.h"
#include "System_operation.h"

unsigned char TunerType = TUNER_TYPE_FM;
unsigned char TunerSearchStates = TUNER_SEARCH_NONE;		//tuner searching states flags
unsigned short int FMfreq = FMFREQ_MIN;
unsigned short int AMfreq = AMFREQ_MIN;

unsigned char AutoSearchStep = 0;
unsigned char CurrentBand = FM_BAND;
unsigned char ChannelNum = 0;
unsigned long RadioIn1Data = 0;
unsigned long RadioIn2Data = 0;
unsigned long RadioOutData = 0;

unsigned char Radio_tuner_flag;
unsigned short int FM_frequence_list[30] = {8750};
unsigned short int AM_frequence_list[30] = {531};
signed char Radio_channel_high_light_cnt= 0;	//One list will display 6 channel,so not in full search mode then will have one channl high light
unsigned char Radio_channel_list_cnt= 0;	//From 0 to 5,so can display 0~30(one list is 0~6 channel,so 0*8~5*6)

static void Send_ccb_data(unsigned   long ccbdata, unsigned char  bits);
static unsigned long Read_ccb_data(unsigned char  bits);
static unsigned long Read_data_from_ccb(unsigned long address, unsigned char bits);
static void Send_data_to_ccb(unsigned long address, unsigned long ccbdata, unsigned char bits);
static void Unmute_bo2port(void);
void Init_lc72131(void);
void Tuner_handsearch(void);
void Change_freq_value(void);
void Tuner_autosearch(void);
void Tuner_IFok(void);
void Radio_tuner(void);
void Radio_tuner_search_key_process(void);
void Radio_search_next_process(void);
void Radio_search_previous_process(void);
void Switch_FM_AM(void);
void Force_to_full_search_mode(void);
void Force_to_M1_channel(void);
void Force_to_M2_channel(void);
void Force_to_M3_channel(void);
void Force_to_M4_channel(void);
void Force_to_M5_channel(void);
void Force_to_M6_channel(void);
void Radio_tuner_up_step_search(void);
void Radio_tuner_down_step_search(void);
/******************************************************************
Function:
******************************************************************/
static void Send_ccb_data(unsigned   long ccbdata, unsigned char  bits)
{
	unsigned char i;

   	for( i = 0; i < bits; i++)
   		{
		CLEAR_CCB_CLK;
		delay_us(30);
 		if (ccbdata & 0x01) 
			SET_CCB_DATA;
   		else 
			CLEAR_CCB_DATA;
		delay_us(30);
    		SET_CCB_CLK;
    		ccbdata >>= 1;
    		delay_us(30);
   		}
   	SET_CCB_DATA;
}
/********************************************************************
Function:
********************************************************************/
static unsigned long Read_ccb_data(unsigned char  bits)
{
	unsigned char i;
  	unsigned long value;
	value = 0;
   	for(i = 0; i < bits; i++)
    		{
    		value <<= 1;
   		CLEAR_CCB_CLK;
		delay_us(30);
		SET_CCB_CLK;
		delay_us(30);
		if(IS_PLL_DO_HIGH)
			value |= 0x01;
    		}
	return value;
}
/****************************************************************
Function:
****************************************************************/
static unsigned long Read_data_from_ccb(unsigned long address, unsigned char bits)
{
	unsigned long CcbOutData;
	CLEAR_CCB_STROBE;
    	Send_ccb_data(address, 8);
    	SET_CCB_STROBE;
    	CcbOutData = Read_ccb_data(bits);
    	CLEAR_CCB_STROBE;

   	 return CcbOutData;
}
/*********************************************************************
Function:
*********************************************************************/
static void Send_data_to_ccb(unsigned long address, unsigned long ccbdata, unsigned char bits)
{
	CLEAR_CCB_STROBE;
    	Send_ccb_data(address, 8);
    	SET_CCB_STROBE;
	Send_ccb_data(ccbdata, bits);
    	CLEAR_CCB_STROBE;
}

/*******************************************************************
Function:
*******************************************************************/
static void Unmute_bo2port(void)
{
	RadioIn2Data = (RadioIn2Data |  IO2_UNMUTE) & ~RADIO_IN2_DOC ;

	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
}
/*******************************************************************
Function:
*******************************************************************/
void Init_lc72131(void)
{
	switch(CurrentBand)
	{
    case  AM_BAND:
	RadioIn1Data = IN1_AM_INIT | (((AMfreq + 10710) /AM_freq_step) << 4 );
	RadioIn2Data = IN2_DATA_INIT | IO2_UNMUTE | IO1_DX ;
		break;
    default:
 	RadioIn1Data = IN1_FM_INIT | (FMfreq + 1070) /5;
	RadioIn2Data = IN2_DATA_INIT | IO2_UNMUTE | IO1_DX |SELECT_FM |BO3_ST;
        break;
 	}

	Send_data_to_ccb(LC72131_IN1_ADDR, RadioIn1Data, 24);
	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
	Unmute_bo2port();
	asm	nop;
}
/*******************************************************************
Function:
*******************************************************************/
void Tuner_handsearch(void)
{
 	Change_freq_value();
	Send_data_to_ccb(LC72131_IN1_ADDR, RadioIn1Data, 24);
	Unmute_bo2port();
}
/*******************************************************************
Function:
*******************************************************************/
void Radio_tuner_up_step_search(void)
{
	System_mute_on();
	
	Item_function_on_check_hight_default_light_item();
	
	SetBit(System_flag,bSearchDir);
	SetBit(Radio_tuner_flag,AutoSearchOK_flag);
	Tuner_handsearch();
	if(!ValBit(Radio_tuner_flag,Search_full_mode))	//In one channel search mode send now frequence to the high light item's channel
		{
		if(TunerType==TUNER_TYPE_AM)
          		AM_frequence_list[ChannelNum] = AMfreq;
          					
          	else
          		FM_frequence_list[ChannelNum] = FMfreq;
		}

	System_mute_off();
}
/*******************************************************************
Function:
*******************************************************************/
void Radio_tuner_down_step_search(void)
{
	System_mute_on();
	
	Item_function_on_check_hight_default_light_item();
	
	ClrBit(System_flag,bSearchDir);
	SetBit(Radio_tuner_flag,AutoSearchOK_flag);
	Tuner_handsearch();
	if(!ValBit(Radio_tuner_flag,Search_full_mode))	//In one channel search mode send now frequence to the high light item's channel
		{
		if(TunerType==TUNER_TYPE_AM)
          		AM_frequence_list[ChannelNum] = AMfreq;
          					
          	else
          		FM_frequence_list[ChannelNum] = FMfreq;
		}

	System_mute_off();
}
/********************************************************************
Function:
********************************************************************/
void Change_freq_value(void)
{
	if(TunerType==TUNER_TYPE_AM)
		{		
		if(ValBit(System_flag,bSearchDir)) 
			{
			AMfreq+=AM_freq_step;
			if(AMfreq > AMFREQ_MAX)
				{
				AMfreq = AMFREQ_MIN;
				if(ValBit(Radio_tuner_flag,Search_full_mode))	//Full search mode check stop
					{
					TunerSearchStates=TUNER_SEARCH_NONE;
					SetBit(Radio_tuner_flag,AutoSearchOK_flag);
					AutoSearchStep  = AUTOSRCH_STEP0;
					ChannelNum = 0;
					ClrBit(Radio_tuner_flag,Search_full_mode);
					Force_to_M1_channel();
					}	
				}
			}
		else 
			{
			AMfreq-=AM_freq_step;
			if(AMfreq < AMFREQ_MIN)
				AMfreq = AMFREQ_MAX;			
			}
		RadioIn1Data = (RadioIn1Data & 0xff0000) |(((AMfreq + 10710)  /AM_freq_step) << 4 );
		}
	else 
		{
		if(ValBit(System_flag,bSearchDir)) 
			{
			FMfreq+=FM_freq_step;
			if(FMfreq>FMFREQ_MAX)
				{
				FMfreq=FMFREQ_MIN;
				if(ValBit(Radio_tuner_flag,Search_full_mode))	//Full search mode check stop
					{
					TunerSearchStates=TUNER_SEARCH_NONE;
					SetBit(Radio_tuner_flag,AutoSearchOK_flag);
					AutoSearchStep  = AUTOSRCH_STEP0;
					ChannelNum = 0;
					ClrBit(Radio_tuner_flag,Search_full_mode);
					Force_to_M1_channel();
					}
				}
			}
		else 
			{
			FMfreq-=FM_freq_step;
			if(FMfreq<FMFREQ_MIN)
				FMfreq=FMFREQ_MAX;
			}
		RadioIn1Data = (RadioIn1Data & 0xff0000) |((FMfreq+1070) / 5);
		}
}
/****************************************************************
Function:
*****************************************************************/
void Tuner_autosearch(void)
{
   	switch(AutoSearchStep)
    	{
	 case AUTOSRCH_STEP0:
	 	RadioIn2Data &= ~RADIO_IN2_RESET;
		RadioIn2Data |= BO3_ST ;
      		RadioIn2Data |= RADIO_IN2_DOC;
      		RadioIn2Data &= ~IO2_UNMUTE;
      		Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);

        	RadioIn1Data &= ~RADIO_IN1_CTE;       /* set  cte = 0, reset counter*/
		Change_freq_value();
      		Send_data_to_ccb(LC72131_IN1_ADDR, RadioIn1Data, 24);  		
		RadioIn1Data |= RADIO_IN1_CTE;
      		Send_data_to_ccb(LC72131_IN1_ADDR, RadioIn1Data, 24);      		
		AutoSearchStep ++;
		break;

     	case AUTOSRCH_STEP1:  /*check DO is low?*/
		if (IS_PLL_DO_HIGH /*&& IFDetectCount*/)
			break;     /*IF counter end*/
		AutoSearchStep ++;
	case AUTOSRCH_STEP2:	/*/check UL and read data from LC72131*/
			//WAIT_1ms();
			RadioOutData = Read_data_from_ccb(LC72131_OUT_ADDR, 24);
			RadioOutData = Read_data_from_ccb(LC72131_OUT_ADDR, 24);
			
			if(((RadioOutData & RADIO_OUT_LOCK) != RADIO_OUT_LOCK)) 
				break;
			AutoSearchStep  = AUTOSRCH_STEP0;
			Tuner_IFok();
			
			if(ValBit(Radio_tuner_flag,IFOK_flag))
          			{
          			ClrBit(Radio_tuner_flag,IFOK_flag);
          			if(!ValBit(Radio_tuner_flag,Search_full_mode))	//Now search mode is one channel search
          				{
					if(TunerType==TUNER_TYPE_AM)
          					AM_frequence_list[ChannelNum] = AMfreq;
          				else
          					FM_frequence_list[ChannelNum] = FMfreq;
					TunerSearchStates=TUNER_SEARCH_NONE;
					SetBit(Radio_tuner_flag,AutoSearchOK_flag);
					System_mute_off();
          				}
          			else	//Now search mode is full search,so here you must save the frequence and keep search
          				{
          					if(TunerType==TUNER_TYPE_AM)	//Save the one channel's frequence
          						AM_frequence_list[ChannelNum] = AMfreq;
          					
          					else
          						FM_frequence_list[ChannelNum] = FMfreq;
          					TunerSearchStates=TUNER_SEARCH_RUN;
						ClrBit(Radio_tuner_flag,AutoSearchOK_flag);
						AutoSearchStep  = AUTOSRCH_STEP0;
						ChannelNum++;
						if(ChannelNum >= 30)		//Run to the max number then stop to search
							{
							ChannelNum = 0;
							TunerSearchStates=TUNER_SEARCH_NONE;
							SetBit(Radio_tuner_flag,AutoSearchOK_flag);
							if(TunerType==TUNER_TYPE_AM)
								AMfreq = AMFREQ_MIN;
							else
								FMfreq = FMFREQ_MIN;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av一级做a爰片久久| 久久久午夜精品理论片中文字幕| 亚洲色图都市小说| 91视频在线观看免费| 亚洲四区在线观看| 欧美亚洲国产bt| 麻豆国产一区二区| 亚洲国产精品精华液ab| 一本色道久久综合狠狠躁的推荐 | 国产在线看一区| 日本一区二区免费在线观看视频| 成人午夜私人影院| 亚洲主播在线播放| 精品欧美一区二区在线观看| 成人小视频免费观看| 亚洲一区电影777| 337p粉嫩大胆色噜噜噜噜亚洲| 懂色av噜噜一区二区三区av | 亚洲在线免费播放| 91精品国产91综合久久蜜臀| 国产精品自在在线| 亚洲影院在线观看| 久久久美女艺术照精彩视频福利播放| 成人在线视频一区二区| 亚洲18色成人| 国产精品久久久久婷婷| 69堂国产成人免费视频| 成人高清视频在线观看| 日本午夜精品一区二区三区电影| 国产欧美一区二区精品婷婷| 精品1区2区3区| 国产超碰在线一区| 日韩电影在线一区| 亚洲欧美激情小说另类| 日韩女优电影在线观看| 日本二三区不卡| 国产精品18久久久久久久久| 亚洲18影院在线观看| 国产精品国产三级国产三级人妇| 91精品国产色综合久久不卡蜜臀 | 亚洲制服丝袜在线| 国产日韩精品一区二区三区| 欧美肥妇bbw| 99久久免费视频.com| 国内久久精品视频| 天堂影院一区二区| 亚洲黄色片在线观看| 国产欧美日韩中文久久| 日韩精品一区二区三区在线观看| 色偷偷久久人人79超碰人人澡 | 日产国产欧美视频一区精品| 亚洲美女在线国产| 国产欧美一区二区三区鸳鸯浴| 91精品国产综合久久精品性色| 色天天综合久久久久综合片| 国产黄色精品网站| 韩国精品主播一区二区在线观看 | 91精品国产一区二区三区蜜臀| 97精品久久久午夜一区二区三区 | 欧美另类一区二区三区| 色噜噜夜夜夜综合网| 99久久精品免费看国产| 丰满亚洲少妇av| 国产精品77777| 国产精品资源站在线| 极品少妇xxxx偷拍精品少妇| 日本三级韩国三级欧美三级| 午夜精品视频在线观看| 一区二区久久久| 亚洲精品久久久蜜桃| 日韩美女啊v在线免费观看| 亚洲欧洲日产国产综合网| 国产精品网站一区| 国产精品久久久久一区二区三区| 国产亚洲污的网站| 亚洲国产高清在线观看视频| 国产女主播一区| 中文字幕亚洲视频| 一区二区三区四区不卡在线 | 在线亚洲一区二区| 欧美最猛黑人xxxxx猛交| 91精品1区2区| 欧美三级三级三级| 欧美一区二区三区在线看 | 久久日韩粉嫩一区二区三区| 久久久久久日产精品| 日本一区二区动态图| |精品福利一区二区三区| 一区二区高清视频在线观看| 亚洲成人午夜电影| 久久99精品一区二区三区| 国产精品资源在线看| 99久久久精品| 欧美日韩电影一区| 欧美精品一区二区久久久| 欧美国产欧美综合| 日韩美女视频一区| 日韩av在线播放中文字幕| 久久99国产精品成人| 国产成人aaa| 欧美午夜宅男影院| 欧美大片在线观看一区二区| 国产欧美综合在线| 亚洲成人免费在线观看| 精品亚洲欧美一区| 97se亚洲国产综合自在线不卡| 91成人免费在线视频| 欧美一级黄色大片| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 色婷婷av一区二区三区软件 | 2021中文字幕一区亚洲| 亚洲精品国产一区二区三区四区在线| 亚洲高清久久久| 国产精品中文欧美| 欧美主播一区二区三区| 精品盗摄一区二区三区| 综合电影一区二区三区| 奇米影视一区二区三区| 99精品视频在线播放观看| 日韩一卡二卡三卡国产欧美| 中文字幕日韩精品一区| 奇米精品一区二区三区在线观看 | 国产精品乱人伦| 五月综合激情婷婷六月色窝| 国产99久久精品| 欧美一区二区三区视频免费| 1区2区3区精品视频| 精品一区二区av| 6080午夜不卡| 亚洲丝袜美腿综合| 国产精品一线二线三线精华| 欧美日韩一区二区三区视频 | 欧美中文字幕亚洲一区二区va在线| 欧美成人免费网站| 狠狠狠色丁香婷婷综合激情 | 国产精品久久久久久久久久久免费看| 日韩电影一二三区| 欧美综合视频在线观看| 中文字幕一区在线| 国产精品99久久久久久宅男| 337p亚洲精品色噜噜| 亚洲精品免费播放| 成人av网址在线| 国产日本一区二区| 精品在线一区二区| 在线播放国产精品二区一二区四区| 17c精品麻豆一区二区免费| 国产麻豆精品视频| 欧美sm极限捆绑bd| 蜜桃av噜噜一区二区三区小说| 欧美日韩国产综合一区二区| 亚洲欧美日韩久久| 99re热视频精品| 国产精品久久久久国产精品日日 | 97久久精品人人做人人爽50路| 久久久99精品免费观看| 国内欧美视频一区二区| 欧美精品一区二| 黄色资源网久久资源365| 精品欧美久久久| 激情亚洲综合在线| www国产亚洲精品久久麻豆| 国内精品在线播放| 精品成人一区二区三区| 精品无人码麻豆乱码1区2区| 精品日产卡一卡二卡麻豆| 久久国产人妖系列| 日韩欧美国产精品一区| 美女一区二区三区在线观看| 日韩天堂在线观看| 国产最新精品免费| 国产婷婷精品av在线| 成人伦理片在线| 亚洲欧美激情小说另类| 欧美日韩中文字幕一区二区| 亚洲国产aⅴ天堂久久| 91 com成人网| 国产综合色精品一区二区三区| 精品sm在线观看| 成人美女视频在线观看18| 亚洲啪啪综合av一区二区三区| 色偷偷88欧美精品久久久| 午夜视频在线观看一区二区三区| 911精品产国品一二三产区| 久久99精品国产麻豆婷婷| 国产日韩一级二级三级| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲精品国产视频| 制服丝袜日韩国产| 国产成人综合在线观看| 亚洲婷婷综合色高清在线| 欧美绝品在线观看成人午夜影视| 美女尤物国产一区| 中文字幕一区在线观看| 欧美巨大另类极品videosbest| 国模大尺度一区二区三区| 亚洲四区在线观看| 日韩精品在线一区二区| 不卡视频在线看| 日韩有码一区二区三区|