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

📄 mode_detect.lst

📁 TFT 17 2523+mtv512显示器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   MODE_DETECT                                                           11/21/2005 13:47:38 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MODE_DETECT
OBJECT MODULE PLACED IN .\Output\Mode_Detect.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Code\Mode_Detect.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
                    - PRINT(.\Output\Mode_Detect.lst) PREPRINT(.\Output\Mode_Detect.i) OBJECT(.\Output\Mode_Detect.obj)

stmt level    source

   1          
   2          #define __MODEDETECT__
   3          
   4          #include "Header\Lcd_func.h"
   5          #include "Header\Lcd_Main.h"
   6          #include "Header\Access.h"
   7          #include "Header\config.h"
   8          #include "Header\OSD.h"
   9          #include "Header\Lcd_Auto.h"
  10          #include "Header\Frame_Sync.h"
  11          #include "Header\Src_Ctrl.h"
  12          #include "Header\LCD_OSD.h"
  13          
  14          
  15          /////////////////////////////////////////////////////////
  16          //-------------------  Mode Detector  -----------------//
  17          /////////////////////////////////////////////////////////
  18          void Mode_Detector(void)
  19          {
  20   1      
  21   1          switch (stGUD1.INPUT_SOURCE & 0x07)
  22   1          {
  23   2          case SOURCE_VGA :
  24   2              case SOURCE_DVI :
  25   2              // Save previous values of ucMode_Curr, bHpole_Curr and bVpole_Curr
  26   2              bHpole_Prev = bHpole_Curr;
  27   2              bVpole_Prev = bVpole_Curr;
  28   2              
  29   2              if ((MODE_NOSIGNAL == ucMode_Curr) || (MODE_NOSUPPORT == ucMode_Curr))
  30   2                  Detect_Input_Mode();
  31   2              else
  32   2                  Check_Input_Mode();
  33   2              break;
  34   2      
  35   2         default :
  36   2              if ((MODE_NOSIGNAL == ucMode_Curr) || (MODE_NOSUPPORT == ucMode_Curr))
  37   2                  Detect_Video_Mode();        // Set default polarity 
  38   2              else
  39   2                  Check_Video_Mode();         // Set polarity after measure
  40   2              break;
  41   2          }
  42   1      
  43   1          Measure_Mode();     // Measure mode-timing
  44   1      }
  45          
  46          void Measure_Mode(void)
  47          {
  48   1      
  49   1          
  50   1          switch (stGUD1.INPUT_SOURCE & 0x07)
  51   1          {
  52   2                  RTDSetByte(SYNC_CTRL_4A,0x00);
  53   2              case SOURCE_VGA :
  54   2                      RTDSetByte(SYNC_POR_4C, (SYNC_SS == ucSync_Type) ? 0x02 : 0x32);
C51 COMPILER V7.06   MODE_DETECT                                                           11/21/2005 13:47:38 PAGE 2   

  55   2              break;
  56   2              
  57   2              case SOURCE_DVI :
  58   2      /*//eric 0729 test issue:DVI source change              
  59   2      #if (TMDS_ENABLE)
  60   2              if (0 == ucTMDS_SEARCH_COUNTER && MODE_NOSIGNAL == ucMode_Curr) // V101C modified
  61   2              {
  62   2                  RTDCodeW(TMDS_MANUAL_ON);
  63   2      
  64   2                  ucTMDS_SEARCH_COUNTER  = 0x08;
  65   2              }        
  66   2              ucTMDS_SEARCH_COUNTER -= 0x01;
  67   2      #endif
  68   2      */
  69   2                      RTDSetByte(SYNC_POR_4C, 0x02);
  70   2              break;
  71   2              
  72   2              default :
  73   2                      RTDSetByte(SYNC_POR_4C, 0x02);
  74   2              break;
  75   2          }
  76   1              
  77   1      }
  78          
  79          #if(SOURCE_AUTO_SCAN)
  80          /////////////////////////////////////////////////////////
  81          //---Detect which source with valid signal-------------//
  82          /////////////////////////////////////////////////////////
  83          void Measure_Source(unsigned char SOURCE)
  84          {
  85   1         switch(SOURCE)
  86   1         {
  87   2         case SOURCE_VGA:
  88   2                      RTDSetByte(SYNC_CTRL_4A,0x01);
  89   2                      break;
  90   2         case SOURCE_DVI:
  91   2                      RTDSetByte(SYNC_CTRL_4A,0x03);
  92   2                      break;
  93   2         case SOURCE_AV:
  94   2              I2CWrite(V_ENABLE);
  95   2              I2CWrite(AV_DETECT);
  96   2              break;
  97   2         case SOURCE_SV:
  98   2              I2CWrite(V_ENABLE);
  99   2              I2CWrite(SV_DETECT);
 100   2                      break;
 101   2         }
 102   1         //RTDSetByte(SYNC_POR_4C, 0x32);
 103   1         //RTDSetByte(SYNC_POR_4C, 0x02);
 104   1         //RTDSetByte(SYNC_POR_4C, (stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA ? 0x32 : 0x02);
 105   1         
 106   1         if(((stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA) && (SYNC_SS != ucSync_Type))
 107   1             RTDSetByte(SYNC_POR_4C,0x32);
 108   1         else
 109   1             RTDSetByte(SYNC_POR_4C,0x02);
 110   1         
 111   1         Delay_Xms(35);
 112   1         //Delay_Xms(24);
 113   1         
 114   1      
 115   1      }
 116          #endif
C51 COMPILER V7.06   MODE_DETECT                                                           11/21/2005 13:47:38 PAGE 3   

 117          
 118          unsigned char VGA_Mode_Search(unsigned int HS_Pulse)
 119          {
 120   1        unsigned char ucMode_Temp,m;
 121   1        Data[0] = HS_Pulse * 12 / usHsync;    // 0 : 720x350; 1 : 640x350;
 122   1      
 123   1        ucMode_Temp = MODE_NOSUPPORT;
 124   1      
 125   1        // Search for Standard Mode
 126   1        m   = MODE_1280x1024x75HZ;            //anson
 127   1      //  m   = MODE_1600x1200x60HZ;
 128   1        do
 129   1        {
 130   2                if ((usHsync > VGA_Mode[m][0]) && (usHsync < VGA_Mode[m][1]))
 131   2                {   
 132   3                        if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3]))
 133   3                        {
 134   4                                if (MODE_1280x1024x75HZ == m)
 135   4                                {
 136   5                                        if (0 == (bVpole_Curr | bHpole_Curr))   m   = MODE_1280x1024x76HZ;  // SUN 1024-76
 137   5                                }                            
 138   4                                else if (MODE_1024x0768x75HZ == m)
 139   4                                {
 140   5                                        if (0 == (bVpole_Curr | bHpole_Curr))   m   = MODE_1024x0768x74HZ;  // MAC768-75
 141   5                                }         
 142   4                                else if (MODE_0640x0480x60HZ == m && bVpole_Curr != bHpole_Curr)
 143   4                                {
 144   5                                        // MODE_VGA350x60Hz         : 640x350 60Hz
 145   5                                        // MODE_VGA350x60Hz | 0x40  : 720x350 60Hz
 146   5                                        // MODE_VGA400x60Hz         : 640x400 60Hz
 147   5                                        // MODE_VGA400x60Hz | 0x40  : 720x400 60Hz
 148   5                                        if (bHpole_Curr)
 149   5                                                m   = Data[0] ? MODE_VGA350x60Hz : MODE_VGA350x60Hz | 0x40;
 150   5                                        else
 151   5                                                m   = (stGUD1.FUNCTION & 0x10) ? MODE_VGA400x60Hz : MODE_VGA400x60Hz | 0x40;
 152   5                                        //m   = (stGUD1.INPUT_SOURCE & 0x80) ? MODE_VGA400x60Hz : MODE_VGA400x60Hz | 0x40;
 153   5                                }
 154   4                                else if (MODE_0640x0480x50HZ == m && bVpole_Curr != bHpole_Curr)
 155   4                                {
 156   5                                        // MODE_VGA350x50Hz         : 640x350 50Hz
 157   5                                        // MODE_VGA350x50Hz | 0x40  : 720x350 50Hz
 158   5                                        // MODE_VGA400x50Hz         : 640x400 50Hz
 159   5                                        // MODE_VGA400x50Hz | 0x40  : 720x400 50Hz
 160   5                                        if (bHpole_Curr)
 161   5                                                m   = Data[0] ? MODE_VGA350x50Hz : MODE_VGA350x50Hz | 0x40;
 162   5                                        else
 163   5                                                m   = (stGUD1.FUNCTION & 0x10) ? MODE_VGA400x50Hz : MODE_VGA400x50Hz | 0x40;
 164   5                                        //m   = (stGUD1.INPUT_SOURCE & 0x80) ? MODE_VGA400x50Hz : MODE_VGA400x50Hz | 0x40;
 165   5                                }
 166   4                                else if (MODE_0720x0400x85HZ == m)
 167   4                                {
 168   5                                        if (1 == bHpole_Curr && 0 == bVpole_Curr)
 169   5                                                m   = MODE_0640x0350x85HZ;
 170   5                                        else if (stGUD1.FUNCTION & 0x10)     //else if (stGUD1.INPUT_SOURCE & 0x80)     
 171   5                                                m   = MODE_0640x0400x85HZ;
 172   5                                }
 173   4                                else if (MODE_0720x0400x70HZ == m)
 174   4                                {
 175   5                                        if (1 == bHpole_Curr && 0 == bVpole_Curr)
 176   5                                                m   = Data[0] ? MODE_0640x0350x70HZ : MODE_0720x0350x70HZ;
 177   5                                        else if ((stGUD1.FUNCTION & 0x10)==0)     //else if (stGUD1.INPUT_SOURCE & 0x80)              //anson
 178   5      //                                else if (stGUD1.FUNCTION & 0x10)     //else if (stGUD1.INPUT_SOURCE & 0x80)
C51 COMPILER V7.06   MODE_DETECT                                                           11/21/2005 13:47:38 PAGE 4   

 179   5                                                m   = MODE_0640x0400x70HZ;
 180   5                                }
 181   4                                else if (MODE_1024x0768x59HZ == m)
 182   4                                {
 183   5                                        if(HS_Pulse > 45)
 184   5                                                m = MODE_1024x0768x60HZ;
 185   5                                }
 186   4                                else if (MODE_1024x0768x60HZ == m)
 187   4                                {
 188   5                                        if(HS_Pulse <= 45)
 189   5                                                m = MODE_1024x0768x59HZ;                                         
 190   5                                }
 191   4                                else if(MODE_1024x0768x72HZ == m)                     //anson 05_0321
 192   4                                {
 193   5                                        if(ucRefresh <= 71)
 194   5                                         m = MODE_1024x0768x70HZ;
 195   5                                }
 196   4      
 197   4                                ucMode_Temp     = m;
 198   4                        }
 199   3                }
 200   2        }
 201   1        while ((0 != --m) && (MODE_NOSUPPORT == ucMode_Temp));
 202   1        
 203   1        // Search for User Mode
 204   1        if (MODE_NOSUPPORT == ucMode_Temp)
 205   1        {
 206   2                usIPV_ACT_LEN   = 0;
 207   2      
 208   2                m   = MODE_USER1280x1024;             //anson
 209   2      //        m   = MODE_USER1600x1200;
 210   2                do
 211   2                {
 212   3                        if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3]))
 213   3                        {
 214   4                                usIPV_ACT_LEN   = CAP_WIN[m][4];
 215   4                                
 216   4                                if ((usHsync >= VGA_Mode[m][0]) && (usHsync <= VGA_Mode[m][1]))
 217   4                                {
 218   5                                        ucMode_Temp     = m;    // Support User Mode
 219   5                                }
 220   4                        }
 221   3                }
 222   2                while ((MODE_USER720x400 <= --m) && (MODE_NOSUPPORT == ucMode_Temp));
 223   2        }
 224   1      
 225   1        return ucMode_Temp;
 226   1      
 227   1      }
 228          
 229          unsigned char Partial_Display(void)
 230          {
 231   1              unsigned char ucMode_Temp;
 232   1      
 233   1              if (DISP_LEN < usIPV_ACT_LEN)   // V Scale-down
 234   1              {
 235   2                      // Estimate display clock rate for full screen
 236   2                      // DCLK = (24.576MHz / usHsync) * DCLK per display line * (display image lines / input image lines)
 237   2                      ((unsigned int *)Data)[0]   = (unsigned long)2458 * Mode_Preset[MODE_UNDEFINED1][0] * DISP_LEN 
 238   2                              / ((unsigned long)100 * usIPV_ACT_LEN * usHsync);
 239   2      
 240   2                      if (MAX_DCLK < ((unsigned int *)Data)[0])
C51 COMPILER V7.06   MODE_DETECT                                                           11/21/2005 13:47:38 PAGE 5   

 241   2                      {

⌨️ 快捷键说明

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