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

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

?? tuner_drv.c

?? SI4702
?? C
?? 第 1 頁 / 共 2 頁
字號:
}

/*
********************************************************************************
*  Function name :	FmClrSTC()
*  Author:		Eric Xie
*  Description:	EDA5800 clear STC.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))             
void FmClrSTC(void)
{            
	char  writeData8[2];
                         
	RDA5800REG_IMG[2]|= TUNER_MUTE;
	
	writeData8[0] = (RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);

	I2C_WriteFMxReg(writeData8,2);
 }

/*
********************************************************************************
*  Function name :	FmReadABReg()
*  Author:		Eric Xie
*  Description:	EDA5800 read 0x0ah,0x0bh.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmReadABReg(void) 
{
	char  readData8[4];

	I2C_ReadFMxReg(readData8,4); 

	RDA5800REG_IMG[10] = readData8[0]*0x100 + readData8[1];
	RDA5800REG_IMG[11] = readData8[2]*0x100 + readData8[3];
	
}

/*
********************************************************************************
*  Function name :	FmInitReady()
*  Author:		Eric Xie
*  Description:	EDA5800 intialize process - write dummy data.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmInitReady(void)
{
	char writeData8[2];
	
	writeData8[0] =0x81;
	writeData8[1] =0x98;

	I2C_ReadFMxReg(writeData8,2);
}

/*
********************************************************************************
*  Function name :	FmInitPowerOn()
*  Author:		Eric Xie
*  Description:	EDA5800 intialize process - power on.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmInitPowerOn(void)
{
	int i;
	char writeData8[2];
			
	for(i = 0; i < 45; i++)
	{
		RDA5800REG_IMG[i] = cwFMDefault[i];
	}
		
	writeData8[0] =(RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);

	I2C_WriteFMxReg(writeData8,2);
}

/*
********************************************************************************
*  Function name :	FmInitData()
*  Author:		Eric Xie
*  Description:	EDA5800 intialize process - write init data.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmInitData(char area)
{
	int i;
	char writeData8[86];	

	if (area == FM_AREA_JAPAN)
	{
		RDA5800REG_IMG[3]|=TUNER_BAND;
	}
	else
	{
		RDA5800REG_IMG[3]&=(~TUNER_BAND);
	}
	
	for(i = 0; i < 43; i++)
	{
		writeData8[i*2] =(RDA5800REG_IMG[i+2] >> 8);
		writeData8[i*2+1] = (RDA5800REG_IMG[i+2]);
	}

	I2C_WriteFMxReg(writeData8,86);
}

/*
********************************************************************************
*  Function name :	FmInitClrSTC()
*  Author:		Eric Xie
*  Description:	EDA5800 intialize process - clear STC.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmInitClrSTC(void)
{
	char writeData8[2];	
	
	RDA5800REG_IMG[2]&=(~TUNER_LAB);		//clear LAB_MODE bit
	writeData8[0] = (RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);

	I2C_WriteFMxReg(writeData8,2);

}
		
/*
********************************************************************************
*  Function name :	Tuner_MuteControl()
*  Author:		Eric Xie
*  Description:	EDA5800 control mute enable/disable.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void Tuner_MuteControl(bool active)
{
	char writeData8[2];
    
	if(active)
	{
		RDA5800REG_IMG[2]&=(~TUNER_MUTE);
	}
	else
	{
		RDA5800REG_IMG[2]|=TUNER_MUTE;
	}
	
	writeData8[0]=(RDA5800REG_IMG[2] >> 8);
	writeData8[1]=(RDA5800REG_IMG[2]);
	
	I2C_WriteFMxReg(writeData8,2);

}

/*
********************************************************************************
*  Function name :	Tuner_PowerDown()
*  Author:		Eric Xie
*  Description:	EDA5800 disable chip.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void Tuner_PowerDown(void)
{
	char writeData8[2];
	
	RDA5800REG_IMG[2] &= (~TUNER_ENABLE); 
	
	writeData8[0] = (RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);
	I2C_WriteFMxReg(writeData8,2);
}

/*
********************************************************************************
*  Function name :	Tuner_FreqSet()
*  Author:		Eric Xie
*  Description:	EDA5800 set frequency.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\""))) 
void Tuner_FreqSet(unsigned int TunerFrequency)
{
	unsigned char  writeData8[4];
	unsigned long band;
	unsigned long frequency;
	unsigned int   channel;

	if (GlobalFmVar.FmArea == FM_AREA_JAPAN)
	{
 		band=7600;
		RDA5800REG_IMG[3]|=TUNER_BAND;
	} 
	else
	{
        	band=8750;
		RDA5800REG_IMG[3]&=(~TUNER_BAND);
	}

	channel=(unsigned int)((TunerFrequency-band)/10);
	
	RDA5800REG_IMG[3] = (((channel<<8) & 0xff00) | (RDA5800REG_IMG[3] & 0x00ff));
    	RDA5800REG_IMG[2]&=(~TUNER_MUTE);
	RDA5800REG_IMG[2]&=(~TUNER_SEEK);		//stop seek

	writeData8[0] = (RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);
	
	writeData8[2] = (RDA5800REG_IMG[3] >> 8);
	writeData8[3] =(RDA5800REG_IMG[3]);

	I2C_WriteFMxReg(writeData8,4);

}    

/*
********************************************************************************
*  Function name :	FmSeek()
*  Author:		Eric Xie
*  Description:	EDA5800 seek start.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
char FmSeek(char seekDirection)
{
	char readData8[4];
	char writeData8[2];
	bool fTemp=0;
	
	if(seekDirection == TUN_UP) 
	{
		RDA5800REG_IMG[2]|=TUNER_SUD;		// seek up
	}
	else
	{
		RDA5800REG_IMG[2]&=(~TUNER_SUD);	// seek down
	}
		
	RDA5800REG_IMG[2]|=TUNER_SEEK;
	RDA5800REG_IMG[2]&=(~TUNER_MUTE);

	writeData8[0] =(RDA5800REG_IMG[2]>>8);
	writeData8[1] = RDA5800REG_IMG[2];

	if (I2C_WriteFMxReg(writeData8,2)==1)
	{
		return(1);
	}
		
}

/*
********************************************************************************
*  Function name :	FmSeekClrSTC()
*  Author:		Eric Xie
*  Description:	EDA5800 clear STC after seek end.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void FmSeekClrSTC(void)
{
	char writeData8[2];

	RDA5800REG_IMG[2]&=(~TUNER_SEEK);		//stop seek
	
	writeData8[0] =(RDA5800REG_IMG[2] >> 8);
	writeData8[1] = (RDA5800REG_IMG[2]);

	I2C_WriteFMxReg(writeData8,2);

}

/*
********************************************************************************
*  Function name :	FmChanToFreq()
*  Author:		Eric Xie
*  Description:	EDA5800 change channel to frequency.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
int  FmChanToFreq(char channel) 
{
	int channelSpacing;
	int bottomOfBand;
	int frequency;

	if ((RDA5800REG_IMG[3] & 0x0002) == 0x0000) 
	{
		bottomOfBand = 875;
	}
	else
	{
		bottomOfBand = 760;
	}
		
	if ((RDA5800REG_IMG[3] & 0x0001) == 0x0000)
	{
		channelSpacing = 1;
	}
	else if ((RDA5800REG_IMG[3] & 0x0001) == 0x0001)
	{
		channelSpacing = 2;
	}
	else
	{
		channelSpacing = 1;
	}
		
	frequency = (bottomOfBand + channelSpacing * channel)*10;

	return (frequency);
}

/*
********************************************************************************
*  Function name :	Tuner_FreqChange()
*  Author:		Eric Xie
*  Description:	EDA5800 frequency increase/decrease.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void Tuner_FreqChange(unsigned char updownflag,unsigned int step)
{   
	if(updownflag == TUN_UP)
	{
		GlobalFmVar.FmFreq += step;
	}
	else if(updownflag == TUN_DOWN)
	{
		GlobalFmVar.FmFreq -= step;
	}
    
	if(GlobalFmVar.FmFreq > FmFreqMaxVal)
	{
		GlobalFmVar.FmFreq = FmFreqMinVal;
	}
	
	if(GlobalFmVar.FmFreq < FmFreqMinVal)
	{
		GlobalFmVar.FmFreq = FmFreqMaxVal;
	}
}

/*
********************************************************************************
*  Function name :	GetStereoStatus()
*  Author:		Eric Xie
*  Description:	Get stereo status.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void GetStereoStatus(void)
{
	unsigned char TempBuffer[2];

	I2C_ReadFMxReg(TempBuffer,2);

	if (TempBuffer[1] & 0x01)
	{
		FmStereoState = 1;
	}
	else
	{
		FmStereoState = 0;
	}
    //FmDisplayBlock.DisplayFlag.bit.bFmStereo = 1;
}

/*
********************************************************************************
*  Function name :	GetNextStation()
*  Author:		Eric Xie
*  Description:	Get next station.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void GetNextStation(void)
{
	unsigned int i;
    
	for (i = 0; i < FREQMAXNUMBLE; i ++)
	{
		if (++GlobalFmVar.FmSaveNum >= FREQMAXNUMBLE)
		{
			GlobalFmVar.FmSaveNum = 0;
		}

		GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum];
		
		if ((FmFreqMinVal <= GlobalFmVar.FmFreq) && (GlobalFmVar.FmFreq <= FmFreqMaxVal))
		{
			return;
		}
	}
	
	GlobalFmVar.FmSaveNum = 0;
	GlobalFmVar.FmFreq = FmFreqMinVal;
}

/*
********************************************************************************
*  Function name :	GetPrevStation()
*  Author:		Eric Xie
*  Description:	Get privious station.
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))
void GetPrevStation(void)
{
	unsigned int i;
    
	for (i = 0; i < FREQMAXNUMBLE; i ++)
	{
		if (GlobalFmVar.FmSaveNum == 0)
		{
			GlobalFmVar.FmSaveNum = FREQMAXNUMBLE;
		}

		GlobalFmVar.FmSaveNum --;
		GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum];
		
		if ((FmFreqMinVal <= GlobalFmVar.FmFreq) && (GlobalFmVar.FmFreq <= FmFreqMaxVal))
		{
			return;
		}
	}
	
	GlobalFmVar.FmSaveNum = 0;
	GlobalFmVar.FmFreq = FmFreqMinVal;
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品伊人久久久久7777人| 国产亚洲一区二区三区| 91在线视频官网| 国产激情一区二区三区桃花岛亚洲| 日韩黄色免费网站| 蜜臀av一区二区在线免费观看| 亚洲国产精品一区二区尤物区| 一区二区三区波多野结衣在线观看| 亚洲欧美日韩电影| 一区二区不卡在线播放| 日韩在线卡一卡二| 麻豆成人免费电影| 国产中文字幕精品| 成人黄色软件下载| 91免费精品国自产拍在线不卡| 99精品热视频| 欧美这里有精品| 欧美巨大另类极品videosbest| 91麻豆精品国产91久久久资源速度| 91精品国产综合久久久久久久| 日韩欧美一二区| 欧美极品另类videosde| 日韩伦理电影网| 一区二区三区四区中文字幕| 日韩国产精品大片| 国产精品1区2区| 91福利在线观看| 欧美年轻男男videosbes| 91精品国产综合久久小美女| 欧美激情一二三区| 亚洲精品老司机| 日产精品久久久久久久性色| 国产福利精品一区| 在线观看www91| 日韩美女一区二区三区四区| 国产日韩欧美一区二区三区综合| 国产精品色哟哟| 亚洲激情在线激情| 国产一区二三区| 91麻豆免费观看| 久久综合久久鬼色| 日韩综合一区二区| 成人美女视频在线看| 在线播放欧美女士性生活| 久久久久9999亚洲精品| 亚洲成a天堂v人片| 国产黄色成人av| 欧美一级免费观看| 国产精品国产三级国产aⅴ入口 | 国产一区二区三区精品视频| 色综合激情久久| www国产成人| 亚洲一区二区免费视频| 成人app网站| 日韩欧美国产一区二区三区| 亚洲精品成人在线| 成人做爰69片免费看网站| 日韩你懂的电影在线观看| 亚洲精品乱码久久久久久久久| 国产在线视频一区二区三区| 欧美精品第一页| 亚洲美女少妇撒尿| 不卡免费追剧大全电视剧网站| 欧美午夜精品久久久久久孕妇| 欧美激情艳妇裸体舞| 国产一区二区看久久| 欧美日韩dvd在线观看| 亚洲视频中文字幕| 成人sese在线| 中文无字幕一区二区三区 | 欧美精品一区二区三区久久久| 国产精品国产三级国产三级人妇| 国产成人免费高清| 久久久99精品免费观看| 看片网站欧美日韩| 日韩欧美一区中文| 久久精品国产一区二区三区免费看| 欧美三级视频在线观看| 一区二区三区波多野结衣在线观看 | 亚洲成av人在线观看| 91久久一区二区| 亚洲精品中文字幕在线观看| 一本大道av伊人久久综合| 亚洲丝袜另类动漫二区| 91免费版在线| 亚洲成a人在线观看| 91精品国产综合久久香蕉麻豆| 亚洲chinese男男1069| 欧美肥妇毛茸茸| 人妖欧美一区二区| 欧美电影免费观看高清完整版| 蜜臀久久久久久久| 26uuu久久天堂性欧美| 国产综合成人久久大片91| 国产精品视频一二三区| 色视频成人在线观看免| 另类小说图片综合网| 国产视频一区在线播放| 色噜噜久久综合| 免费看黄色91| 国产精品国产三级国产普通话99| 欧美偷拍一区二区| 国产麻豆视频精品| 亚洲欧美乱综合| 日韩一区二区在线观看| 夫妻av一区二区| 日韩毛片视频在线看| 欧美一区二区久久久| 成人免费va视频| 亚洲曰韩产成在线| 久久久噜噜噜久久人人看 | 日韩免费一区二区三区在线播放| 国产一区二区0| 天天综合天天综合色| 国产清纯白嫩初高生在线观看91 | 高清在线不卡av| 亚洲国产cao| 国产精品美女一区二区三区| 欧美日本乱大交xxxxx| 国产盗摄女厕一区二区三区| 天天影视网天天综合色在线播放| 久久久久高清精品| 91精品免费观看| 色综合色综合色综合色综合色综合 | 欧洲视频一区二区| 国内精品伊人久久久久av影院| 亚洲欧美偷拍三级| 日韩天堂在线观看| 欧美三级中文字| 91欧美一区二区| 国产超碰在线一区| 国内精品视频666| 亚洲成av人片一区二区三区| 国产精品午夜久久| 国产夜色精品一区二区av| 欧美精品日韩一本| 欧美日韩在线观看一区二区| 国产成人一区在线| 国产精品一区在线| 国产在线精品一区二区不卡了| 视频一区视频二区在线观看| 一区二区三区在线视频观看58| 久久毛片高清国产| 久久这里只有精品6| 欧美顶级少妇做爰| 欧美美女一区二区| 欧美性色aⅴ视频一区日韩精品| 99精品国产视频| 在线观看91精品国产入口| 国产精品羞羞答答xxdd| 国产在线观看一区二区| 亚洲电影第三页| 亚洲观看高清完整版在线观看| 中文字幕欧美一区| 国产精品伦一区二区三级视频| 日韩色视频在线观看| 日韩一区二区三区精品视频| 色综合天天性综合| 91麻豆精东视频| 国精产品一区一区三区mba视频| 亚洲高清免费在线| 亚洲二区视频在线| 日韩精品1区2区3区| 丝袜亚洲另类丝袜在线| 亚洲精品大片www| 午夜精品视频一区| 奇米影视一区二区三区| 日韩高清不卡在线| 另类小说一区二区三区| 国产福利视频一区二区三区| 久久国产精品第一页| 久久精品国产在热久久| 粉嫩aⅴ一区二区三区四区| 99精品欧美一区| 777奇米成人网| 久久综合国产精品| 国产精品对白交换视频| 亚洲一区二区av电影| 麻豆精品在线播放| 成人动漫一区二区| 欧美老女人第四色| 久久久久久久网| 亚洲视频狠狠干| 美女精品一区二区| 91在线精品秘密一区二区| 精品婷婷伊人一区三区三| 26uuu国产电影一区二区| 亚洲欧美一区二区三区极速播放 | 成人一区二区在线观看| 色综合久久天天| 日韩精品一区国产麻豆| 成人欧美一区二区三区黑人麻豆 | 亚洲激情图片小说视频| 亚洲黄色录像片| 欧美日韩一区三区四区| 天堂午夜影视日韩欧美一区二区| 91免费观看国产| 久久97超碰国产精品超碰| 26uuu色噜噜精品一区二区| 美女性感视频久久|