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

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

?? 72131-radio.txt

?? lc72131部分程序供參考學習 lc72131部分程序供參考學習
?? TXT
字號:


/*Radio tuner    PLL IC:SC72131  */
//---------------------------------------------------------------------------
// WR_SC72131_Addr
//  addr: the addr of the control register
// value: the valude to set to 
//---------------------------------------------------------------------------
static void WR_SC72131_Addr(byte addr)
{
   byte i;

  RadioTuner_PLL_CE = 0;
  RadioTuner_PLL_CLK = 1; 
  DelayNOP();
  	for (i = 8; i>0 ; --i)
  	  { 
   		 RadioTuner_PLL_CLK = 0;
    	 DelayNOP();

    		if (addr & 0x01) 
				PIN_TUNER_DI=1; 
			else 
				PIN_TUNER_DI=0;
    	addr >>= 1;

    	DelayNOP();

    	RadioTuner_PLL_CLK = 1;

    	DelayNOP();
  	 }
}




//---------------------------------------------------------------------------
// WR_SC72131
//  addr: the addr of the control register
// value: the valude to set to 
//---------------------------------------------------------------------------
static void WR_SC72131(	byte addr, dword value	)
{
	register byte i;   									
  	WR_SC72131_Addr(addr); 			// Send the addr byte first 
  	RadioTuner_PLL_CE = 1;
 	DelayNOP();   								  
  	for (i = 24; i>0; --i)			// Send the control value in following
  		{ 
    		RadioTuner_PLL_CLK = 0;
    		DelayNOP();
    		if (value & 0x01) 
				PIN_TUNER_DI=1; 
			else 
				PIN_TUNER_DI=0;
    		value >>= 1;
    		DelayNOP();
    		RadioTuner_PLL_CLK = 1;
    		DelayNOP();
  		}

  	RadioTuner_PLL_CE = 0;
}




//---------------------------------------------------------------------------
// Tuner_Initialize
//---------------------------------------------------------------------------
/*tuner Initialize*/
void Tuner_Initialize(void)
{
  b_amstep   = Read_EEPROM(EE_AMSTEP) & 0x01;
  band       = Read_EEPROM(EE_BAND) & 0x01;

  cur_count[band] = Read_EEPROM(EE_CURCNT_LOW) + Read_EEPROM(EE_CURCNT_HIGH) * 0x100;

  Tuner_Set_Frequency_Int();

  dwPLL_Shadow_IN2 |= BO2_ON;           // Unmute
  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  
}

//-----------------------
// Tuner_Shutdown
//-----------------------
void Tuner_Shutdown(BOOL bonoff)
{

  if (bonoff)
    {

      	WR_SC72131(MODE_IN1, (dwPLL_Shadow_IN1 & 0x0fffff) | PLL_OFF_REF);  
  	}
  else
  	{
    	WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  	}
}

/* Tuner_Set_AMStep	*/

BOOL Tuner_Set_AMStep(byte ctrl)
{
   byte INQUIRE;

  if (ctrl != INQUIRE)
   {
    b_amstep = ! b_amstep;
    Write_EEPROM(EE_AMSTEP, b_amstep);
   }

  return b_amstep;
}

//--------------------------
// Tuner_Set_FMStep
//--------------------------
BOOL Tuner_Set_FMStep(byte ctrl)
{

  if (ctrl != INQUIRE)
  	{
    	b_fmstep = ! b_fmstep;
  	}

  return b_fmstep;
}

//--------------------------
// Tuner_Set_Band
//--------------------------
byte Tuner_Set_Band( byte ctrl, Word *freq)
{

  if (ctrl != INQUIRE)
  
   	{

    	Temp_Mute(1);

    	if (band != BAND_AM) band = BAND_AM; else band = BAND_FM;   // 0: am, 1: fm

    	Write_EEPROM(EE_BAND, band);
  
    	Tuner_Set_Frequency_Int();
    
    	dwPLL_Shadow_IN2 |= BO2_ON;           // Unmute

    	WR_SC72131( MODE_IN1, dwPLL_Shadow_IN1 );  
    	WR_SC72131( MODE_IN2, dwPLL_Shadow_IN2 );  

    	Temp_Mute(0);
 	 }
  
  *freq = (Count_To_Freq());
  
  return band;
}

