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

📄 autoadj.lst

📁 NT68521源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AUTOADJ
OBJECT MODULE PLACED IN .\BIN\AutoAdj.obj
COMPILER INVOKED BY: D:\设计软件\Keil\C51\BIN\C51.EXE SRC\AutoAdj.C BROWSE DEBUG OBJECTEXTEND PRINT(.\LST\AutoAdj.lst) O
                    -BJECT(.\BIN\AutoAdj.obj)

line level    source

   1          #include "Scaler.H"
   2          #include "AutoAdj.H"
   3          #include "MyDef.H"
   4          #include "IIC.H"
   5          #include "RAM.H"
   6          #include "stdio.h"
   7          #include "F63REG.H"
   8          #include "MCU.H"
   9          #include "UserAdj.H"
  10          #include "ModeHandle.H"
  11          #include "8051.H"
  12          #include "sRGB.H"
  13          #include "ROM_MAP.H"
  14          #include "SAA7114.H"
  15          
  16          void AutoTune(void)
  17          {
  18   1      xdata unsigned short HP_Temp,VP_Temp,addr;
  19   1      //      HP_Temp = ReadIIC_HW(Scaler_Addr,0x01);
  20   1      //      HP_Temp &= ~BIT_5;
  21   1      //      WriteIIC_HW(Scaler_Addr,0x01,(unsigned char)HP_Temp);
  22   1              if(H_SYNC_Temp == 0xffff)
  23   1                      goto Error1;
  24   1              HP_Temp = HP_Start;
  25   1              VP_Temp = VP_Start;
  26   1              NonFullScreen = 0;
  27   1              flag2 &= ~BIT_0;
  28   1              AutoPosition();
  29   1              if(H_SYNC_Temp == 0xffff)
  30   1                      goto Error1;
  31   1              if((flag2 & BIT_0) != 0x00){
  32   2                      if(NonFullScreen == 0){
  33   3                              goto Error1;
  34   3                      }
  35   2              }
  36   1              AutoClock();
  37   1              if(H_SYNC_Temp == 0xffff)
  38   1                      goto Error1;
  39   1              if((flag2 & BIT_0) != 0x00){
  40   2                      if(NonFullScreen == 0){
  41   3                              goto Error;
  42   3                      }
  43   2                      else{
  44   3                              flag2 &= ~BIT_0;
  45   3                              AutoClockByPhase(1);
  46   3                      }
  47   2              }
  48   1              else{
  49   2                      AutoClockByPhase(0);
  50   2              }
  51   1              if(H_SYNC_Temp == 0xffff)
  52   1                      goto Error1;
  53   1              AutoPhaseFineTune();
  54   1              if(H_SYNC_Temp == 0xffff)
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 2   

  55   1                      goto Error1;
  56   1              if((flag2 & BIT_0) != 0x00)
  57   1                      goto Error;
  58   1              AutoPosition();
  59   1              if(H_SYNC_Temp == 0xffff)
  60   1                      goto Error1;
  61   1              if(((flag2 & BIT_0) != 0x00)&&(NonFullScreen == 1)){    //fail
  62   2                      if(ModePoint < UserModeSt){
  63   3                              addr = 0x101 + (ModePoint * 8);
  64   3                              VP_Temp = MCU_DataMap[addr];
  65   3                              addr++;
  66   3                              HP_Temp = MCU_DataMap[addr];
  67   3                              HP_Temp <<= 8;
  68   3                              addr++;
  69   3                              HP_Temp += MCU_DataMap[addr];
  70   3                      }
  71   2                      HP_Start = HP_Temp;
  72   2                      VP_Start = VP_Temp;
  73   2                      SetHP();
  74   2                      SetVP();
  75   2                      flag2 &= ~BIT_0;
  76   2              }
  77   1      Error:
  78   1              if((flag2 & BIT_0) != 0x00){    //fail
  79   2                      if(H_SYNC_Temp != 0xffff){
  80   3                              ForceToBackground(0);   //Set fource to background
  81   3                              LoadModeDependentSettings();
  82   3                              SetADC_PLL();
  83   3                              SetADC_Phase();
  84   3                              SetScaler();
  85   3                              WriteIIC_HW(Scaler_Addr,0x95,0x00);
  86   3                              SetDisplayNormal();
  87   3                      }
  88   2              }
  89   1              else{           //ok
  90   2                      SaveModeDependentSettings();
  91   2                      SetMinMax();
  92   2              }
  93   1      Error1:
  94   1              RepeatTimer = KeyHoldTime;
  95   1              Repeat = 0xff;
  96   1      
  97   1      //      HP_Temp = ReadIIC_HW(Scaler_Addr,0x01);
  98   1      //      HP_Temp |= BIT_5;
  99   1      //      WriteIIC_HW(Scaler_Addr,0x01,(unsigned char)HP_Temp);
 100   1      }
 101          
 102          void AutoPosition(void)
 103          {
 104   1      unsigned short temph,tempv;
 105   1              WriteIIC_HW(Scaler_Addr,0x2E,HP_Min);  // AutoPosition Pixel mask -> H
 106   1              WriteIIC_HW(Scaler_Addr,0x3C,0x00);  // AutoPosition Pixel mask -> V
 107   1              WriteIIC_HW(Scaler_Addr,0x2F,0x30);  // Red Noise Margin
 108   1              WriteIIC_HW(Scaler_Addr,0x30,0x30);  // Green Noise Margin
 109   1              WriteIIC_HW(Scaler_Addr,0x31,0x30);  // Blue Noise Margin
 110   1      
 111   1              CheckModeChange();
 112   1              if((flag2 & BIT_0) != 0)
 113   1                      return;
 114   1              
 115   1              WriteIIC_HW(Scaler_Addr,0x1F,0x00);
 116   1              if(SyncMode == 3){      //DVI
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 3   

 117   2                      WriteIIC_HW(Scaler_Addr,0x1E,0x19);
 118   2              }
 119   1              else{
 120   2                      WriteIIC_HW(Scaler_Addr,0x1E,0x09);
 121   2              }
 122   1              Timer3 = 10;
 123   1              while(!(ReadIIC_HW(Scaler_Addr,0x1F) & BIT_0) && Timer3 != 0){
 124   2                      CheckModeChange();
 125   2                      if((flag2 & BIT_0) != 0)
 126   2                              return;
 127   2              }
 128   1              if(Timer3 != 0){                                // Auto-Position OK
 129   2                      tempv = ReadWordIIC_HW(Scaler_Addr,0x32) & 0x07ff;
 130   2                      temph = ReadWordIIC_HW(Scaler_Addr,0x36) & 0x07ff;
 131   2                      if((tempv > 0xff) || (temph > (HTotal-H_Act))){
 132   3                              flag2 |= BIT_0;                 // abort
 133   3                              NonFullScreen = 1;
 134   3                      }
 135   2                      else{
 136   3                              HP_Start = temph;
 137   3                              VP_Start = tempv;
 138   3                              SetHP();
 139   3                              SetVP();
 140   3                      }
 141   2              }
 142   1              else{
 143   2                      flag2 |= BIT_0;                 // abort
 144   2              }
 145   1      }
 146          
 147          void AutoClock(void)
 148          {
 149   1      unsigned char H_Difference,i,Compare,k;
 150   1      unsigned short PLL_Divider,V_Act;
 151   1      unsigned short H_Ref;
 152   1              if((flag2 & BIT_0) != 0x00)
 153   1                      return;
 154   1              V_Act = ReadWordIIC_HW(Scaler_Addr,0x34) & 0x07ff;
 155   1      //      if(VTotal > (V_Act + 190)){
 156   1      //              flag2 |= BIT_0;
 157   1      //              NonFullScreen = 1;
 158   1      //              return;
 159   1      //      }
 160   1              if((flag3 & BIT_6) != 0){
 161   2                      V_Act <<= 1;
 162   2              }
 163   1              PLL_Divider = ReadWordIIC_HW(Scaler_Addr,0x38) & 0x07ff;
 164   1      
 165   1              for(i=0; i<16; i++){            //check Vtotal
 166   2                      if(V_Act > V_ActiveTab[i])
 167   2                              H_Ref = V_Act - V_ActiveTab[i];
 168   2                      else
 169   2                              H_Ref = V_ActiveTab[i] - V_Act;
 170   2                      if(H_Ref < 5){                  //check Htotal
 171   3                              H_Ref = H_ActiveTab[i];
 172   3                              if((i == 1)&&(Read24C16(0xd3) != 0))
 173   3                                      H_Ref = 640;
 174   3                              if(PLL_Divider > H_Ref){
 175   4                                      PLL_Divider = PLL_Divider - H_Ref;
 176   4                                      Compare = 0;
 177   4                              }
 178   3                              else{
C51 COMPILER V7.50   AUTOADJ                                                               03/18/2008 22:04:54 PAGE 4   

 179   4                                      PLL_Divider =  H_Ref - PLL_Divider;
 180   4                                      Compare = 1;
 181   4                              }
 182   3                              if(PLL_Divider > (H_Ref >> 3)){                 //check Htotal range
 183   4                                      if((i == 2) && (Compare == 0)){
 184   5                                              i = 13;
 185   5                                              H_Ref = 848;
 186   5                                      }
 187   4      //                              else{
 188   4      //                                      flag2 |= BIT_0;
 189   4      //                                      NonFullScreen = 1;
 190   4      //                                      return;
 191   4      //                              }
 192   4                              }
 193   3                              PLL_Divider = 0x106 + (ModePoint * 8);
 194   3                              if(i != Read24C16(PLL_Divider)){                //change resolution
 195   4                                      Write24C16(PLL_Divider,i);
 196   4                                      SetScaler();
 197   4                              }
 198   3                              break;
 199   3                      }
 200   2              }
 201   1              if((i == 16)||(V_Act < 340)){
 202   2                      flag2 |= BIT_0;
 203   2                      NonFullScreen = 1;
 204   2                      return;
 205   2              }
 206   1              k = i;
 207   1      // Set refance H_Active
 208   1              WriteWordIIC_HW(Scaler_Addr,0x3A,H_Ref);
 209   1      // read pll divider
 210   1              if(HTotal <= H_Ref){
 211   2                      HTotal = H_Ref + HP_Start;
 212   2                      SetADC_PLL();
 213   2                      if((flag3 & BIT_1) != 0){
 214   3                              flag2 |= BIT_0;
 215   3                              return;
 216   3                      }
 217   2              }
 218   1              for(i=0; i<0x20; i++){
 219   2                      WriteIIC_HW(Scaler_Addr,0x1F,0x00);
 220   2                      WriteIIC_HW(Scaler_Addr,0x1E,0x09);
 221   2                      Timer3 = 10;
 222   2                      while(!(ReadIIC_HW(Scaler_Addr,0x1F) & BIT_0) && Timer3 != 0){
 223   3                              CheckModeChange();
 224   3                              if((flag2 & BIT_0) != 0)
 225   3                                      return;
 226   3                      }
 227   2                      if(Timer3 == 0){
 228   3                              flag2 |= BIT_0;
 229   3                              return;
 230   3                      }
 231   2                      H_Act = ReadWordIIC_HW(Scaler_Addr,0x38) & 0x07ff;
 232   2                      H_Difference = ReadIIC_HW(Scaler_Addr,0x1F);
 233   2                      Compare = (H_Difference & 0x0C) >> 2;

⌨️ 快捷键说明

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