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

📄 tuning.lst

📁 全数字高清电视数字调谐器
💻 LST
📖 第 1 页 / 共 2 页
字号:
 197   3      
 198   3             flo1=lo1i*fref;
 199   3             flo2_desired=flo1- rf_freq-fif2;
 200   3             n_lo1adjust=n_lo1adjust+1;
 201   3             }
 202   2          else return;
 203   2      
 204   2         }
 205   1       while(1);
 206   1       }
 207          
 208           
 209           bit  is_spurin_band()//假信号检查
 210           {
 211   1        float f_test; 
 212   1        char n1;
 213   1        char n2;
 214   1        char n_max=5;
 215   1        
 216   1        n1=1;  
 217   1        do{  
 218   2              n2=-n1;
 219   2              f_test=n1*(flo1-flo2_desired);
 220   2               do{
 221   3                    n2=n2-1;
 222   3                    f_test=f_test-flo2_desired;
 223   3      
 224   3                    if(fabs((fabs(f_test))-fif2)<(f_ifbw_width/2))
 225   3                        return(1);
 226   3                    else
 227   3                        {
 228   4                         if((f_test>(flo2_desired-fif2-f_ifbw_width))|(n2>-n_max))
 229   4                               continue;
 230   4                         else break;                     
 231   4                        }
 232   3                   }
 233   2                while(1);
 234   2             
 235   2                    n1=n1+1;
 236   2                    if(n1<n_max)
 237   2                        continue;
 238   2                    else return (0);
 239   2                          
 240   2            }
 241   1        while(1);
C51 COMPILER V7.01  TUNING                                                                 08/17/2003 17:24:40 PAGE 5   

 242   1       }
 243          
 244          void select_vco()//以flo1的频率初步选择vco1 步骤3.3  -最优vco1选择
 245          {
 246   1       if(1128.75<=flo1<1291.50)
 247   1         sel=4;
 248   1       else if(1291.50<=flo1<1449.00)  
 249   1         sel=3;
 250   1       else if(1449.00<=flo1<1617.00)  
 251   1          sel=2;
 252   1       else if(1617.00<=flo1<1790.25)   
 253   1          sel=1;
 254   1       else if(1790.25<=flo1<1958.25) 
 255   1           sel=0;
 256   1       else if(flo1<1128.75 )
 257   1            sel=4;
 258   1       else sel=0;
 259   1      }
 260          
 261          void calculate_lon()//步骤3.4 计算lo1n  lo1a  lo2i  lo2n  lo2a  NUM  fnon
 262          {
 263   1      unsigned int as;
 264   1      
 265   1      
 266   1      lo1n=(unsigned int)(lo1i/8);
 267   1      lo1a=lo1i-(lo1n*8);
 268   1      lo2i=(unsigned int)(flo2_desired/fref);
 269   1      lo2n=(unsigned int)(lo2i/8);
 270   1      lo2a=lo2i-(lo2n*8);
 271   1      num=(unsigned int)((flo2_desired/fref-lo2i)*3780);
 272   1      step=3780*fstep/fref;
 273   1      as=(unsigned int)(num/step+1/2);
 274   1      num=step*as+1;
 275   1      fnon=7;
 276   1      }
 277          
 278          
 279          void  write_registers()//步骤3.5  -写寄存器
 280          {
 281   1      unsigned char reg[14];
 282   1      reg[0]=lo1n-1;
 283   1      reg[1]=((sel<<4)&0xf0)|(lo1a&0x0f);
 284   1      reg[2]=0x86;
 285   1      reg[3]=0;
 286   1      if(sel<2)
 287   1      reg[4]=128+48+fnon;
 288   1      else reg[4]=48+fnon;
 289   1      reg[5]=((lo2a<<5)&0xe0)|(lo2n-1);
 290   1      if( rf_freq<400)
 291   1       reg[6]=0xe4;
 292   1      else reg[6]=0xf4;
 293   1      reg[7]=8+xogc;
 294   1      reg[8]=0;
 295   1      reg[9]=0;
 296   1      reg[10]=0;
 297   1      reg[11]=num;
 298   1      reg[12]=128+((num>>8)&0x0f);
 299   1      reg[13]=0;
 300   1      write_a(tuning_address,0,reg,14);
 301   1      }
 302          
 303          
C51 COMPILER V7.01  TUNING                                                                 08/17/2003 17:24:40 PAGE 6   

 304          bit  check_lo_lock()//步骤3.6 -检查LO-PLL锁定  
 305          {
 306   1      unsigned char n_lock;
 307   1      unsigned char bdata lock;
 308   1      bit locka;
 309   1      bit lockb;
 310   1      
 311   1      n_lock=0;
 312   1      do
 313   1      {
 314   2      lock=i2c_read_a(tuning_address,status);
 315   2      locka=lock^1;
 316   2      lockb=lock^2;
 317   2      if(locka&lockb)
 318   2        return(1);
 319   2        n_lock++;
 320   2      delay1(2000);
 321   2      if(n_lock>10)
 322   2          return(0);
 323   2      }
 324   1      while(1);
 325   1      }
 326          
 327          
 328          bit optimize_vco()//步骤3.7 -优化VCO
 329          {
 330   1      unsigned char  tad1;
 331   1      unsigned char r;
 332   1      unsigned char t;
 333   1      unsigned char x;
 334   1      r=0;
 335   1      t=0;
 336   1      x=sel;
 337   1      do{ 
 338   2          tad1=i2c_read_a(tuning_address,tun_a_d);
 339   2          tad1=tad1&0x07;
 340   2         
 341   2           if((tad1==0)|(tad1==1))
 342   2              return(0);
 343   2           else {
 344   3                   if(tad1==2)
 345   3                      {
 346   4                       if(sel==0)
 347   4                       {
 348   5                         sel=x+1;
 349   5                         t++;
 350   5                         if(t>4)
 351   5                          {
 352   6                           #if(DEBUG)
 353   6                            printf("VCO优化 T>4\n");
 354   6                           #endif
 355   6                            return(1);
 356   6                          }
 357   5                         }
 358   4                       else         
 359   4                           sel--;             
 360   4                         }
 361   3                    else 
 362   3                        {
 363   4                        if(sel<4)
 364   4                          sel++;  
 365   4                        else 
C51 COMPILER V7.01  TUNING                                                                 08/17/2003 17:24:40 PAGE 7   

 366   4                        {
 367   5                          sel=x-1;
 368   5                          r++;
 369   5                            if(r>4)
 370   5                              {
 371   6                           #if(DEBUG)
 372   6                            printf("VCO优化 R>4\n");
 373   6                           #endif
 374   6                           return(1);
 375   6                            }
 376   5                          }
 377   4                         }               
 378   3                     }
 379   2             write_b(tuning_address,sel_lo1a, ((sel<<4)&0xf0)|(lo1a&0x0f));  
 380   2              delay1(1000);
 381   2              
 382   2            }
 383   1           while(1);
 384   1         }
 385          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2105    ----
   CONSTANT SIZE    =     66    ----
   XDATA SIZE       =     45      43
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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