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

📄 autoadj.lst

📁 NT68521源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 234   2                      H_Difference = (H_Difference & 0xF0) >> 4;
 235   2                      if(Compare==0x01){
 236   3                              break; //H_Ref=H_Act
 237   3                      }
 238   2                      if(Compare==0x00){
 239   3      //                      if(H_Difference == 0x01)
 240   3      //                              break;
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 5   

 241   3                              HTotal = HTotal + H_Difference;
 242   3                              if(HTotal > 2048){
 243   4                                      i = 0xff;
 244   4                                      break;
 245   4                              }
 246   3                      }
 247   2                      if(Compare == 0x02){
 248   3      //                      if(H_Difference == 0x01)
 249   3      //                              break;
 250   3                              HTotal = HTotal - H_Difference;
 251   3                              if(HTotal < H_Ref){
 252   4                                      i = 0xff;
 253   4                                      break;
 254   4                              }
 255   3                      }
 256   2                      SetADC_PLL();
 257   2                      if((flag3 & BIT_1) != 0){
 258   3                              flag2 |= BIT_0;
 259   3                              return;
 260   3                      }
 261   2              }
 262   1              if(i == 0xff){
 263   2                      NonFullScreen = 1;
 264   2                      flag2 |= BIT_0;
 265   2              }
 266   1              else{
 267   2      #if 1
 268   2                      HTotal = (HTotal + 2) & 0xfffc;
 269   2      #else
                              HTotal = (HTotal + 1) & 0xfffe;
              #endif
 272   2                      SetADC_PLL();
 273   2                      if((flag3 & BIT_1) != 0){
 274   3                              flag2 |= BIT_0;
 275   3                              return;
 276   3                      }
 277   2              }
 278   1      }
 279          
 280          void AutoPhaseFineTune(void)
 281          {
 282   1      unsigned char   qq,yy,zz,uu,i;
 283   1      unsigned long   Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta;
 284   1      unsigned char   value;
 285   1              if((flag2 & BIT_0) != 0x00)
 286   1                      return;
 287   1      //-------------------------at color xx , calculate phase-------------------------
 288   1          Phase_1 = 0x00000000;   // (i-1)
 289   1          Phase_2 = 0x00000000;   // (i-2)
 290   1          Phase_Pre3 = 0x00000000;   // (pre sum)->(delta)->(now sum)
 291   1          Phase_Delta = 0xffffffff;   // (min delta)
 292   1      //      ADC_Phase =( ADC_Phase - 6) & 0x3F; // 3 is search range....
 293   1              qq = ADC_Phase;
 294   1      //      SetADC_Phase();
 295   1              WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
 296   1              Timer3 = 100;
 297   1      //      for(yy=1; yy<16; yy++){
 298   1              for(yy=1; yy<Repeat; yy++){
 299   2                      while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 300   3                              CheckModeChange();
 301   3                              if((flag2 & BIT_0) != 0)
 302   3                                      return;
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 6   

 303   3                      }
 304   2                      ADC_Phase = (qq + yy) & 0x3f;
 305   2                      SetADC_Phase();
 306   2                      WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
 307   2                      Timer3 = 100;
 308   2              Phase_Now3  = 0x00000000;
 309   2              for (zz=0x24; zz>0x20; zz--){
 310   3                      value = ReadIIC_HW(Scaler_Addr,zz);
 311   3                  Phase_Now3  = Phase_Now3 << 8;
 312   3                  Phase_Now3  = Phase_Now3 + value;
 313   3              }
 314   2                      i = (ADC_Phase - 1) & 0x3f;
 315   2              Phase_2 = Phase_1;  // Shift    
 316   2              Phase_1 = Phase_0;
 317   2              Phase_0 = Phase_Now3;
 318   2                      Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2); // Phase_Now3
 319   2                      if(yy < 4){
 320   3                              Phase_Pre3  = Phase_Now3;   // Phase_Pre3 = Phase_Now3
 321   3                      }
 322   2                      else{
 323   3                              if(Phase_Now3 > Phase_Pre3){
 324   4                                      Phase_Pre3  = Phase_Now3 - Phase_Pre3;
 325   4                              }
 326   3                              else{
 327   4                                      Phase_Pre3  = Phase_Pre3 - Phase_Now3;  // Phase_Pre3=delta
 328   4                              }
 329   3                              if(Phase_Pre3 < Phase_Delta){
 330   4                                      uu = i;           
 331   4                                      Phase_Delta = Phase_Pre3;
 332   4                              }
 333   3                              Phase_Pre3  = Phase_Now3;   // Phase_Pre3 = Phase_Now3
 334   3                      }     
 335   2              }
 336   1              ADC_Phase = (uu - 2) & 0x3f;
 337   1              SetADC_Phase();
 338   1      }
 339          
 340          void SetADC_Offset(unsigned char OffSet)
 341          {
 342   1      unsigned char i,j,k,m,n,value;
 343   1      unsigned long PhaseResult,Temp;
 344   1      //      WriteIIC_HW(Scaler_Addr,0x02,0x36);
 345   1      //      WriteIIC_HW(Scaler_Addr,0x04,0x35);
 346   1      //      WriteIIC_HW(Scaler_Addr,0x06,0x37);
 347   1              WriteIIC_HW(Scaler_Addr,0x26,0x00);
 348   1              WriteIIC_HW(Scaler_Addr,0x27,0x00);
 349   1              for(m=0; m<3; m++){
 350   2                      for(k=OffSet; k<128; k=k+8){
 351   3                              i = 0x0f + m;
 352   3                              WriteIIC_HW(Scaler_Addr,i,k);
 353   3                              WaitSetup(5);
 354   3                              Timer3 = 10;
 355   3                              i = 0x19 + m * 0x10;
 356   3                              WriteIIC_HW(Scaler_Addr,0x20,i);
 357   3                              while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 358   4                                      CheckModeChange();
 359   4                                      if((flag2 & BIT_0) != 0)
 360   4                                              return;
 361   4                              }
 362   3                              if(Timer3 == 0){
 363   4                                      flag2 |= BIT_0;
 364   4                                      return;
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 7   

 365   4                              }
 366   3                              j = 0;
 367   3                              Temp = 0;
 368   3                              for(i=0; i<8; i++){
 369   4                                      WriteIIC_HW(Scaler_Addr,0x24,i);
 370   4                                      value = ReadIIC_HW(Scaler_Addr,0x23);
 371   4                                      PhaseResult = value;
 372   4                                      PhaseResult <<= 8;
 373   4                                      value = ReadIIC_HW(Scaler_Addr,0x22);
 374   4                                      PhaseResult += value;
 375   4                                      PhaseResult <<= 8;
 376   4                                      value = ReadIIC_HW(Scaler_Addr,0x21);
 377   4                                      PhaseResult += value;
 378   4                                      if(PhaseResult > Temp){
 379   5                                              Temp = PhaseResult;
 380   5                                              j = i;
 381   5                                      }
 382   4                              }
 383   3                              if(Temp > 0x300){
 384   4                                      i = 0x0f + m;
 385   4                                      j = k+j;
 386   4                                      WriteIIC_HW(Scaler_Addr,i,j);
 387   4                                      break;
 388   4                              }
 389   3                      }
 390   2                      if(k == 128){
 391   3                              flag2 |= BIT_0;
 392   3                              return;
 393   3                      }
 394   2                      for(n=0; n<8; n++){
 395   3                              i = 0x0f + m;
 396   3                              WriteIIC_HW(Scaler_Addr,i,k+n);
 397   3                              WaitSetup(5);
 398   3                              Timer3 = 10;
 399   3                              i = 0x19 + m * 0x10;
 400   3                              WriteIIC_HW(Scaler_Addr,0x20,i);
 401   3                              while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 402   4                                      CheckModeChange();
 403   4                                      if((flag2 & BIT_0) != 0)
 404   4                                              return;
 405   4                              }
 406   3                              if(Timer3 == 0){
 407   4                                      flag2 |= BIT_0;
 408   4                                      return;
 409   4                              }
 410   3                              j = 0;
 411   3                              Temp = 0;
 412   3                              for(i=0; i<8; i++){
 413   4                                      WriteIIC_HW(Scaler_Addr,0x24,i);
 414   4                                      value = ReadIIC_HW(Scaler_Addr,0x23);
 415   4                                      PhaseResult = value;
 416   4                                      PhaseResult <<= 8;
 417   4                                      value = ReadIIC_HW(Scaler_Addr,0x22);
 418   4                                      PhaseResult += value;
 419   4                                      PhaseResult <<= 8;
 420   4                                      value = ReadIIC_HW(Scaler_Addr,0x21);
 421   4                                      PhaseResult += value;
 422   4                                      if(PhaseResult > Temp){
 423   5                                              Temp = PhaseResult;
 424   5                                              j = i;
 425   5                                      }
 426   4                              }
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 8   

 427   3                              if(j == 0){
 428   4                                      break;
 429   4                              }
 430   3                      }
 431   2                      i = 0x0f + m;
 432   2                      j = k+n;
 433   2                      WriteIIC_HW(Scaler_Addr,i,j);
 434   2              }
 435   1              Write24C16(0xfa,ReadIIC_HW(Scaler_Addr,0x0f));
 436   1              Write24C16(0xfb,ReadIIC_HW(Scaler_Addr,0x10));
 437   1              Write24C16(0xfc,ReadIIC_HW(Scaler_Addr,0x11));
 438   1      }
 439          
 440          void SetADC_Gain(unsigned char OffSet)
 441          {
 442   1      unsigned char i,j,k,m,n,value;
 443   1      unsigned long PhaseResult,Temp;
 444   1              WriteIIC_HW(Scaler_Addr,0x26,0x00);
 445   1              WriteIIC_HW(Scaler_Addr,0x27,0xf8);
 446   1              for(m=0; m<3; m++){
 447   2                      for(k=OffSet; k>7; k=k-8){
 448   3                              i = 0x02 + m * 2;
 449   3                              WriteIIC_HW(Scaler_Addr,i,k);
 450   3                              WaitSetup(5);
 451   3                              Timer3 = 10;
 452   3                              i = 0x19 + m * 0x10;
 453   3                              WriteIIC_HW(Scaler_Addr,0x20,i);
 454   3                              while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 455   4                                      CheckModeChange();
 456   4                                      if((flag2 & BIT_0) != 0)
 457   4                                              return;
 458   4                              }
 459   3                              if(Timer3 == 0){
 460   4                                      flag2 |= BIT_0;
 461   4                                      return;
 462   4                              }
 463   3                              j = 0;
 464   3                              Temp = 0;
 465   3                              for(i=0; i<8; i++){
 466   4                                      WriteIIC_HW(Scaler_Addr,0x24,i);
 467   4                                      value = ReadIIC_HW(Scaler_Addr,0x23);
 468   4                                      PhaseResult = value;
 469   4                                      PhaseResult <<= 8;
 470   4                                      value = ReadIIC_HW(Scaler_Addr,0x22);
 471   4                                      PhaseResult += value;
 472   4                                      PhaseResult <<= 8;
 473   4                                      value = ReadIIC_HW(Scaler_Addr,0x21);
 474   4                                      PhaseResult += value;

⌨️ 快捷键说明

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