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

📄 autoadj.lst

📁 NT68521源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 475   4                                      if(PhaseResult > Temp){
 476   5                                              Temp = PhaseResult;
 477   5                                              j = i;
 478   5                                      }
 479   4                              }
 480   3                              if(Temp > 0x300){
 481   4                                      i = 0x02 + m * 2;
 482   4                                      j = k+j;
 483   4                                      break;
 484   4                              }
 485   3                      }
 486   2                      if(k == 0){
 487   3                              flag2 |= BIT_0;
 488   3                              return;
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 9   

 489   3                      }
 490   2                      for(n=0; n<16; n++){
 491   3                              i = 0x02 + m * 2;
 492   3                              WriteIIC_HW(Scaler_Addr,i,k-n);
 493   3                              WaitSetup(5);
 494   3                              Timer3 = 10;
 495   3                              i = 0x19 + m * 0x10;
 496   3                              WriteIIC_HW(Scaler_Addr,0x20,i);
 497   3                              while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 498   4                                      CheckModeChange();
 499   4                                      if((flag2 & BIT_0) != 0)
 500   4                                              return;
 501   4                              }
 502   3                              if(Timer3 == 0){
 503   4                                      flag2 |= BIT_0;
 504   4                                      return;
 505   4                              }
 506   3                              j = 0;
 507   3                              Temp = 0;
 508   3                              for(i=0; i<8; i++){
 509   4                                      WriteIIC_HW(Scaler_Addr,0x24,i);
 510   4                                      value = ReadIIC_HW(Scaler_Addr,0x23);
 511   4                                      PhaseResult = value;
 512   4                                      PhaseResult <<= 8;
 513   4                                      value = ReadIIC_HW(Scaler_Addr,0x22);
 514   4                                      PhaseResult += value;
 515   4                                      PhaseResult <<= 8;
 516   4                                      value = ReadIIC_HW(Scaler_Addr,0x21);
 517   4                                      PhaseResult += value;
 518   4                                      if(PhaseResult > Temp){
 519   5                                              Temp = PhaseResult;
 520   5                                              j = i;
 521   5                                      }
 522   4                              }
 523   3                              if(j == 7){
 524   4                                      break;
 525   4                              }
 526   3                      }               
 527   2                      i = 0x02 + m * 2;
 528   2                      j = k-n;
 529   2                      WriteIIC_HW(Scaler_Addr,i,j);
 530   2              }
 531   1              R_ADC = ReadIIC_HW(Scaler_Addr,0x02);
 532   1              Write24C16(0xfd,R_ADC);
 533   1              G_ADC = ReadIIC_HW(Scaler_Addr,0x04);
 534   1              Write24C16(0xfe,G_ADC);
 535   1              B_ADC = ReadIIC_HW(Scaler_Addr,0x06);
 536   1              Write24C16(0xff,B_ADC);
 537   1      }
 538          
 539          void AutoColor(void)
 540          {
 541   1              flag2 &= ~BIT_0;
 542   1              WriteWordIIC_HW(Scaler_Addr,0x18,HP_Start - 20);
 543   1              SetADC_Offset(0x20);
 544   1              if((flag2 & BIT_0) != 0x00){
 545   2                      goto Error;
 546   2              }
 547   1              WriteWordIIC_HW(Scaler_Addr,0x18,HP_Start);
 548   1              SetADC_Gain(0xa0);
 549   1      Error:
 550   1              if((flag2 & BIT_0) != 0){
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 10  

 551   2                      LoadADC_Gain();
 552   2              }
 553   1      }
 554          //////////////////////////////////////////////////////////////////////////////
 555          void AutoClockByPhase(bit h)
 556          {
 557   1      bit R_L,U_D;
 558   1      unsigned char k,temp;
 559   1      unsigned short i,GoodClk;
 560   1      xdata unsigned long MaxMin,Value;
 561   1              if((ModePoint < UserModeSt)&&(h == 1)){
 562   2                      i = 0x104 + (ModePoint * 8);
 563   2                      HTotal = MCU_DataMap[i];
 564   2                      i++;
 565   2                      HTotal <<= 8;
 566   2                      HTotal += MCU_DataMap[i];
 567   2              }
 568   1              GoodClk = HTotal;
 569   1              SetADC_PLL();
 570   1              WaitSetup(40);
 571   1              if((flag2 & BIT_0) != 0)
 572   1                      return;
 573   1              MaxMin = CheckPhaseData();
 574   1              temp = TempValue;
 575   1              if((flag2 & BIT_0) != 0)
 576   1                      return;
 577   1              U_D = 0;
 578   1              R_L = 1;
 579   1              for(k=0; k<16; k++){
 580   2                      if(R_L == 1){
 581   3                              HTotal += 2;
 582   3                              SetADC_PLL();
 583   3                              WaitSetup(40);
 584   3                              if((flag2 & BIT_0) != 0)
 585   3                                      return;
 586   3                              Value = CheckPhaseData();
 587   3                              if((flag2 & BIT_0) != 0)
 588   3                                      return;
 589   3                              if(MaxMin < Value){
 590   4                                      GoodClk = HTotal;
 591   4                                      MaxMin = Value;
 592   4                                      temp = TempValue;
 593   4                                      U_D = 1;
 594   4                              }
 595   3                              else{
 596   4                                      if(U_D == 0){
 597   5                                              R_L = 0;
 598   5                                              HTotal -= 2;
 599   5                                              U_D = 1;
 600   5                                      }
 601   4                                      else{
 602   5                                              break;
 603   5                                      }
 604   4                              }
 605   3                      }
 606   2                      else{
 607   3                              HTotal -= 2;
 608   3                              SetADC_PLL();
 609   3                              WaitSetup(40);
 610   3                              if((flag2 & BIT_0) != 0)
 611   3                                      return;
 612   3                              Value = CheckPhaseData();
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 11  

 613   3                              if((flag2 & BIT_0) != 0)
 614   3                                      return;
 615   3                              if(MaxMin < Value){
 616   4                                      GoodClk = HTotal;
 617   4                                      MaxMin = Value;
 618   4                                      temp = TempValue;
 619   4                                      U_D = 1;
 620   4                              }
 621   3                              else{
 622   4                                      if(U_D == 0){
 623   5                                              R_L = 1;
 624   5                                              HTotal += 2;
 625   5                                              U_D = 1;
 626   5                                      }
 627   4                                      else{
 628   5                                              break;
 629   5                                      }
 630   4                              }
 631   3                      }
 632   2              }
 633   1              HTotal = GoodClk;
 634   1              SetADC_PLL();
 635   1              ADC_Phase = (temp + 24) & 0x3f;
 636   1              Repeat = 32;
 637   1              SetADC_Phase();
 638   1      }
 639          
 640          unsigned long CheckPhaseData(void)
 641          {
 642   1      unsigned char zz,ch;
 643   1      xdata unsigned long Value,MinValueTemp,MaxValueTemp;
 644   1              MaxValueTemp = 0;
 645   1              MinValueTemp = 0xffffffff;
 646   1              ADC_Phase = 0;
 647   1              SetADC_Phase();
 648   1              WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
 649   1              Timer3 = 10;
 650   1              for(ADC_Phase=4; ADC_Phase<0x42; ADC_Phase = ADC_Phase + 4){
 651   2                      while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
 652   3                              CheckModeChange();
 653   3                              if((flag2 & BIT_0) != 0)
 654   3                                      return 0;
 655   3                      }
 656   2                      SetADC_Phase();
 657   2                      WriteIIC_HW(Scaler_Addr,0x20,0x01);
 658   2                      Timer3 = 10;
 659   2              Value = 0x00000000;
 660   2              for(zz=0x24; zz>0x20; zz--){
 661   3                      ch = ReadIIC_HW(Scaler_Addr,zz);
 662   3                  Value  = Value << 8;
 663   3                  Value  = Value + ch;
 664   3              }
 665   2                      if(Value < MinValueTemp){
 666   3                              MinValueTemp = Value;
 667   3                              TempValue = (ADC_Phase - 4) & 0x3f;
 668   3                      }
 669   2                      if(Value > MaxValueTemp){
 670   3                              MaxValueTemp = Value;
 671   3                      }
 672   2              }
 673   1      
 674   1              Value = MaxValueTemp - MinValueTemp;
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 12  

 675   1      
 676   1              return Value;
 677   1      }
 678          //////////////////////////////////////////////////////////////////////////////
 679          void CheckRCV(void)
 680          {
 681   1      unsigned char i;
 682   1              if(RI == 1){
 683   2                      i = SBUF;
 684   2                      RI = 0;
 685   2                      CheckCmd(i);
 686   2              }
 687   1      }
 688          
 689          void CheckCmd(unsigned char i)
 690          {
 691   1              while(TI == 0){}
 692   1              SBUF = i;
 693   1              TI = 0;
 694   1              if(i == 13){            //command over
 695   2                      while(TI == 0){}
 696   2                      printf("\n");
 697   2                      switch(rwbuf){
 698   3                      case 0x00:
 699   3                              printf("\r\n");
 700   3                              printf("W0 aaaa dd : Write 24C16\r\n");
 701   3                              printf("R0 aaaa    : Read  24C16\r\n");
 702   3                              printf("W1 aaaa dd : Write Scaler\r\n");
 703   3                              printf("R1 aaaa    : Read  Scaler\r\n");
 704   3                              printf("W2 aaaa dd : Write rgbGain\r\n");
 705   3                              printf("R2 aaaa    : Read  rgbGain\r\n");
 706   3                              printf("W3 aaaa dd : Write SAA7114\r\n");
 707   3                              printf("R3 aaaa    : Read  SAA7114\r\n");
 708   3                              printf("R4 0       : Auto Black Level\r\n");
 709   3                              printf("R4 1       : Auto White Level\r\n");
 710   3                              printf("R4 2       : Auto Color\r\n");
 711   3                              printf("R4 3       : Set 6500K\r\n");
 712   3                              printf("R4 4       : Set 7500K\r\n");
 713   3                              printf("R4 5       : Set 9300K\r\n");
 714   3                              printf("R4 6       : Resive\r\n");
 715   3                              printf("R4 7       : DDC Write Enable\r\n");

⌨️ 快捷键说明

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