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

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

?? radio_tuner.c

?? 一款車載DVD的車機源程序(正在生成中的哦)
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************
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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人在线观看| 国产综合久久久久久久久久久久 | 欧美精品一卡二卡| 国产麻豆精品95视频| 日本成人在线不卡视频| 亚洲精品第一国产综合野| 久久久久久久综合色一本| 在线电影一区二区三区| 在线免费观看日本一区| 国产毛片精品一区| 手机精品视频在线观看| 亚洲精品国产高清久久伦理二区| 精品乱人伦一区二区三区| 国产精品三级在线观看| 亚洲精品视频在线观看免费| 欧美岛国在线观看| 亚洲综合精品自拍| 国产婷婷色一区二区三区在线| 欧美性大战久久久久久久| 成人不卡免费av| 国产美女精品一区二区三区| 精品一区二区三区影院在线午夜| 日韩在线播放一区二区| 免费久久精品视频| 日韩av一级电影| 亚洲欧洲日产国产综合网| 久久这里只有精品视频网| 久久色中文字幕| 久久综合九色综合97婷婷女人 | 精品一区二区三区免费| 丝袜亚洲精品中文字幕一区| 国产精品久久久久婷婷二区次| 一区二区在线免费观看| 国产在线精品不卡| 91网上在线视频| 精品国产乱码久久| 亚洲综合小说图片| 成人免费毛片嘿嘿连载视频| 欧美午夜精品一区二区三区| 国产亚洲欧美激情| 青椒成人免费视频| 欧美性xxxxxx少妇| 亚洲视频一二三区| 国产白丝精品91爽爽久久| 欧美日韩国产综合草草| 中文字幕一区二区三区在线观看| 日韩高清在线不卡| 91年精品国产| 国产精品无遮挡| 亚洲bdsm女犯bdsm网站| 成人小视频免费观看| 91精品在线免费| 国产精品美女久久福利网站| 国产乱人伦偷精品视频免下载 | 精品va天堂亚洲国产| 亚洲综合999| 91免费在线播放| 国产精品成人免费在线| 国产高清在线精品| 久久久久久久久久美女| 裸体一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 这里只有精品免费| 亚洲一区av在线| 色呦呦一区二区三区| 国产精品久久久久久久久果冻传媒| 精彩视频一区二区三区| 精品国产一区二区三区不卡| 免费成人在线影院| 日韩你懂的电影在线观看| 亚洲gay无套男同| 在线视频综合导航| 亚洲综合成人网| 久久久噜噜噜久噜久久综合| 久久99久久99精品免视看婷婷| 欧美丰满少妇xxxbbb| 蜜桃一区二区三区在线观看| 日韩三级在线免费观看| 国内成人精品2018免费看| www久久久久| a级精品国产片在线观看| 最新久久zyz资源站| 91国偷自产一区二区使用方法| 亚洲女人的天堂| 欧美日韩国产高清一区| 另类欧美日韩国产在线| 久久精品亚洲国产奇米99| 成人手机电影网| 亚洲精品videosex极品| 91麻豆精品久久久久蜜臀| 国产精品一区在线观看你懂的| 欧美国产1区2区| 色香色香欲天天天影视综合网| 五月婷婷综合在线| 亚洲精品一区二区三区精华液| 成人综合在线观看| 亚洲成av人在线观看| 欧美本精品男人aⅴ天堂| 成人高清免费观看| 午夜精品视频在线观看| 久久综合精品国产一区二区三区 | 中文字幕高清一区| 91国偷自产一区二区开放时间| 视频在线观看一区| 中文在线一区二区| 欧美亚洲自拍偷拍| 国产在线精品不卡| 亚洲国产精品精华液网站| 精品国产一区二区三区忘忧草 | 国产调教视频一区| 91黄视频在线观看| 国产精品亚洲一区二区三区妖精 | 日本黄色一区二区| 麻豆专区一区二区三区四区五区| 国产精品久久久久国产精品日日| 欧美日韩国产大片| 99re热这里只有精品视频| 久久国产精品色婷婷| 亚洲已满18点击进入久久| 久久久久久久久一| 欧美精品成人一区二区三区四区| 成人免费毛片嘿嘿连载视频| 六月丁香综合在线视频| 亚洲一区免费观看| 国产精品进线69影院| 久久午夜老司机| 欧美日韩另类国产亚洲欧美一级| 视频一区视频二区中文| 一区二区国产盗摄色噜噜| 国产精品久久久久久久久久免费看 | 色偷偷久久人人79超碰人人澡 | 亚洲日本一区二区| 久久精品无码一区二区三区| 日韩欧美一级精品久久| 一本大道久久a久久综合婷婷| 狠狠色狠狠色综合系列| 免费在线观看视频一区| 婷婷久久综合九色综合绿巨人 | 中文子幕无线码一区tr| 久久婷婷综合激情| xfplay精品久久| 精品国产一区二区在线观看| 4438x亚洲最大成人网| 欧美日韩第一区日日骚| 91久久精品一区二区| 在线亚洲一区二区| 色婷婷久久99综合精品jk白丝| av日韩在线网站| 色偷偷成人一区二区三区91| av一区二区三区| 色婷婷av一区| 欧美午夜电影一区| 91 com成人网| 日韩免费视频一区二区| 精品国产一区二区三区av性色| 精品国精品国产| 国产午夜一区二区三区| 中文字幕精品一区| 亚洲色图欧美在线| 亚洲成a人v欧美综合天堂下载| 香港成人在线视频| 久久99国产精品免费| 国产成人精品网址| 91免费视频网址| 91精品视频网| 久久精品日韩一区二区三区| 国产精品嫩草99a| 亚洲综合色区另类av| 日本午夜一区二区| 国产成人在线观看免费网站| 不卡的电视剧免费网站有什么| 日本韩国欧美在线| 91精品国产综合久久久蜜臀图片| 精品国产一区二区三区av性色| 久久精品视频在线免费观看| 亚洲精品高清视频在线观看| 免费在线欧美视频| 99热精品一区二区| 在线成人av影院| 国产精品久久久久久亚洲伦| 亚洲国产一区二区在线播放| 久久成人18免费观看| www.在线欧美| 91麻豆精品国产无毒不卡在线观看| 国产日韩欧美激情| 丝袜脚交一区二区| 成人亚洲一区二区一| 欧美一区二区三区在线视频| 国产精品天干天干在观线| 午夜精品久久久久久久| 成人免费视频网站在线观看| 制服丝袜中文字幕亚洲| 中文字幕在线一区二区三区| 久久99精品国产| 欧美欧美午夜aⅴ在线观看| 日本一区二区成人| 久久精品国产精品亚洲红杏| 日本韩国一区二区三区| 中文一区二区在线观看| 精品在线亚洲视频|