⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jack.c

📁 LC72131 PLL C源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
			
			SET_GT0(1); //GT0=1; //64MS
			SET_GT1(1); //GT1=1; 
			SET_CTE(0); //CTE=0;
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			
			dly_tsk(20);

			do// check ul bit
			{
				looptime ++;
				if( looptime > 20 ) 
				break;  // timeout
				
				ldataup = 0;
				ldataup = read_24bit_outup_data();
				
				
			}while(!(ldataup&0x00100000)); // pll is locked?
			looptime = 0;
			
			/************************/          
			
			/****************************/
			
			dly_tsk(2);
			
			// radio station is exist?
			//if (ldataup&0x400000)  
			//if(c0&0x40) continue;
			if( TUNER_READ_DA ) continue;
			
			dly_tsk(2);
			SET_CTE(1);//CTE=1; 
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			dly_tsk(100);
			//NOP;
			
			do  // check if counter is over?
			{
				looptime++;
				
				
				if( looptime > 10 ) break;  // timeout
			}while(TUNER_READ_DA );
			looptime = 0;
			
			dly_tsk(2);
			ldataup=read_24bit_outup_data();   
			SET_CTE(0);//CTE=0;
			
			
			if((ldataup & 0x0fffff)>=0x6fc0 && (ldataup & 0x0fffff)<=0x7140)// 0x7080->450KHZ +/- 3k
			{
				//sensitivity
				SET_IFS(1); //IFS=1;
				
				break; 
			}     
#endif  

      }
  }
  autosearch_flag=FALSE;    
  
}	
void Fmautosearch( BYTE autosearch_status )
{
	BYTE looptime=0;
	UINT32 ldataup;
	//FM_TEMP_DATA = 87800;
	if(am_fm_flag == 4)//fm-->am_fm_flag = 0;
	{
		while(1) //autosearch must rotation for ever
		{       	         	  
			
			if( autosearch_status)
			{
				//if(autosearch_flag!=1) 	  //up
				//	return;
				
				FM_TEMP_DATA += 2; //gap = 2. 100K STEP
				FM_TEMP_SHOW_DATA += 100; //gap = 2. 100K STEP
				FM_REAL_DATA = FM_TEMP_DATA;          
				SET_IFSW(0);  //IFSW, 0: mute, 1: receive mode
				
				//FM_FREQ_MIN  0x7b2  //87.8MHZ, ref 25khz 
		 		//FM_FREQ_MAX  0x942  //108Mhz, ref 25khz
				
				if(FM_REAL_DATA>FM_FREQ_MAX/*108000*/)  //am max
				{
					FM_REAL_DATA=FM_FREQ_MAX/*108000*/;
					FM_TEMP_SHOW_DATA = 108000;
					break;
				}
			}
			else //if( !autosearch_status )
			{
				//if(autosearch_flag!=2) 	  //down
				//	return;

				FM_TEMP_DATA -= 2; //gap = 2. 100K STEP
				FM_TEMP_SHOW_DATA -= 100; //gap = 2. 100K STEP
				FM_REAL_DATA=FM_TEMP_DATA;
				SET_IFSW(0);  //IFSW=1;			             //mute               
				
				if(FM_TEMP_DATA<FM_FREQ_MIN/*87800*/)//Am min
				{
					FM_TEMP_DATA=FM_FREQ_MIN/*87800*/;
					FM_TEMP_SHOW_DATA = 87800;
					break;
				}
			}		 
			//FM_SHOW_DATA = FM_TEMP_SHOW_DATA;
			//FM_SHOW_DATA = FM_REAL_DATA;
			Test_curr(1,(BYTE)(FM_TEMP_SHOW_DATA/1000),(BYTE) ((FM_TEMP_SHOW_DATA%1000)/100),0);
			
#if 0
			//tuner.ambak=in1_data12;//in1_data12=tuner.ambak;       
	
			SET_R0(1);// REF CLOCK: 3KHZ
			SET_R1(1);
			SET_R2(0);
			SET_R3(0);
			
			SET_GT0(1); //GT0=1; //64MS
			SET_GT1(1); //GT1=1; 
			SET_CTE(0); //CTE=0;
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			
			dly_tsk(20);

			do// check ul bit
			{
				looptime ++;
				if( looptime > 20 ) 
				break;  // timeout
				
				ldataup = 0;
				ldataup = read_24bit_outup_data();
				
				
			}while(!(ldataup&0x00100000)); // pll is locked?
			looptime = 0;
			
			/************************/          
			
			/****************************/
			
			dly_tsk(2);
			
			// radio station is exist?
			//if (ldataup&0x400000)  
			//if(c0&0x40) continue;
			if( TUNER_READ_DA ) continue;
			
			dly_tsk(2);
			SET_CTE(1);//CTE=1; 
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			dly_tsk(100);
			//NOP;
			
			do  // check if counter is over?
			{
				looptime++;
				
				
				if( looptime > 10 ) break;  // timeout
			}while(TUNER_READ_DA );
			looptime = 0;
			
			dly_tsk(2);
			ldataup=read_24bit_outup_data();   
			SET_CTE(0);//CTE=0;
			
			
			if( ( (ldataup & 0x0fffff)>=0xa7200 ) && ( (ldataup & 0x0fffff)<=0xa7400 ))// a7300->10.7MHZ +/- 4k(40K) 
			{
				//sensitivity
				SET_IFS(1); //IFS=1;
				
				break; 
			}     	
			#endif
      }
	  
  }
  autosearch_flag=FALSE;    
  
}	 



