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

📄 modectrl.lst

📁 terawin的t103 LCD驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 239   3                              {
 240   4                                      m_cBuff[1] = m_pModeDescriptorPtr->cResID;
 241   4                                      m_pResolutionPtr = &ResolutionTable[m_cBuff[1]];
 242   4                                      if ((m_wBuff[1]=abs(m_pResolutionPtr->wVRes-m_wVRes)) <= m_wBuff[0])
 243   4                                      {
 244   5                                              if (m_wBuff[1] == m_wBuff[0])
 245   5                                              {
 246   6                                                      m_dwBuff[1] |= dwModeListMask;
 247   6                                                      cTotalFound++;
 248   6                                              }
 249   5                                              else
 250   5                                              {
 251   6                                                      cTotalFound = 1;
 252   6                                                      m_dwBuff[1] = dwModeListMask;
 253   6                                                      m_wBuff[0] = m_wBuff[1];
 254   6                                                      m_cBuff[0] = EepPrivate.cModeID;
 255   6                                              }
 256   5                                      }
 257   4                              }
 258   3                      }
 259   2                      cTotalModes = cTotalFound;
 260   2              }
 261   1      
 262   1              //If there are still two or more equidistant modes, then choose the first one
 263   1              EepPrivate.cModeID = m_cBuff[0]; 
 264   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];                     
 265   1              
 266   1              m_cModeStatus = MODEFOUND;
 267   1              if(m_pModeDescriptorPtr->cModeFlags1 & bDosMode)
 268   1              {
 269   2                      m_cModeStatus |= DOSMODE;
 270   2                      m_bDosMode = 1;
 271   2              }
 272   1              
 273   1              
 274   1              //If there are alternate HTotals
 275   1              if (m_pModeDescriptorPtr->cModeFlags2 & bAltHTotal)
 276   1              {
 277   2                      SearchAltMode();
 278   2              }
 279   1                      
 280   1              if(m_bAlt)
 281   1              {
 282   2                      m_pAltHTotalPtr = &AltHTotals[EepPrivate.cAltID];
 283   2                      EepPrivate.wHTotal = m_pAltHTotalPtr->wHTotal;
 284   2                      m_cBuff[0] = m_pAltHTotalPtr->cResID;
 285   2                      m_pResolutionPtr = &ResolutionTable[m_cBuff[0]];
 286   2                      if(m_pAltHTotalPtr->cModeFlags & bSubSample)
 287   2                              m_cModeStatus |= ADCHIGHRANGE;
 288   2                      else if(m_pAltHTotalPtr->cModeFlags & bDoubSample)
 289   2                              m_cModeStatus |= ADCLOWRANGE;
 290   2              }
 291   1              else
 292   1              {
 293   2                      EepPrivate.wHTotal = m_pModeDescriptorPtr->wHTotal;
 294   2                      m_cBuff[0] = m_pModeDescriptorPtr->cResID;
 295   2                      m_pResolutionPtr = &ResolutionTable[m_cBuff[0]];
 296   2                      if(m_pModeDescriptorPtr->cModeFlags1 & bSubSample)
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 6   

 297   2                              m_cModeStatus |= ADCHIGHRANGE;
 298   2                      else if(m_pModeDescriptorPtr->cModeFlags1 & bDoubSample)
 299   2                              m_cModeStatus |= ADCLOWRANGE;
 300   2              }
 301   1                      
 302   1          if(m_cModeStatus==MODEFOUND)
 303   1                      m_cModeStatus |= NORMALMODE;
 304   1      
 305   1              return TRUE;
 306   1      }
 307          // ================================================================
 308          //      Sync_Mode_Detect                        Kevin Hsu.      Mar. 2th, 2006
 309          // ================================================================
 310          //      Description: Detect what kind of Sync. in VGA signal. 
 311          //      Output:          m_Synctype : VGA sync. type.
 312          //      ---------------------------------------------------------------
 313          void Sync_Mode_Detect(void)
 314          {
 315   1              int i;
 316   1      
 317   1              //~ Enable Sync exist detect ~//
 318   1              I2CWriteByte(TW803_P0, 0x21, 0x04);
 319   1              
 320   1              //~ Wait for Checking HS/VS finish. ~//
 321   1              i=300;
 322   1              while(i)
 323   1              {
 324   2                      twdDelay(10);
 325   2                      i--;
 326   2                      if(I2CReadByte(TW803_P0, 0x21)&0x04)
 327   2                              break;
 328   2              }
 329   1              //~ Check if HS and VS is exist. ~//
 330   1              if((I2CReadByte(TW803_P0, 0x21)&0x03)==3)       //~ Synchronize is possible the Composite type or Separate type
             -. ~//
 331   1              {
 332   2                      
 333   2                      //~ Set up HS/VS polarity. We set it as auto-adjusting. ~//
 334   2                      I2CWriteByte(TW803_P0,0x10,0x19);
 335   2                      //~ Suppose     that sync. is Composite type and setup its route. ~//
 336   2                      m_Synctype=Sync_CS;
 337   2                      I2CWriteByte(TW803_P0,0x14,0x65);
 338   2                      twdDelay(500);
 339   2                      //~ Enable CSync detect and XCLK ~//
 340   2              /*      I2CWriteByte(TW803_P0,0x13,0x22);
 341   2                      twdDelay(1000);
 342   2                      
 343   2                      if(I2CReadByte(TW803_P0, 0x13)&0x80) //~ Check CSync detection is done or not. ~//
 344   2                      {
 345   2                              //~ If true, sync is Composite type. ~//
 346   2                              m_Synctype=Sync_CS;
 347   2                      }
 348   2                      else                                                         //~ Sync. is Separate type. ~//
 349   2                      {*/
 350   2                              //~ Setup Separate type. ~//                            
 351   2                              m_Synctype=Sync_SS;  
 352   2                              //~ Setup Separate type route. ~// 
 353   2                              I2CWriteByte(TW803_P0,0x14,0xF0);
 354   2                      
 355   2                      //}  
 356   2              }
 357   1              else                                                                     //~ No HS and VS, we suppose that synchronize is SOG type. ~//
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 7   

 358   1              {       
 359   2                      //~ Setup SOG/SOY type. ~//
 360   2                      m_Synctype=Sync_SOG;  
 361   2                      //~ Set up SOG/SOY  polarity. We set it as non-invert. ~//
 362   2                      I2CWriteByte(TW803_P0,0x10,0x39);
 363   2                      //~ Setup SOG/SOY  type route. ~//
 364   2                      I2CWriteByte(TW803_P0,0x11,0x20);
 365   2                      I2CWriteByte(TW803_P0,0x12,0xef);
 366   2                      I2CWriteByte(TW803_P0,0x14,0x6c);       
 367   2              }
 368   1              m_cSource = itypeRGB;
 369   1      
 370   1      }
 371          
 372          
 373          void SearchAltMode(void)
 374          {
 375   1              m_pModeDescriptorPtr = &ModeTable[EepPrivate.cModeID];
 376   1      
 377   1              m_cBuff[0] = m_pModeDescriptorPtr->cResID;
 378   1              m_pResolutionPtr = &ResolutionTable[m_cBuff[0]];
 379   1      
 380   1              if(m_pModeDescriptorPtr->cModeFlags1 & bSubSample)
 381   1              {
 382   2                      SetModeCaptureData(m_pModeDescriptorPtr->wHTotal/2, (m_pModeDescriptorPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)/
             -2,
 383   2                      (m_pModeDescriptorPtr->cVBlk-VSGEPW),m_pModeDescriptorPtr->cModeFlags2);
 384   2              }
 385   1              else if(m_pModeDescriptorPtr->cModeFlags1 & bDoubSample)
 386   1              {
 387   2                      SetModeCaptureData(m_pModeDescriptorPtr->wHTotal*2, (m_pModeDescriptorPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)*
             -2,
 388   2                      (m_pModeDescriptorPtr->cVBlk-VSGEPW),m_pModeDescriptorPtr->cModeFlags2);
 389   2              }
 390   1              else
 391   1              {
 392   2                      SetModeCaptureData(m_pModeDescriptorPtr->wHTotal,(m_pModeDescriptorPtr->wHBlk-HOFFSETPW-HOFFSET_MIN),
 393   2                      (m_pModeDescriptorPtr->cVBlk-VSGEPW), m_pModeDescriptorPtr->cModeFlags2);
 394   2              }
 395   1      
 396   1              if ((m_cSource&0x0F)==(isrcANALOG|isrcSOG))
 397   1                      twdDelay(250);
 398   1              else
 399   1                      twdDelay(350);  //for 3100(802B)
 400   1              
 401   1              if(!m_bDosMode)
 402   1              {
 403   2                      GetVResolution();
 404   2                      if(abs(m_pResolutionPtr->wVRes-m_wVRes) >2)
 405   2                      {
 406   3                              m_dwBuff[0] = 0;
 407   3                              m_bAlt = GetAlternate();
 408   3                      }         
 409   2                      else
 410   2                      {
 411   3                              m_wBuff[0] = m_pModeDescriptorPtr->wHTotal; 
 412   3                              m_dwBuff[0] = GetPhaseDelta(m_wBuff[0]);
 413   3                              m_bAlt = GetAlternate();      
 414   3                      }
 415   2              }
 416   1              else
 417   1              {
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 8   

 418   2                      m_wBuff[0] = m_pModeDescriptorPtr->wHTotal; 
 419   2                      m_dwBuff[0] = GetPhaseDelta(m_wBuff[0]);
 420   2                      m_bAlt = GetAlternate();
 421   2              }       
 422   1      }
 423          
 424          BOOL GetAlternate(void)
 425          {
 426   1              m_cBuff[2] = 0xFF;           
 427   1                      
 428   1              for (m_cBuff[0] = 0; m_cBuff[0] <= ALTHTOTAL; m_cBuff[0]++)
 429   1              {
 430   2                      m_pAltHTotalPtr = &AltHTotals[m_cBuff[0]];
 431   2                      if (m_pAltHTotalPtr->cModeID == EepPrivate.cModeID)
 432   2                      {
 433   3                              if(!m_bDosMode) //None Dos Mode
 434   3                              {
 435   4                                      m_cBuff[1] = m_pAltHTotalPtr->cResID;
 436   4                                      m_pResolutionPtr = &ResolutionTable[m_cBuff[1]];
 437   4                                      if ((m_cBuff[3] = abs(m_wVRes - m_pResolutionPtr->wVRes)) < 5)
 438   4                                      {
 439   5                                              if(m_pAltHTotalPtr->cModeFlags & bSubSample)
 440   5                                              {
 441   6                                              SetModeCaptureData(m_pAltHTotalPtr->wHTotal/2,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)/2,
 442   6                                                                                              (m_pAltHTotalPtr->cVBlk-VSGEPW),m_pAltHTotalPtr->cModeFlags);
 443   6                                              }
 444   5                                              else if(m_pAltHTotalPtr->cModeFlags & bDoubSample)
 445   5                                              {
 446   6                                              SetModeCaptureData(m_pAltHTotalPtr->wHTotal*2,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)*2,
 447   6                                                                                              (m_pAltHTotalPtr->cVBlk-VSGEPW),m_pAltHTotalPtr->cModeFlags);
 448   6                                              }
 449   5                                              else
 450   5                                              {
 451   6                                              SetModeCaptureData(m_pAltHTotalPtr->wHTotal,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN),
 452   6                                                                                      (m_pAltHTotalPtr->cVBlk-VSGEPW), m_pAltHTotalPtr->cModeFlags);
 453   6                                              }
 454   5      
 455   5                                              twdDelay(300);  //Add for 3100
 456   5                                              m_wBuff[0] = m_pAltHTotalPtr->wHTotal; 
 457   5                                              m_dwBuff[1] = GetPhaseDelta(m_wBuff[0]);
 458   5                                              //Keep bigger one
 459   5                                              if(m_dwBuff[0] < m_dwBuff[1])
 460   5                                              {
 461   6                                                      m_dwBuff[0] = m_dwBuff[1];
 462   6                                                      EepPrivate.cAltID    = m_cBuff[0];
 463   6                                              }
 464   5                                      }
 465   4                              }
 466   3                              else                            //Dos Mode
 467   3                              {
 468   4                              if(m_pAltHTotalPtr->cModeFlags & bSubSample)
 469   4                              {
 470   5                                      SetModeCaptureData(m_pAltHTotalPtr->wHTotal/2,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)/2,
 471   5                                                                                      (m_pAltHTotalPtr->cVBlk-VSGEPW),m_pAltHTotalPtr->cModeFlags);
 472   5                              }
 473   4                              else if(m_pAltHTotalPtr->cModeFlags & bDoubSample)
 474   4                              {
 475   5                                      SetModeCaptureData(m_pAltHTotalPtr->wHTotal*2,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN)*2,
 476   5                                                                                      (m_pAltHTotalPtr->cVBlk-VSGEPW),m_pAltHTotalPtr->cModeFlags);
 477   5                              }
 478   4                              else
 479   4                              {
C51 COMPILER V7.50   MODECTRL                                                              10/30/2006 16:14:45 PAGE 9   

 480   5                                      SetModeCaptureData(m_pAltHTotalPtr->wHTotal,(m_pAltHTotalPtr->wHBlk-HOFFSETPW-HOFFSET_MIN),
 481   5                                                                              (m_pAltHTotalPtr->cVBlk-VSGEPW), m_pAltHTotalPtr->cModeFlags);
 482   5                              }
 483   4      
 484   4                              twdDelay(300);  //Add for 3100
 485   4                              m_wBuff[0] = m_pAltHTotalPtr->wHTotal; 
 486   4                              m_dwBuff[1] = GetPhaseDelta(m_wBuff[0]);
 487   4                              //Keep bigger one
 488   4                              if(m_dwBuff[0] < m_dwBuff[1])
 489   4                              {

⌨️ 快捷键说明

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