//-------------------------
// Tuner_Set_Mono
//-------------------------
BOOL Tuner_Set_Mono(byte ctrl)
{

  if (ctrl != INQUIRE)
  {
     Temp_Mute(1);
	 bST_MONO = ! bST_MONO;	
     dwPLL_Shadow_IN2 &= ~BO3_ON;
	  
    if (bST_MONO) 
		{
			dwPLL_Shadow_IN2 |= BO3_ON;				 // Stereo
		}    
  
  													//  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
    WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  

    Temp_Mute(0);
  }

  return bST_MONO;
}

//--------------------------
// Tuner_Save_Station
//--------------------------
void Tuner_Save_Station(byte station)
{
   byte ee_addr;

  if (station > MAX_PRESET_NUMBER) 
     station = MAX_PRESET_NUMBER; 

     ee_addr = EE_PRESET_BASE + band * (MAX_PRESET_NUMBER + 1) * 2 + station *2;

  Write_EEPROM(ee_addr, cur_count[band]/0x100); 
  Write_EEPROM(ee_addr +1, cur_count[band]&0xff);
}

//--------------------------
// Tuner_Restore_Station
//--------------------------
Word Tuner_Restore_Station(byte station)
{
	byte ee_addr;

  	Temp_Mute(1);

  	if (station > MAX_PRESET_NUMBER)
		 station = MAX_PRESET_NUMBER; 

  		 ee_addr = EE_PRESET_BASE + band * (MAX_PRESET_NUMBER + 1) * 2 + station *2;

  		 cur_count[band]= Read_EEPROM(ee_addr) * 0x100 + Read_EEPROM(ee_addr +1);
  
  Tuner_Set_Frequency_Int();

  dwPLL_Shadow_IN2 |= BO2_ON;           // Unmute
  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  

  // save the current count
  Write_EEPROM(EE_CURCNT_LOW, cur_count[band] & 0xff); 
  Write_EEPROM(EE_CURCNT_HIGH, cur_count[band] >> 8);

  Temp_Mute(0);

  return (Count_To_Freq());
}

//-------------------------
// Tuner_Set_Frequency
//-------------------------
Word Tuner_Set_Frequency(byte ctrl, Word freq){
BAND_INFO code *pBInfo;

  switch(band){
    case BAND_AM:
      	if (b_amstep) 
	  		pBInfo = &BandInfo_AM_10KHz;
	 	else 
	 		pBInfo = &BandInfo_AM_9KHz; 
	 	break;

    case BAND_FM:
      	if (b_fmstep) 
	  		pBInfo = &BandInfo_FM_100KHz;
	  	else 
	  		pBInfo = &BandInfo_FM_50KHz; 
		break;

    case BAND_SW:
      	break;
  }

  switch (ctrl)
  {
    case INQUIRE:
      return (Count_To_Freq()); 
	  break;
    case UP:
      cur_count[band] += pBInfo -> CntStep; 
	  break;

    case DOWN:
      cur_count[band] -= pBInfo -> CntStep;
	   break;

    case SET:
      	if ((band == BAND_AM) || (band == BAND_SW))		 //return cur_count[band] * pBInfo -> FRef - 450;
	  		{
        
        		cur_count[band] = (freq + 450) / (pBInfo -> FRef);
      		}
     	else 
	  		{														//return cur_count[band] * ((FM_FREF *100)/1000) - 1070;
        
        		cur_count[band] = ((freq + 1070) * 1000) / (FM_FREF *100);
      		}
      	break;
  }

  Tuner_Set_Frequency_Int();

  dwPLL_Shadow_IN2 |= BO2_ON;           // Unmute

  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  

  // save the current count
  Write_EEPROM(EE_CURCNT_LOW, cur_count[band] & 0xff); Write_EEPROM(EE_CURCNT_HIGH, cur_count[band] >> 8);

  return (Count_To_Freq());
}

//------------------------
// Tuner_Step
//---------------------------------------------------------------------------
Word Tuner_Step(byte ctrl)
{

  if (ctrl != SET)
  	return Tuner_Set_Frequency(ctrl, 0);
}

//---------------------------------------------------------------------------
// Tuner_Scan
//---------------------------------------------------------------------------
int Tuner_Scan(byte ctrl)
{
	BAND_INFO code *pBInfo;
Word temp;
register byte j;

  switch(band){
    case BAND_AM:
      	if (b_amstep)
			 pBInfo = &BandInfo_AM_10KHz; 
	  	else 
			 pBInfo = &BandInfo_AM_9KHz; 
		break;

    case BAND_FM:
      	if (b_fmstep)
	  	 	pBInfo = &BandInfo_FM_100KHz; 
	  	else 
			pBInfo = &BandInfo_FM_50KHz; 
	  	break;

    case BAND_SW:
      	break;
  }

  if (ctrl == INQUIRE)
  	{
    	return (Count_To_Freq());
  	}
  else if (ctrl == UP)
  	{
    cur_count[band] += pBInfo -> CntStep;
  	}
  else if (ctrl == DOWN)
  	{ 
    cur_count[band] -= pBInfo -> CntStep;
  	}

//  Temp_Mute(1);

  Tuner_Set_Frequency_Int();

  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  
  
  // Wait PLL Lock -----------------------------------------------------------
  Pause(1);                    //
  
  for (j=0; j<255; j++)
  	{
    	if (PIN_TUNER_DO)break;
  }

  dwPLL_Shadow_IN2 &= DO_MODE_MASK;        // set DO mode, end uc
  dwPLL_Shadow_IN2 |= DO_MODE_END_UC;

  dwPLL_Shadow_IN1 |= CTE_ON;            // IF count start
  
  WR_SC72131(MODE_IN1, dwPLL_Shadow_IN1);  
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  

  // Wait Gate over -----------------------------------------------------
  for (j=0; j<10; j++)
  	{
   	 	if (!PIN_TUNER_DO) break;          // break when gate ends
    	os_wait2(K_TMO, 1);
  	}

                                          // Gate time over
  temp = Read_72131() & 0x0fffff;

  dwPLL_Shadow_IN2 |= BO2_ON;             // Unmute
  WR_SC72131(MODE_IN2, dwPLL_Shadow_IN2);  

  // save the current count
  Write_EEPROM(EE_CURCNT_LOW, cur_count[band] & 0xff); Write_EEPROM(EE_CURCNT_HIGH, cur_count[band] >> 8);

  if ((temp >= pBInfo -> IFCntMin) && (temp <= pBInfo -> IFCntMax))
  	{
    	return -(Count_To_Freq());
  	}
  else 
  	{
    return (Count_To_Freq());
 	 }
}

//---------------------
// Tuner_Get_Stereo
//---------------------
BOOL Tuner_Get_Stereo(void){

  if (band == BAND_FM) 
  	{
    	return (!(Read_72131() & 0x800000));
  	}
  else 
    	return 0;
}

//-------------------------
// Tuner_Set_Frequency_Int
//-------------------------
static void Tuner_Set_Frequency_Int(void){
BAND_INFO code *pBInfo;

  switch(band){
    case BAND_AM:
      	if (b_amstep) 
	  		pBInfo = &BandInfo_AM_10KHz;
	  	else 
	  		pBInfo = &BandInfo_AM_9KHz; 
	 	break;


    case BAND_FM:
      	if (b_fmstep)
		 	pBInfo = &BandInfo_FM_100KHz;
		else
		  	pBInfo = &BandInfo_FM_50KHz;
		break;


    case BAND_SW:
      break;
  }

  dwPLL_Shadow_IN1 = 0; dwPLL_Shadow_IN2 = 0;

  // Check Boundary -----------------------------------------------------
  if (cur_count[band] > pBInfo -> CntMax){
    cur_count[band] = pBInfo -> CntMin;       // Cycling
  }
  else if (cur_count[band] < pBInfo -> CntMin){
    cur_count[band] = pBInfo -> CntMax;       // Cycling
  }

  // IN2 Mode -----------------------------------------------------------
  dwPLL_Shadow_IN2 |= GATE_TIME_32MS;          // Gate Time = 4ms
  dwPLL_Shadow_IN2 |= 0x100000;            // IFS

  if (band == BAND_AM)
  	{                // Set Band 
    	dwPLL_Shadow_IN2 |= BO1_ON; 
  	}
  else if (band == BAND_FM)
  	{
    	dwPLL_Shadow_IN2 |= BO4_ON;
  	}
    
  if (!bST_MONO) 
  	{
  		dwPLL_Shadow_IN2 |= BO3_ON;
	}    // Stereo

//  dwPLL_Shadow_IN2 &= DO_MODE_MASK;
  dwPLL_Shadow_IN2 |= DO_MODE_UNLOCK;          //

  // IN1 Mode -----------------------------------------------------------

  if (band == BAND_AM)
  	{                // Set Frequency
    	dwPLL_Shadow_IN1 |= (cur_count[band] << 4); 
  	}
  else 
  	{
    	dwPLL_Shadow_IN1 |= cur_count[band];       
  	}

  dwPLL_Shadow_IN1 |= pBInfo -> DivMode;        // Set DIv Mode
  dwPLL_Shadow_IN1 |= pBInfo -> DivRefPara;      // Set DIV Ref Para
}

//-----------------------
// Count_To_Freq
//-----------------------
static Word Count_To_Freq(void){
BAND_INFO code *pBInfo;

  switch(band){
    case BAND_AM:
      	if (b_amstep) 
	  		pBInfo = &BandInfo_AM_10KHz; 
		else 
			pBInfo = &BandInfo_AM_9KHz; 
		break;

    case BAND_FM:
      	if (b_fmstep) 
	  		pBInfo = &BandInfo_FM_100KHz; 
		else 
			pBInfo = &BandInfo_FM_50KHz; 
		break;

    case BAND_SW:
      	break;
  }

  if ((band == BAND_AM) || (band == BAND_SW))
  	{
    	return cur_count[band] * pBInfo -> FRef - 450;
  	}
  else 
  	{
    	return cur_count[band] * ((FM_FREF *100)/1000) - 1070;
  	}
}


//-------------------------------
// Read_LC72131
//  addr: the addr of the control register
// return value 
//-------------------------------
static dword Read_72131(void)
{
register byte i;
dword temp = 0;

 // Send the addr byte first ------------//
  WR_SC72131_Addr(MODE_OUT);

  RadioTuner_PLL_CE = 1;
  DelayNOP();

 // read the value dword ------------//
  for (i=24; i>0; --i){
    RadioTuner_PLL_CLK = 0;

    DelayNOP();

    temp <<= 1;
    if (PIN_TUNER_DO) temp |= 1;

    RadioTuner_PLL_CLK = 1;
    DelayNOP();
  }

  RadioTuner_PLL_CE = 0;

  return temp;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看成人短视频| 国产露脸91国语对白| 中文在线一区二区| 2021中文字幕一区亚洲| 欧美r级在线观看| 亚洲天堂2014| 国产精品视频九色porn| 中文字幕欧美日本乱码一线二线| 精品第一国产综合精品aⅴ| 欧美电视剧在线观看完整版| 91精品国产综合久久久蜜臀粉嫩| 欧美亚日韩国产aⅴ精品中极品| 欧美丝袜丝交足nylons| 欧美区一区二区三区| 在线播放视频一区| 日韩精品一区二区三区三区免费| 亚洲精品一区二区三区蜜桃下载| 久久久国产精品麻豆| 中文字幕佐山爱一区二区免费| 自拍偷自拍亚洲精品播放| 亚洲欧美经典视频| 日本一不卡视频| 国产精品乡下勾搭老头1| 北条麻妃一区二区三区| 在线观看视频一区| 日韩午夜电影av| 欧美激情艳妇裸体舞| 一区二区视频在线| 日本免费新一区视频| 国产一区二区成人久久免费影院| 波多野结衣中文字幕一区| 欧美三级欧美一级| 久久久精品蜜桃| 亚洲国产人成综合网站| 国产一区美女在线| 91传媒视频在线播放| 久久影院电视剧免费观看| 亚洲欧美日本在线| 久久丁香综合五月国产三级网站| 不卡的av在线| 欧美xingq一区二区| 一色桃子久久精品亚洲| 日韩专区欧美专区| 91丨九色丨黑人外教| 欧美一区欧美二区| 亚洲色图欧洲色图婷婷| 精品一区二区三区免费播放 | 国产精品午夜在线| 夜夜嗨av一区二区三区四季av| 精品一区二区三区久久久| 欧美午夜精品免费| 国产午夜精品一区二区三区视频 | 国产麻豆视频精品| 欧美日韩国产一级片| 中文字幕一区二区在线观看| 日本欧美韩国一区三区| 91蜜桃婷婷狠狠久久综合9色| 久久天堂av综合合色蜜桃网| 日韩综合小视频| 欧美色视频一区| 亚洲婷婷在线视频| 国产成人av一区二区| 欧美精品一区二区高清在线观看| 亚洲第一主播视频| 欧美三级电影在线观看| 亚洲丝袜精品丝袜在线| 成人精品电影在线观看| 337p日本欧洲亚洲大胆精品| 免费在线观看视频一区| 制服丝袜亚洲网站| 日韩不卡一区二区| 91超碰这里只有精品国产| 亚洲成av人片观看| 欧美日韩成人综合天天影院| 亚洲已满18点击进入久久| 欧美一区二区啪啪| 日日摸夜夜添夜夜添亚洲女人| 一本色道a无线码一区v| 亚洲久草在线视频| 色婷婷av一区二区三区大白胸| 亚洲理论在线观看| 欧洲激情一区二区| 亚洲高清免费观看高清完整版在线观看| 91亚洲大成网污www| 亚洲黄色尤物视频| 欧美日韩精品一区二区天天拍小说 | 欧美一级xxx| 老司机精品视频在线| 日韩欧美一区二区不卡| 免费看日韩a级影片| 日韩欧美二区三区| 国产麻豆一精品一av一免费 | 国产麻豆午夜三级精品| 国产欧美日韩麻豆91| 不卡视频在线看| 亚洲人午夜精品天堂一二香蕉| 欧美亚洲日本一区| 日产欧产美韩系列久久99| 国产91清纯白嫩初高中在线观看 | 欧美理论片在线| 亚洲小说春色综合另类电影| 欧美一区二区三区播放老司机| 久久99精品国产麻豆婷婷洗澡| 久久久国产一区二区三区四区小说 | 成人少妇影院yyyy| 国产精品色婷婷久久58| 欧美一a一片一级一片| 天使萌一区二区三区免费观看| 日韩三级高清在线| 99久久久免费精品国产一区二区 | 日韩高清欧美激情| 久久精品视频免费观看| 在线日韩一区二区| 国产在线精品一区二区| 亚洲精品写真福利| 久久综合久色欧美综合狠狠| 91免费看视频| 韩国成人在线视频| 亚洲国产精品久久不卡毛片 | proumb性欧美在线观看| 青青国产91久久久久久| 中文字幕一区av| 精品少妇一区二区三区| 91免费观看视频在线| 国产一区二区三区国产| 视频精品一区二区| 中文字幕亚洲一区二区av在线 | 欧美成人a∨高清免费观看| 成人av在线看| 久久99国产乱子伦精品免费| 亚洲黄色片在线观看| 日本一区二区三区四区| 欧美一区二区三区系列电影| 一本色道综合亚洲| 懂色中文一区二区在线播放| 六月婷婷色综合| 五月婷婷激情综合| 亚洲欧美一区二区不卡| 久久亚洲精精品中文字幕早川悠里| 欧美揉bbbbb揉bbbbb| 成人美女视频在线看| 经典一区二区三区| 捆绑调教美女网站视频一区| 三级在线观看一区二区| 亚洲成人你懂的| 亚洲综合图片区| 亚洲免费观看高清在线观看| 国产精品电影院| 国产精品伦一区| 国产精品美女久久久久aⅴ | 婷婷丁香激情综合| 一区二区欧美精品| 亚洲最色的网站| 亚洲一区av在线| 婷婷国产在线综合| 日本美女视频一区二区| 视频一区视频二区中文| 天天射综合影视| 日韩福利电影在线| 蜜臀va亚洲va欧美va天堂| 美女被吸乳得到大胸91| 日本成人超碰在线观看| 蜜臀av一区二区在线免费观看| zzijzzij亚洲日本少妇熟睡| 成人深夜视频在线观看| 99精品视频免费在线观看| 欧洲人成人精品| 91精品国产黑色紧身裤美女| 日韩视频免费观看高清完整版在线观看| 欧美另类久久久品| 26uuu欧美日本| 日韩一区精品字幕| 精品在线你懂的| voyeur盗摄精品| 欧美日韩精品专区| 精品91自产拍在线观看一区| 久久精品亚洲乱码伦伦中文| 国产精品久久久久久久午夜片| 亚洲天堂免费看| 日本成人在线电影网| 夫妻av一区二区| 在线看国产日韩| 精品国产一区二区三区久久影院 | 国产成人av资源| 色菇凉天天综合网| 日韩欧美中文字幕一区| 中文字幕av在线一区二区三区| 亚洲私人影院在线观看| 日韩电影一区二区三区| 福利91精品一区二区三区| 欧美揉bbbbb揉bbbbb| 国产欧美视频一区二区三区| 一区二区三区不卡视频在线观看| 日韩高清国产一区在线| 丁香六月久久综合狠狠色| 欧美一区二区在线视频| 中文字幕日韩精品一区| 黄页视频在线91| 欧美色电影在线| 亚洲欧洲韩国日本视频|