void Amstepsearch( BYTE step_up_flag )
{
	BYTE looptime=0;
	UINT32 ldataup;
	if(am_fm_flag == 3)//am
	{
      	         	  
			
			if( step_up_flag)
			{
				//if(autosearch_flag!=1) 	  //up
				//	return;

				AM_TEMP_DATA += 0x30; // 3*3k step
				AM_REAL_DATA = AM_TEMP_DATA;          
				//SET_IFSW(0);  //IFSW, 0: mute, 1: receive mode
				
                //AM_FREQ_MAX  0x2b20 // 1620k
				//AM_FREQ_MIN  0x1440 // 522k
				
				if(AM_REAL_DATA>AM_FREQ_MAX)  //am max
				{
					AM_REAL_DATA=AM_FREQ_MAX;//AM_FREQ_MIN;
				}
			}
			else //if( autosearch_status)
			{
				//if(autosearch_flag!=2) 	  //down
				//	return;
                AM_TEMP_DATA -= 0x30;   //gap = 3; 3*3K step
				AM_REAL_DATA = AM_TEMP_DATA;
				//SET_IFSW(0);  //IFSW=1;			             //mute               
				
				if(AM_REAL_DATA<AM_FREQ_MIN)//Am min
				{
					AM_REAL_DATA=AM_FREQ_MIN;
				}
			}		 

			mode1_send_data = AM_REAL_DATA;
			SET_R0(0);// REF CLOCK: 3KHZ
			SET_R1(0);
			SET_R2(1);
			SET_R3(1);
			
			SET_GT0(1); //GT0=1; //64MS
			SET_GT1(1); //GT1=1; 
			SET_CTE(0); //CTE=0;


			mode2_send_24bit_data();
			mode1_send_24bit_data();
			#if 0			

			
			I2cDelay(2);
			
			
			I2cDelay(2);
			SET_CTE(1);//CTE=1; 
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			I2cDelay(100);
					
			I2cDelay(2);
			ldataup=read_24bit_outup_data();   
			SET_CTE(0);//CTE=0;
			
			
			if((ldataup & 0x0fffff)>=0x6fc0 && (ldataup & 0x0fffff)<=0x7140)// 0x7080->450KHZ +/- 3k
			{
				//sensitivity
				SET_IFS(1); //IFS=1;
				}
#endif  

      }
  autosearch_flag=FALSE;    
}	
void Fmstepsearch( BYTE step_up_flag )
{
	BYTE looptime=0;
	UINT32 ldataup;

	if(am_fm_flag == 4)//fm-->am_fm_flag = 0;
	{
    	         	  
			
			if( step_up_flag)
			{
				//if(autosearch_flag!=4) 	  //up
				//	return;
				
				FM_TEMP_DATA += 2; //gap = 2. 100K STEP
				FM_TEMP_SHOW_DATA += 100; //gap = 2. 100K STEP
				FM_REAL_DATA = FM_TEMP_DATA;          
				SET_IFSW(0);  //IFSW, 0: mute, 1: receive mode
				
				//FM_FREQ_MIN  0x7b2  //87.8MHZ, ref 25khz 
		 		//FM_FREQ_MAX  0x942  //108Mhz, ref 25khz
				
				if(FM_REAL_DATA>FM_FREQ_MAX/*108000*/)  //am max
				{
					FM_REAL_DATA=FM_FREQ_MAX/*108000*/;
					FM_TEMP_SHOW_DATA = 108000;
				}
			}
			else //if( !autosearch_status )
			{
				//if(autosearch_flag!=4) 	  //down
				//	return;

				FM_TEMP_DATA -= 2; //gap = 2. 100K STEP
				FM_TEMP_SHOW_DATA -= 100; //gap = 2. 100K STEP
				FM_REAL_DATA=FM_TEMP_DATA;
				SET_IFSW(0);  //IFSW=1;			             //mute               
				
				if(FM_TEMP_DATA<FM_FREQ_MIN/*87800*/)//Am min
				{
					FM_TEMP_DATA=FM_FREQ_MIN/*87800*/;
					FM_TEMP_SHOW_DATA = 87800;
				}
			}		 
			Test_curr(1,(BYTE)(FM_TEMP_SHOW_DATA/1000),(BYTE) ((FM_TEMP_SHOW_DATA%1000)/100),0);

	
			SET_R0(1);// REF CLOCK: 3KHZ
			SET_R1(1);
			SET_R2(0);
			SET_R3(0);
			
			SET_GT0(1); //GT0=1; //64MS
			SET_GT1(1); //GT1=1; 
			SET_CTE(0); //CTE=0;

			mode2_send_24bit_data();
			mode1_send_24bit_data();
			#if 0



			
			//dly_tsk(2);
			

			
			//dly_tsk(2);
			SET_CTE(1);//CTE=1; 
			mode2_send_24bit_data();
			mode1_send_24bit_data();
			dly_tsk(100);

			#if 0
			dly_tsk(2);
			ldataup=read_24bit_outup_data();   
			SET_CTE(0);//CTE=0;
			
			
			if( ( (ldataup & 0x0fffff)>=0xa7200 ) && ( (ldataup & 0x0fffff)<=0xa7400 ))// a7300->10.7MHZ +/- 4k(40K) 
			{
				//sensitivity
				SET_IFS(1); //IFS=1;
				
			}     	
			#endif
			#endif
	  
  }
  autosearch_flag=FALSE;    
  
}	 


