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

📄 lcd_func.lst

📁 Realtek 公司的RTD2523A芯片原厂source code,没有被修改过的。
💻 LST
📖 第 1 页 / 共 5 页
字号:
              		}
              		else
              		{
                          Data[0]     = ucPre_V_POS - stMUD.V_POSITION;
                          ucPre_V_POS -= (Data[0] > MAX_V_ADJUST_STEP) ? MAX_V_ADJUST_STEP : Data[0];
              		}
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 6   

              
                      stMUD.V_POSITION    = ucPre_V_POS;
              		Adjust_V_Position();
              
                      stMUD.V_POSITION    = ucPosV;
              	}
              	while (stMUD.V_POSITION != ucPre_V_POS);
              
              #endif
 312   1      }
 313          
 314          
 315          void Set_Clock(void)
 316          {
 317   1          unsigned char   ucM_Code, ucN_Code, ucTemp0, ucTemp1;
 318   1      
 319   1          unsigned int    usClock = usADC_Clock + (unsigned int)stMUD.CLOCK - 128;    // Pixel clock number
 320   1          unsigned long   ulRate  = (unsigned long)RTD_XTAL * usClock / usStdHS;      // Pixel clock in kHz
 321   1      
 322   1          // Disable Frame-Sync/APLL-Mislock watch-dog
 323   1          RTDSetBit(ODD_CTRL_8E, 0xcf, 0x00);
 324   1      
 325   1      #if (TUNE_APLL)
 326   1          RTDSetBit(DV_TOTAL_STATUS_3D, 0xdf, 0x00);  //Disable PE Max Measurement
 327   1          RTDSetByte(DV_TOTAL_STATUS_3D,0x40);        //clear PE Max value
 328   1      #endif
 329   1      
 330   1      
 331   1      #if (1)
 332   1      
 333   1          // Issac
 334   1          // New Method for searching suitable M/N code for PLL2
 335   1      
 336   1          ((unsigned int *)Data)[2]  = 100;
 337   1      
 338   1          ucTemp1    = 11;
 339   1          do
 340   1          {
 341   2              ucTemp0     = ((unsigned long)31 * APLL1_N_CODE * ucTemp1 * usClock) 
 342   2                          / ((unsigned long)32 * APLL1_M_CODE * usStdHS);
 343   2              
 344   2              ((unsigned int *)Data)[0]   = ((unsigned long)3100 * APLL1_N_CODE * ucTemp1 * usClock)
 345   2                                          / ((unsigned long)APLL1_M_CODE * ucTemp0 * usStdHS);
 346   2      
 347   2              if (3240 < ((unsigned int *)Data)[0])
 348   2              {
 349   3                  ((unsigned int *)Data)[0]   = ((unsigned int *)Data)[0] - 3200;
 350   3      
 351   3                  if (((unsigned int *)Data)[2] >= ((unsigned int *)Data)[0])
 352   3                  {
 353   4                      ((unsigned int *)Data)[2]   = ((unsigned int *)Data)[0];
 354   4      
 355   4                      ucM_Code    = ucTemp0;
 356   4                      ucN_Code    = ucTemp1;
 357   4                  }
 358   3      
 359   3                  ((unsigned int *)Data)[1]   = ((unsigned long)3100 * APLL1_N_CODE * ucTemp1 * usClock)
 360   3                                              / ((unsigned long)APLL1_M_CODE * (ucTemp0 + 1) * usStdHS);
 361   3                  ((unsigned int *)Data)[1]   = 3200 > ((unsigned int *)Data)[1] ? 3200 - ((unsigned int *)Data)
             -[1]
 362   3                                              : ((unsigned int *)Data)[1] - 3200;
 363   3                  
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 7   

 364   3                  if (40 > ((unsigned int *)Data)[1])
 365   3                  {
 366   4                      ucM_Code    = ucTemp0 + 1;
 367   4                      ucN_Code    = ucTemp1;
 368   4                      break;
 369   4                  }
 370   3      
 371   3                  if (((unsigned int *)Data)[2] >= ((unsigned int *)Data)[1])
 372   3                  {
 373   4                      ((unsigned int *)Data)[2]   = ((unsigned int *)Data)[1];
 374   4      
 375   4                      ucM_Code    = ucTemp0 + 1;
 376   4                      ucN_Code    = ucTemp1;
 377   4                  }
 378   3              }
 379   2              else
 380   2              {
 381   3                  ucM_Code    = ucTemp0;
 382   3                  ucN_Code    = ucTemp1;
 383   3                  break;
 384   3              }
 385   2          }
 386   1          while (++ucTemp1 < 48);
 387   1      
 388   1      #else
              
                  // Issac
                  // Old Method for searching suitable M/N code for PLL2
              
                  ((unsigned int *)Data)[0]  = 500;
              
                  ucM_Code    = 0;
                  ucN_Code    = 0;
                  ucTemp0     = 11;
                  do
                  {
                      ucTemp1 = ulRate * ucTemp0 / (unsigned long)BEST_FAV_FREQ;
              
                      if (2 <= ucTemp1)
                      {
                          ((unsigned long *)Data)[2]  = ulRate * ucTemp0 / ucTemp1;
                          ((unsigned int *)Data)[1]   = ((unsigned long)1600 * RTD_XTAL * APLL1_M_CODE / APLL1_N_CODE) 
                                                      / ((unsigned long *)Data)[2];
              
                          if (1550 <= ((unsigned int *)Data)[1])
                          {
                              if (1570 >= ((unsigned int *)Data)[1])
                              {
                                  ucN_Code    = ucTemp0;
                                  ucM_Code    = ucTemp1;
                                  break;
                              }
              
                              ((unsigned int *)Data)[1]   = ((unsigned int *)Data)[1] - 1550;
                          }
                          else
                          {
                              if (1530 <= ((unsigned int *)Data)[1])
                              {
                                  ucN_Code    = ucTemp0;
                                  ucM_Code    = ucTemp1;
                                  break;
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 8   

                              }
                              
                              ((unsigned int *)Data)[1]   = 1550 - ((unsigned int *)Data)[1];
                          }
                          
                          if (((unsigned int *)Data)[0] > ((unsigned int *)Data)[1])
                          {
                              ((unsigned int *)Data)[0]   = ((unsigned int *)Data)[1];
              
                              ucN_Code    = ucTemp0;
                              ucM_Code    = ucTemp1;
                          }
                      }
              
                      ucTemp1 = ucTemp1 + 1;
              
                      if (2 <= ucTemp1)
                      {
                          ((unsigned long *)Data)[2]  = ulRate * ucTemp0 / ucTemp1;
                          ((unsigned int *)Data)[1]   = ((unsigned long)1600 * RTD_XTAL * APLL1_M_CODE / APLL1_N_CODE) 
                                                      / ((unsigned long *)Data)[2];
              
                          if (1550 <= ((unsigned int *)Data)[1])
                          {
                              if (1570 >= ((unsigned int *)Data)[1])
                              {
                                  ucN_Code    = ucTemp0;
                                  ucM_Code    = ucTemp1;
                                  break;
                              }
              
                              ((unsigned int *)Data)[1]   = ((unsigned int *)Data)[1] - 1550;
                          }
                          else
                          {
                              if (1530 <= ((unsigned int *)Data)[1])
                              {
                                  ucN_Code    = ucTemp0;
                                  ucM_Code    = ucTemp1;
                                  break;
                              }
                              
                              ((unsigned int *)Data)[1]   = 1550 - ((unsigned int *)Data)[1];
                          }
              
                          if (((unsigned int *)Data)[0] > ((unsigned int *)Data)[1])
                          {
                              ((unsigned int *)Data)[0]   = ((unsigned int *)Data)[1];
              
                              ucN_Code    = ucTemp0;
                              ucM_Code    = ucTemp1;
                          }
                      }
                  }
                  while (53 >= ++ucTemp0);
              
              #endif
 483   1      
 484   1          Data[0]     = 5;
 485   1          Data[1]     = Y_INC;
 486   1          Data[2]     = PLL1_M_D7;
 487   1          Data[3]     = APLL1_M_CODE - 2;
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 9   

 488   1          Data[4]     = APLL1_N_CODE - 2;
 489   1          Data[5]     = 0;
 490   1          RTDWrite(Data);
 491   1      
 492   1          RTDSetByte(I_CODE_LB_C9, 0x8c);
 493   1          RTDSetByte(I_CODE_MB_CA, 0x10);
 494   1          RTDSetByte(P_CODE_CB, 0x18);
 495   1      
 496   1          usClock     = usClock - 1;
 497   1      
 498   1          RTDSetByte(PLLDIV_HI_CC, (unsigned char)(usClock >> 8));
 499   1          RTDSetByte(PLL2_M_DB, ucM_Code - 2);
 500   1      
 501   1          Wait_For_Event(EVENT_IEN_STOP);
 502   1      
 503   1          /*
 504   1          Data[0] = 4;
 505   1          Data[1] = N_INC;
 506   1          Data[2] = PLL2_N_DC;
 507   1          Data[3] = ucN_Code - 2;
 508   1          Data[4] = 4;
 509   1          Data[5] = N_INC;
 510   1          Data[6] = PLLDIV_LO_CD;
 511   1          Data[7] = (unsigned char)usClock;
 512   1          Data[8] = 0;
 513   1          RTDWrite(Data);
 514   1          */
 515   1          RTDSetByte(PLL2_N_DC, ucN_Code - 2);
 516   1          RTDSetByte(PLLDIV_LO_CD, (unsigned char)usClock);
 517   1      
 518   1          PowerUp_ADC();
 519   1      
 520   1          Delay_Xms(10);
 521   1      
 522   1          Wait_For_Event(EVENT_IEN_STOP);
 523   1      
 524   1      #if (NEW_PI_CODE)
 525   1      
 526   1          if (ucI_Code)
 527   1          {
 528   2              /*
 529   2              RTDSetBit(I_CODE_MB_CA, 0xdf, (ucI_Code & 0x80) ? 0x20 : 0x00);
 530   2              ucI_Code    = ucI_Code & 0x7f;
 531   2      
 532   2              RTDSetByte(I_CODE_LB_C9, 0x18 | ((ucI_Code & 0x07) << 5));
 533   2              RTDSetBit(I_CODE_MB_CA, 0xfc, 0x04 | ((ucI_Code & 0x18) >> 3));
 534   2      
 535   2              RTDSetByte(P_CODE_CB, P_Code_Value);
 536   2              */
 537   2      
 538   2              RTDSetByte(I_CODE_LB_C9, 0x18 | ((ucI_Code & 0x07) << 5));
 539   2              RTDSetBit(I_CODE_MB_CA, 0xdc, ((ucI_Code & 0x80) ? 0x24 : 0x04) | ((ucI_Code & 0x18) >> 3));
 540   2              RTDSetByte(P_CODE_CB, P_Code_Value);
 541   2              ucI_Code    = ucI_Code & 0x7f;
 542   2          }
 543   1          else
 544   1          {
 545   2              // Use old PFD once
 546   2              RTDSetByte(I_CODE_LB_C9, 0x1C);
 547   2              RTDSetByte(I_CODE_MB_CA, 0x11);
 548   2              RTDSetByte(P_CODE_CB, 0x16);    
 549   2          }
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 10  

 550   1      
 551   1      #else
              
                  ulRate  = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS;         // Pixel clock in kHz
              
                  RTDSetByte(I_CODE_LB_C9, 0x03);
                  RTDSetByte(I_CODE_MB_CA, 0x00);
              
                  if (90000 < ulRate)
                  {
                      RTDSetByte(P_CODE_CB, 0x19);
                  }
                  else if (60000 < ulRate)
                  {
                      RTDSetByte(P_CODE_CB, 0x19);
                  }
                  else if (35000 < ulRate)
                  {
                      RTDSetByte(P_CODE_CB, 0x18);
                      Delay_Xms(2);
                      RTDSetByte(P_CODE_CB, 0x1a);
                  }
                  else
                  {
                      RTDSetByte(P_CODE_CB, 0x18);
                      Delay_Xms(2);
                      RTDSetByte(P_CODE_CB, 0x1a);
                  }
              
              #endif
 580   1       
 581   1          if (!bAutoInProgress)   Wait_For_Event(EVENT_IVS);
 582   1      
 583   1      #if (TUNE_APLL)
 584   1          if (ucPE_Level)     Delay_Xms(2);
 585   1      #endif
 586   1      
 587   1      	RTDSetByte(STATUS0_01, 0x00);  // Clear status
 588   1          RTDSetByte(STATUS1_1F, 0x00);  // Clear status
 589   1      
 590   1      
 591   1      #if (AS_PLL_NONLOCK)
                  if (bFrameSync && bStable)  RTDSetBit(ODD_CTRL_8E, 0xdf, 0x20);
              #endif
 594   1      
 595   1      #if (AS_NON_FRAMESYNC)
                  if (bFrameSync && bStable)  RTDSetBit(ODD_CTRL_8E, 0xef, 0x10);
              #endif
 598   1      } 
 599          

⌨️ 快捷键说明

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