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

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

?? ar1000fsamplev085.c

?? FM收音ICAR1010的DEMO程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
// ----- AR1000 VerF Sample Code ( v0.85, No-RDS ) by AIROHA Technology Corp. -------
// Version : 0.85   ( No-RDS)  for using internal XO or external 32.768 KHz reference clock
// Files : AR1000FSample.c , AR1000FSample.h
//
// This sample code presents following functions of AR1000/AR1010:
//
//       1. power-on sequence
//       2.frequency calculation and basic tune 
//	3. tune with Hi/Lo side rejection (** recommended procedure for tune )
//       4.seek with Hi/Lo side rejection ( and smute)
//       5.volume control
//	6. scan(** recommended procedure for scan )	
//	7. standby and wakeup procedure
//  
// This sample code could be compatiable with RDS function. However,the RDS related 
// opertions are beyond the scope of this sample code and are not presented here.
// ---------------------------------------------------------------------------------------------------------------
//
// Upgrade from 0.84 to 0.85
// - update register setting
//
// Upgrade from 0.82 to 0.83
// - Conditional compilation ( INTERNAL_XO)
// - DEMO: standby and wakeup
// Upgrade from 0.81 to0.82a
// - register update to ARF_V21_070813  ( disable xo_en & xo output  )
// - volume control update 
// - make sure hmute is always ON all over the seek and Hi/Lo-tune process
//   that is ,   AR1000_I2C_TUNE_HiLo (  )  and  AR1000_I2C_TUNE(  )  will MUTE ON
//   but not MUTE OFF. Caller must MUTE OFF explicitly.
// - completely scan procedure
// - errata:  
//                 "if (rssi < 0) ..... "    in AR1000_I2C_TUNE_HiLo (  )   
// 		
// Upgrade from 0.80 to 0.81
// - make sure RDS interrupt is OFF before seek and tune
// - max output of volume is recommended  (as default setting)

#include "AR1000FSample.h"

// the initial setting of AR1000 register ( base on ARF_V23_080121 )

#define INTERNAL_XO   // mark this line if you're using external reference clock
#ifdef INTERNAL_XO
code unsigned int AR1000reg[18]={ //using  AR1000 XO function
	0xFFFB,		// R0 -- the first writable register .
	0x5B15,		// R1.
	0xD0B9,		// R2.
	0xA010,		// R3, seekTHD = 16
	0x0780,		// R4
	0x28AB,		// R5
	0x6400,		// R6
	0x1EE7,		// R7
	0x7141,		// R8
	0x007D,		// R9
	0x82C6,		// R10  disable wrap
	0x4E55,		// R11. <--- 
	0x970C,		// R12.
	0xB845,		// R13
	0xFC2D,		// R14
	0x8097,		// R15
	0x04A1,		// R16
	0xDF6A		// R17
};    
#else
code unsigned int AR1000reg[18]={ // using External 32.768KHz Reference Clock
	0xFF7B,		// R0 -- the first writable register .  (disable xo_en)
	0x5B15,		// R1.
	0xD0B9,		// R2.
	0xA010,		// R3   seekTHD = 16
	0x0780,		// R4
	0x28AB,		// R5
	0x6400,		// R6
	0x1EE7,		// R7
	0x7141,		// R8
	0x007D,		// R9
	0x82C6,		// R10  disable wrap
	0x4F55,		// R11. <--- (disable xo_output)
	0x970C,		// R12.
	0xB845,		// R13
	0xFC2D,		// R14
	0x8097,		// R15
	0x04A1,		// R16
	0xDF6A		// R17
};    
#endif

// Volume Control
// there are two different fields about volume control in AR1000F
//  Volume   :  D7  ~D10 in register R3
//  Volume2 :  D12~D15 in register R14
//  17 combinations of ( volume2 + volume)  are  recommended.
//  
//  
// code unsigned char AR1000vol[19]={ // volume control  (increasing) 070822
	// 0x0F,	// step 0
	// 0xCF,	// step 1
	// 0xDF,	// step 2
	// 0xFF,	// 3
	// 0xCB,	// 4
	// 0xDB,	// 5
	// 0xFB,	// 6
	// 0xFA,	// 7
	// 0xF9,	// 8
	// 0xF8,	// 9
	// 0xF7,	//10
	// 0xD6,	//11
	// 0xE6,	//12
	// 0xF6,	//13
	// 0xE3,	//14
	// 0xF3,	//15
	// 0xF2,	//16 
	// 0xF1,	//17
	// 0xF0	//18 <------ default setting
// };
idata DATA_TYPE_S Reg_Data[18]; 

void main  ( void )
{
	unsigned int val;
	// Get IC version
	val = AR1000_I2C_Read_Data(ADDR_CHIPID);	
	if( val != CHIPNO_AR1000 ) {
		// this is not AR1000
		return;
	}
	
	val = AR1000_I2C_Read_Data(ADDR_DEVID);	

	// MUST-BE : AR1000 Power-On Sequence
	AR1000_init();

	// DEMO: Hi/Lo Tune  to the station - 98.1MHZ
	AR1000_RDSInt_OFF // Remeber to OFF RDS Interrupt before seek and tune , if you are using RDS Interrupt
	AR1000_I2C_TUNE_HiLo(981);//, UEBAND, SPACE100K); // to 98.1 MHz	
	AR1000_RDSInt_ON  // Turn on RDS interrupt  if you want
	AR1000_MUTE_OFF      
	AR1000_I2C_Write_Data(1);	
	
	// DEMO: the complete SEEK function 
	//
	// use default SEEKTH 
	//
	AR1000_RDSInt_OFF // Remeber to OFF RDS Interrupt before seek and tune , if you are using RDS Interrupt
	AR1000_I2C_SEEK(SEEKUP, UEBAND, SPACE100K); 
	AR1000_RDSInt_ON  // Turn on RDS interrupt  if you want
	
	// DEMO: the scan function 
	//
	// use the native seek capibility of AR1000 to accomplish  scan function 
	//	
	AR1000_RDSInt_OFF // Remeber to OFF RDS Interrupt before seek and tune , if you are using RDS Interrupt
	val = AR1000_I2C_SCAN(SEEKUP, UEBAND, SPACE100K);
	AR1000_RDSInt_ON  // Turn on RDS interrupt  if you want
	// totally  "val" stations are found  by scan !

	// DEMO: standby mode
	AR1000_I2C_STANDBY();
	
	//DEMO:wakeup 
	AR1000_I2C_WAKEUP(981); // wake up and tune to 98.1MHz

	return;
}


void AR1000_init(void)
{
 
	char Cnt1; // init R1, R2, ....R17 then R0
    unsigned int status;

	Reg_Data[0].i=AR1000reg[0]&0xFFFE;
	AR1000_I2C_Write_Data(0);
	
  	for(Cnt1=1;Cnt1<18;Cnt1++)
  	{
  		Reg_Data[Cnt1].i=AR1000reg[Cnt1]; 
  		AR1000_I2C_Write_Data(Cnt1);

	}
	
	Reg_Data[0].i=AR1000reg[0];
	AR1000_I2C_Write_Data(0);
	
	//Power-On Calibration begins
	// then wait for STC flag
	// maybe you need to delay for a while
	// delay ( 100 ms )
	status = AR1000_I2C_Read_Data(ADDR_STATUS);
	status &=MASK_STC; // check STC flag 
	while( status == 0)
	{
		// maybe you can delay for a while
		// delay ( 100 ms )
		status = AR1000_I2C_Read_Data(ADDR_STATUS);
		status &=MASK_STC; // check STC flag 
	}
	//Power-On Calibration Ends

	//SetAR1000_volume(19);	// max. output is recommended !! it is already set in the default register setting
						// you dont need to set it again
	
  	return;
}

void AR1000_I2C_TUNE_HiLo(unsigned int FreqKHz)// unsigned int band, unsigned char space)
{
  unsigned int status;
  unsigned int flag;
  unsigned int rssi;
  
  AR1000_MUTE_ON   // Set Muto ON before TUNE
  AR1000_I2C_Write_Data(1);
  
  AR1000_SEEK_OFF;	//clear SEEK 
  //Reg_Data[3].BIT.B13=space;  // set SPACE 
  //Reg_Data[3].i = (Reg_Data[3].i & 0xE7FF) | band;  // Set BAND
  AR1000_I2C_Write_Data(3);

  //Read Low-Side LO Injection
  //R11 --> clear  D15,  clear D0/D2,  D3 is the same as default
  Reg_Data[11].i = Reg_Data[11].i&0x7FFA; 
  AR1000_I2C_Write_Data(11);
  
  //TUNE to FreqKHz with current setting
  SetAR1000_Freq2CHAN(FreqKHz); // this function will turn on TUNE 
 
  // TUNE  begins
  // then wait for STC flag
  
  // maybe you need to delay for a while
  // delay ( 100 ms )
  status = AR1000_I2C_Read_Data(ADDR_STATUS);
  flag = status & MASK_STC; // check STC flag 
  while( flag == 0)
  {
		// maybe you can delay for a while
		// delay ( 100 ms )
		status = AR1000_I2C_Read_Data(ADDR_STATUS);
		flag = status & MASK_STC; // check STC flag 
  }
  //Low-side TUNE Ends 
  
  status = AR1000_I2C_Read_Data(ADDR_RSSI);
  rssi = (status & MASK_RSSI);

  //Read Hi-Side LO Injection
  // R11-->set D15, set D0/D2,  D3 is the same as default
  Reg_Data[11].i = Reg_Data[11].i|0x8005;
  AR1000_I2C_Write_Data(11);
  //TUNE to FreqKHz with current setting
  SetAR1000_Freq2CHAN(FreqKHz); // this function will turn on TUNE 
 
  // TUNE  begins
  // then wait for STC flag
  
  // maybe you need to delay for a while
  // delay ( 100 ms )
  status = AR1000_I2C_Read_Data(ADDR_STATUS);
  flag = status & MASK_STC; // check STC flag 
  while( flag == 0)
  {
		// maybe you can delay for a while
		// delay ( 100 ms )
		status = AR1000_I2C_Read_Data(ADDR_STATUS);
		flag = status & MASK_STC; // check STC flag 
  }
  //High-side TUNE Ends 
  
  status = AR1000_I2C_Read_Data(ADDR_RSSI);
  rssi = rssi- (status & MASK_RSSI);	
  if (rssi < 0) //errata in 0.82
  { 	
	// LO
	// R11--> clear D15, set D0/D2, D3 is the same as default
	Reg_Data[11].i = (Reg_Data[11].i&0x7FFF)|0x0005; 
	AR1000_I2C_Write_Data(11);
  }else{ 
	//HI
	//R11-->  set D15, clear D0/D2, D3 is the same as default
	Reg_Data[11].i = (Reg_Data[11].i|0x8000)&0xFFFA; 
	AR1000_I2C_Write_Data(11);
  }
  
  
  //fine-tune !!
  //TUNE to FreqKHz with current setting
  SetAR1000_Freq2CHAN(FreqKHz); // this function will turn on TUNE 
 
  // TUNE  begins
  // then wait for STC flag
  
  // maybe you need to delay for a while
  // delay ( 100 ms )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级一区二区三区| 国产又黄又大久久| 一区二区三区在线不卡| 亚洲三级电影网站| 亚洲四区在线观看| 亚洲免费观看视频| 亚洲色图丝袜美腿| 亚洲一区二区三区四区在线观看 | 日韩久久久久久| 日韩一区二区中文字幕| 精品欧美久久久| 国产婷婷色一区二区三区四区| 久久久天堂av| 国产精品午夜久久| 国产精品久99| 伊人开心综合网| 一区二区三区波多野结衣在线观看| 一区二区欧美国产| 丝袜国产日韩另类美女| 老司机精品视频一区二区三区| 精品一区二区三区免费| 国产一区二区三区黄视频 | 国产女主播视频一区二区| 中文字幕av一区二区三区高| 亚洲国产精品传媒在线观看| 中文字幕一区二区三区四区不卡 | 岛国av在线一区| 不卡电影一区二区三区| 色偷偷88欧美精品久久久| 欧美喷潮久久久xxxxx| 欧美一区二区私人影院日本| 精品国产sm最大网站免费看| 国产精品久久毛片| 一区二区三区.www| 久久超碰97人人做人人爱| 国产成人在线看| 色婷婷av一区二区三区软件| 91精品国产色综合久久ai换脸 | 欧美色精品在线视频| 一区二区在线看| 久久99精品国产.久久久久| 国产成人免费在线视频| 欧美日韩中文字幕一区| 久久综合狠狠综合久久激情 | 奇米色一区二区三区四区| 国产精品综合久久| 欧美视频完全免费看| 日韩精品影音先锋| 中文字幕一区二区三| 亚洲成人av一区二区| 国产成人在线看| 欧美美女黄视频| 中日韩av电影| 免费成人深夜小野草| 97se亚洲国产综合自在线 | 亚洲小说春色综合另类电影| 麻豆精品一区二区综合av| jvid福利写真一区二区三区| 日韩一二在线观看| 综合自拍亚洲综合图不卡区| 麻豆精品视频在线| 色婷婷一区二区| 国产日韩成人精品| 蜜桃久久av一区| 欧洲亚洲精品在线| 国产精品色婷婷| 精品一区二区三区的国产在线播放| 99国产麻豆精品| 26uuu亚洲综合色欧美| 午夜精品影院在线观看| 成人性生交大片免费看视频在线 | 欧美日韩视频在线一区二区| 国产精品伦理在线| 六月丁香婷婷色狠狠久久| 欧美性一二三区| 国产精品无人区| 国产在线视频一区二区三区| 欧美日韩午夜精品| 一区二区三区av电影 | 精品卡一卡二卡三卡四在线| 亚洲第一二三四区| 91久久线看在观草草青青| 国产精品免费网站在线观看| 国产精品资源在线看| 久久综合国产精品| 九九精品一区二区| 日韩精品一区二区三区中文不卡| 天天操天天综合网| 欧美影院一区二区| 亚洲精品免费一二三区| 99v久久综合狠狠综合久久| 国产农村妇女毛片精品久久麻豆 | 久久99国产乱子伦精品免费| 欧美二区三区91| 亚洲综合另类小说| 日本乱人伦aⅴ精品| 亚洲人成小说网站色在线| 97久久精品人人澡人人爽| 国产精品毛片高清在线完整版| 国产mv日韩mv欧美| 国产视频一区在线观看| 国产高清在线精品| 国产欧美精品区一区二区三区| 国产伦精品一区二区三区在线观看| 成人高清在线视频| 久久免费美女视频| 亚洲黄色免费网站| 一区二区成人在线视频 | 国产精品一二三在| 久久综合五月天婷婷伊人| 久久精品国产免费| 精品久久久久久久久久久院品网| 精品午夜一区二区三区在线观看| 日韩美一区二区三区| 国内精品第一页| 中文字幕不卡三区| 99re热视频精品| 亚洲午夜久久久久久久久电影院 | 久久九九久精品国产免费直播| 国产麻豆91精品| 国产精品国产三级国产有无不卡 | 粉嫩aⅴ一区二区三区四区| 日本一区二区不卡视频| 一本到三区不卡视频| 一区二区三区免费看视频| 欧美日产在线观看| 蜜桃一区二区三区四区| 亚洲精品一区二区三区影院| 成人免费视频免费观看| 综合在线观看色| 欧美日韩在线精品一区二区三区激情| 亚洲mv大片欧洲mv大片精品| 日韩你懂的在线播放| 成人精品一区二区三区中文字幕 | 成人午夜短视频| 亚洲女爱视频在线| 欧美人狂配大交3d怪物一区| 精品制服美女久久| 国产精品电影一区二区三区| 91黄色激情网站| 麻豆精品视频在线观看免费| 欧美激情一二三区| 色综合天天综合网天天看片| 日韩国产精品久久久久久亚洲| 久久久精品影视| 色综合中文字幕国产| 日韩国产精品久久久久久亚洲| 久久精品在线观看| 91久久香蕉国产日韩欧美9色| 蜜桃久久av一区| 亚洲欧美电影院| 欧美大片在线观看| 色94色欧美sute亚洲线路一久| 美女免费视频一区二区| 中文字幕在线不卡国产视频| 91麻豆精品国产91久久久久| 国产精品一区二区久久不卡| 一区二区三区国产精华| 精品国内片67194| 在线免费一区三区| 国产精品18久久久久久久久| 亚洲一区在线播放| 国产免费观看久久| 欧美一区二区人人喊爽| av不卡在线播放| 日本不卡视频一二三区| 亚洲人成网站色在线观看| 精品国产制服丝袜高跟| 欧美亚洲综合另类| 粉嫩aⅴ一区二区三区四区| 热久久一区二区| 亚洲在线中文字幕| 国产欧美日韩亚州综合 | 亚洲美女区一区| 久久久www成人免费无遮挡大片| 欧美三级电影网| 成人黄色在线看| 黑人巨大精品欧美一区| 午夜精品久久久久影视| 中文字幕一区二区在线播放| 精品国产91亚洲一区二区三区婷婷| 欧美亚洲一区二区在线观看| 丁香激情综合五月| 紧缚奴在线一区二区三区| 午夜影院在线观看欧美| 一区二区三区精品视频在线| 国产精品美日韩| 国产三级三级三级精品8ⅰ区| 欧美剧情片在线观看| 欧美亚洲自拍偷拍| 91成人免费在线| 91一区一区三区| 不卡的看片网站| 国产一区二区在线视频| 精品一区二区三区香蕉蜜桃| 日韩黄色在线观看| 日韩专区中文字幕一区二区| 亚洲综合自拍偷拍| 亚洲欧美日韩在线| 成人免费在线视频观看|