void tuner_auto_search( BYTE autosearch_up_flag )
{
    if( autosearch_up_flag)  //auto search up
    {
        if( am_fm_flag == 3)//am
            Amautosearch( 1 );
        else if( am_fm_flag == 4)
            Fmautosearch( 1 );
    }
    else // autosearch_flag == 2, auto search down    
    {
        if( am_fm_flag == 3 )//am
            Amautosearch( 0 );
        else if(am_fm_flag == 4)
            Fmautosearch( 0 );
    }    
    
}
void init_ic(void)
{
	SET_GPIO_W(TUNER_CE|TUNER_CL|TUNER_DA|TUNER_READ_DA);
	SET_GPIO_HI(TUNER_CE|TUNER_CL|TUNER_DA|TUNER_READ_DA);
	
}
void init_value(void)
{
	mode1_send_data = 0x00;
	mode1_ctl_data = 0x00;
	mode2_send_data0 =0x00;	 
	mode2_send_data1 =0x00;	 
	mode2_send_data2 = 0x00;	 
}

void jack_main(void)
{
    init_ic();	
	init_value();

   // load_tuner_E2PROM();
	
	
	

	
    SET_IOC1(1);  //output mode;
    SET_IOC2(1);  //output mode;
    SET_IO1(0);   //high;
    SET_IO2(0);   //high;
    
    AM_FM_SELECT();             
    //while(1)
    {

		if(autosearch_flag)
		{
			tuner_auto_search(1);
			//write2mem=1;
		}
		
		}
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -