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

📄 modectrl.lst

📁 terawin的t103 LCD驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MODECTRL
OBJECT MODULE PLACED IN .\Obj\MODECTRL.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\VGA\MODECTRL.C LARGE OPTIMIZE(6,SPEED) BROWSE INCDIR(.\Include\;.\So
                    -urce\;.\Include\Panel\;.\Include\GammaTable\;.\Include\tuner\) DEFINE(T103) DEBUG OBJECTEXTEND PRINT(.\MODECTRL.lst) OBJ
                    -ECT(.\Obj\MODECTRL.obj)

line level    source

   1          //---------------------------------------------------------------------------
   2          // Terawins Inc. Company Confidential Strictly Private
   3          //
   4          // $Archive: ModeCtrl.c 702 $
   5          // $Revision: 1.01 $
   6          // $Author: JoannW $
   7          // $Date: 2002/06/18 $
   8          //
   9          // --------------------------------------------------------------------------
  10          // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  11          // --------------------------------------------------------------------------
  12          // Copyright 2002 (c) Terawins Inc.
  13          // This is an unpublished work.
  14          // --------------------------------------------------------------------------
  15          #include <reg51.h>
  16          #include <math.h>
  17          #include "common.h"
  18          
  19          #include "Struct.h"
  20          #include "system.h"
  21          
  22          #include "SRC_ctrl.h"
  23          #include "TwoWire.h"
  24          #include "T803_Util.h"
  25          #include "TW803Reg.h"
  26          #include "OSDCtrl.h"
  27          #include "CfgDsply.h"
  28          #include "OSDDraw.h"
  29          #include "Display.h"
  30          #include "modetbl.h"
  31          #include "Resolution.h"
  32          #include "MyMath.h"
  33          #include "Global.h"
  34          #include "struct.h"
  35          #ifdef NVRAM
  36                  #include "NVRam.h"
  37          #endif
  38          #include "ModeData.h"
  39          #include "ModeCtrl.h"
  40          #include "Auto.h"
  41          #include "INIT.h"
  42          uWORD   wHPeriodCount;
  43          
  44          #ifdef PC_MODE
  45          
  46          BOOL ModeDetect(void)
  47          {
  48   1              uCHAR   cTotalModes;
  49   1              uCHAR   cTotalFound;
  50   1              uDWORD  dwModeListMask=0;
  51   1      
  52   1              uCHAR cPolarity;
  53   1      
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 2   

  54   1              m_cModeStatus = 0;
  55   1              EepPrivate.cAltID = 0xFF;
  56   1              EepPrivate.wHOffset = 0;
  57   1              EepPrivate.wVOffset = 0;
  58   1              m_bAlt = 0;
  59   1              m_wVTotal = 0;
  60   1              m_bDosMode = 0;
  61   1              m_bDigital=0;
  62   1              m_dwBuff[0]=GetInputVSyncXclkCnt();     
  63   1              GetModeInfo(&m_wVTotal, &wHPeriodCount, m_dwBuff[0]);
  64   1              
  65   1              if(m_wVTotal < VTOTAL_MIN || wHPeriodCount > HPERIOD_MAX)
  66   1              {
  67   2                      m_cModeStatus = SYNCERROR;  //unreasonable result, sync error
  68   2                      return FALSE;
  69   2              }
  70   1              
  71   1              cPolarity=McPolDetect();
  72   1                      
  73   1      
  74   1              m_dwBuff[0] = 0; //Clear Modes List
  75   1      
  76   1              m_cBuff[0] = NUMINTERLACED;
  77   1              m_cBuff[1] = TOTALMODES;
  78   1              EepPrivate.cModeID = m_cBuff[0];
  79   1              m_cBuff[2] = EepPrivate.cModeID;
  80   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
  81   1              while ((m_wVTotal >= m_pModeDescriptorPtr->wVTotal) && (EepPrivate.cModeID <= m_cBuff[1]))
  82   1              {
  83   2                      if(ModeTable[m_cBuff[2]].wVTotal<m_pModeDescriptorPtr->wVTotal) m_cBuff[2] = EepPrivate.cModeID;
  84   2                      EepPrivate.cModeID++;
  85   2                      m_pModeDescriptorPtr++;
  86   2              } 
  87   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
  88   1              m_cBuff[3] = EepPrivate.cModeID;
  89   1              while ((ModeTable[m_cBuff[3]].wVTotal == m_pModeDescriptorPtr->wVTotal) && (EepPrivate.cModeID <= m_cBuff
             -[1]))
  90   1              {
  91   2                      //if(ModeTable[m_cBuff[3]].wVTotal<m_pModeDescriptorPtr->wVTotal)       
  92   2                              m_cBuff[3] = EepPrivate.cModeID;
  93   2                      EepPrivate.cModeID++;
  94   2                      m_pModeDescriptorPtr++;
  95   2              }       
  96   1              EepPrivate.cModeID = --m_cBuff[2];
  97   1              m_pModeDescriptorPtr = &ModeTable[m_cBuff[2]];
  98   1              while ((ModeTable[m_cBuff[2]].wVTotal == m_pModeDescriptorPtr->wVTotal) && (EepPrivate.cModeID >=0))
  99   1              {
 100   2                      //if(ModeTable[m_cBuff[2]].wVTotal<m_pModeDescriptorPtr->wVTotal)       
 101   2                              m_cBuff[2] = EepPrivate.cModeID;
 102   2                      EepPrivate.cModeID--;
 103   2                      m_pModeDescriptorPtr--;
 104   2              }                                                                       
 105   1      
 106   1              //m_cBuff[3] = EepPrivate.cModeID-1;
 107   1              dwModeListMask = 1;
 108   1              EepPrivate.cModeID =  m_cBuff[2];
 109   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
 110   1              
 111   1      
 112   1              //Search through this Lower to Upper Bound range, if the polarity is same, 
 113   1              //only keep the mode in the list 
 114   1      
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 3   

 115   1              cTotalModes=0;
 116   1              cTotalFound=0;
 117   1              m_wBuff[0]=0;
 118   1              for (EepPrivate.cModeID = m_cBuff[2]; EepPrivate.cModeID <= m_cBuff[3]; EepPrivate.cModeID++, dwModeListM
             -ask<<=1, m_pModeDescriptorPtr++)
 119   1              {
 120   2                      if(cPolarity==(m_pModeDescriptorPtr->cModeFlags0& SYNC_POLARITY)) 
 121   2                      {
 122   3                              if(cTotalFound==0)
 123   3                              {
 124   4                                      cTotalFound ++;
 125   4                                      m_dwBuff[1] = dwModeListMask;
 126   4                              m_cBuff[0]=EepPrivate.cModeID;  //New Lower Bound
 127   4                              }
 128   3                              else
 129   3                              {
 130   4                              m_dwBuff[1] |= dwModeListMask;
 131   4                                      cTotalFound++;
 132   4                              }                       
 133   3                      }
 134   2              }
 135   1              cTotalModes = cTotalFound;
 136   1              if(cTotalFound==0)      return FALSE;
 137   1              EepPrivate.cModeID = m_cBuff[0];    //Move to new lower bound
 138   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
 139   1              m_dwBuff[0] = m_dwBuff[1];
 140   1              m_dwBuff[1] = 0; 
 141   1      
 142   1              //For each remaining mode find the mode with the lowest accuracy value
 143   1              if (cTotalModes > 1)
 144   1              {
 145   2                      m_wBuff[0] = 0xffff;
 146   2                      dwModeListMask = 1L;
 147   2                      dwModeListMask <<= (EepPrivate.cModeID - m_cBuff[2]);
 148   2                      cTotalFound = 0;
 149   2                      //start from new lower bound
 150   2                      for (EepPrivate.cModeID = m_cBuff[0]; EepPrivate.cModeID <= m_cBuff[3]; EepPrivate.cModeID++, dwModeList
             -Mask <<=1, m_pModeDescriptorPtr++)
 151   2                      {
 152   3                              if (m_dwBuff[0] & dwModeListMask)
 153   3                              {
 154   4                                      if (abs( (unsigned int)(m_pModeDescriptorPtr->wVTotal - m_wVTotal)) <=VLINE_TOLERANCE
 155   4                                         && abs((unsigned int)(m_pModeDescriptorPtr->wHPeriodCount - wHPeriodCount))
 156   4                                                 <=m_pModeDescriptorPtr->wHPeriodCount*HSYNC_TOLERANCE)   
 157   4                                      {
 158   5                                              if ((m_wBuff[1] = (abs((unsigned int)(m_pModeDescriptorPtr->wVTotal - m_wVTotal)))*32 +
 159   5                                                                                      (abs((unsigned int)(m_pModeDescriptorPtr->wHPeriodCount - wHPeriodCount))))
 160   5                                                      <= m_wBuff[0])
 161   5                                              {
 162   6                                                      if (m_wBuff[1]==m_wBuff[0])
 163   6                                                      {
 164   7                                                              m_dwBuff[1] |= dwModeListMask;
 165   7                                                              cTotalFound++;
 166   7                                                      }
 167   6                                                      else
 168   6                                                      {
 169   7                                                              cTotalFound = 1;
 170   7                                                              m_dwBuff[1] = dwModeListMask;
 171   7                                                              m_wBuff[0] = m_wBuff[1];
 172   7                                                              m_cBuff[0] = EepPrivate.cModeID;  //New Lower Bound
 173   7                                                      }
 174   6                                              }
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 4   

 175   5                                      }
 176   4                              }
 177   3                      }
 178   2                      if(cTotalFound==0)   //Error
 179   2                      {
 180   3                              EepPrivate.cModeID = m_cBuff[0];
 181   3                              m_cModeStatus = OVERRANGE;
 182   3                              return FALSE;
 183   3                      }
 184   2                      else
 185   2                              cTotalModes = cTotalFound;
 186   2              }
 187   1              EepPrivate.cModeID = m_cBuff[0];
 188   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
 189   1              m_dwBuff[0] = m_dwBuff[1];
 190   1              m_dwBuff[1] = 0;
 191   1              
 192   1              //If still more than 1 mode left, for each remaining mode find the mode with closest HPeriod
 193   1              //If only one mode left, mode detect done
 194   1              if (cTotalModes > 1)
 195   1              {
 196   2                      m_wBuff[0] = 0xffff;
 197   2                      dwModeListMask = 1;
 198   2                      dwModeListMask <<= (EepPrivate.cModeID - m_cBuff[2]);
 199   2                      cTotalFound = 0;
 200   2                      for (EepPrivate.cModeID = m_cBuff[0]; EepPrivate.cModeID <= m_cBuff[3]; EepPrivate.cModeID++, dwModeList
             -Mask<<=1, m_pModeDescriptorPtr++)
 201   2                      {
 202   3                              if (m_dwBuff[0] & dwModeListMask)
 203   3                              {
 204   4                                      if (m_wBuff[1] = (abs(m_pModeDescriptorPtr->wHPeriodCount - wHPeriodCount)) <= m_wBuff[0])
 205   4                                      {
 206   5                                              if (m_wBuff[1]==m_wBuff[0])
 207   5                                              {
 208   6                                                      m_dwBuff[1] |= dwModeListMask;
 209   6                                                      cTotalFound++;
 210   6                                              }
 211   5                                              else
 212   5                                              {
 213   6                                                      cTotalFound = 1;
 214   6                                                      m_dwBuff[1] = dwModeListMask;
 215   6                                                      m_wBuff[0] = m_wBuff[1];
 216   6                                                      m_cBuff[0] = EepPrivate.cModeID;
 217   6                                              }
 218   5                                      }
 219   4                              }
 220   3                      }
 221   2                      cTotalModes = cTotalFound;
 222   2              } 
 223   1              
 224   1      
 225   1              EepPrivate.cModeID = m_cBuff[0];
 226   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
 227   1              m_dwBuff[0] = m_dwBuff[1];
 228   1              m_dwBuff[1] = 0;
 229   1              
 230   1              if (cTotalModes > 1)
 231   1              {
 232   2                      m_wBuff[0] = 0xffff;
 233   2                      cTotalFound =  0;
 234   2                      dwModeListMask = 1;
 235   2                      dwModeListMask <<= (EepPrivate.cModeID - m_cBuff[2]);
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 5   

 236   2                      for (EepPrivate.cModeID = m_cBuff[0]; EepPrivate.cModeID <= m_cBuff[3]; EepPrivate.cModeID++, dwModeList
             -Mask <<= 1, m_pModeDescriptorPtr++)
 237   2                      {
 238   3                              if (m_dwBuff[0] & dwModeListMask)

⌨️ 快捷键说明

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