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

📄 mode.lst

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.23a  MODE                                                                  09/10/2004 16:09:01 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE MODE
OBJECT MODULE PLACED IN MODE.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MODE.C OPTIMIZE(6,SIZE) ORDER DEFINE(DEBUGMSG=0,DEBUGTOOL=0) DEBUG OBJECTEX
                    -TEND CODE SYMBOLS

stmt level    source

   1          /************************************************
   2           *                                              *
   3           *      MODE.C:  Mascot Display Mode routine    *
   4           *                                              *
   5           ************************************************/
   6          #include <reg51.h>
   7          #include <stddef.h>
   8          #include "mascot.h"
   9          #include "osd.h"
  10          #include "global.h"
  11          
  12          
  13          
  14          
  15          #if PANEL_1280
              #include "SXGATBL.h"
              #else
  18          #include "XGATBL.h"
  19          #endif
  20          
  21          #include "ADCTBL.h"
  22          
  23          
  24          
  25          //
  26          //      Display Mode Table
  27          //
  28          
  29          MODETBL code ModeTbl[] = {
  30           
  31          #if 0
               {tvNTSCTbl,NULL,     640,      240,0+NOPOL                             }, //0: NTSC
               {tvPALTbl, NULL,     720,      286,0+NOPOL                             }, //1: PAL
              #else
  35           {NULL,     NULL,       0,   0,  0                                      }, 
  36           {NULL,     NULL,       0,   0,  0                                      }, 
  37          #endif
  38           {Mode350Tbl, Mode2Tda, 640, 350,2                      }, //2: 640x350 50
  39           {Mode350Tbl, Mode3Tda, 640, 350,2                      }, //3: 640x350 60
  40           {Mode350Tbl, Mode4Tda, 640, 350,2     +PRESETMODE      }, //4: 640x350 70
  41           {Mode400aTbl,Mode5Tda, 640, 400,2                      }, //5: 640x350 84
  42           
  43           {Mode400Tbl, Mode6Tda, 720, 400,1+NOPOL                        }, //6: 720x400 50
  44           {Mode400Tbl, Mode7Tda, 720, 400,1+NOPOL                        }, //7: 720x400 60
  45           {Mode400Tbl, Mode8Tda, 720, 400,1+NOPOL+PRESETMODE     }, //8: 720x400 70
  46           {Mode400Tbl, Mode9Tda, 720, 400,1+NOPOL                        }, //9: 720x400 84
  47           
  48           {Mode400aTbl,Mode10Tda, 640, 400,3+NOPOL                       }, //10: 640x400 56
  49          
  50           {Mode480Tbl,Mode11Tda, 640, 480,3+NOPOL+PRESETMODE     }, //11: 640x480 50
  51           {Mode480Tbl,Mode12Tda, 640, 480,3+NOPOL+PRESETMODE     }, //12: 640x480 60
  52           {Mode480Tbl,Mode13Tda, 640, 480,2+NOPOL+PRESETMODE     }, //13: 640x480 66 (MAC)
  53           {Mode480Tbl,Mode14Tda, 640, 480,3+NOPOL                        }, //14: 640x480 70
  54           {Mode480Tbl,Mode15Tda, 640, 480,3+NOPOL+PRESETMODE     }, //15: 640x480 72
C51 COMPILER V6.23a  MODE                                                                  09/10/2004 16:09:01 PAGE 2   

  55           {Mode480Tbl,Mode16Tda, 640, 480,3+NOPOL+PRESETMODE     }, //16: 640x480 75
  56           {Mode480Tbl,Mode17Tda, 640, 480,3+NOPOL                }, //17: 640x480 85
  57           
  58           {Mode600Tbl,Mode18Tda, 800, 600,0+NOPOL+PRESETMODE     }, //18: 800x600 56
  59           {Mode600Tbl,Mode19Tda, 800, 600,0+NOPOL+PRESETMODE     }, //19: 800x600 60
  60           {Mode600Tbl,Mode20Tda, 800, 600,0+NOPOL                        }, //20: 800x600 66 (MAC)
  61           {Mode600Tbl,Mode21Tda, 800, 600,0+NOPOL                        }, //21: 800x600 70
  62           {Mode600Tbl,Mode22Tda, 800, 600,0+NOPOL+PRESETMODE     }, //22: 800x600 72
  63           {Mode600Tbl,Mode23Tda, 800, 600,0+NOPOL+PRESETMODE     }, //23: 800x600 75
  64           {Mode600Tbl,Mode24Tda, 800, 600,0+NOPOL                }, //24: 800x600 85
  65          
  66           {Mode624Tbl,Mode25Tda, 832, 624,3+NOPOL+PRESETMODE     }, //25: 832x624 75
  67           
  68           {Mode768aTbl,Mode26Tda,1024, 768,0+NOPOL                       }, //26: 1024x768 43i
  69           {Mode768Tbl,Mode27Tda,1024, 768,3+NOPOL+PRESETMODE     }, //27: 1024x768 60
  70           {Mode768Tbl,Mode28Tda,1024, 768,3+NOPOL+PRESETMODE     }, //28: 1024x768 66 (MAC)
  71           {Mode768Tbl,Mode29Tda,1024, 768,3+NOPOL+PRESETMODE     }, //29: 1024x768 70
  72           {Mode768Tbl,Mode30Tda,1024, 768,0+NOPOL                }, //30: 1024x768 72
  73           {Mode768Tbl,Mode31Tda,1024, 768,0+NOPOL+PRESETMODE     }, //31: 1024x768 75
  74           {Mode768Tbl,Mode32Tda,1024, 768,3                  }, //32: 1024x768 75 (MAC)
  75           {Mode768Tbl,Mode33Tda,1024, 768,0+NOPOL                }, //33: 1024x768 85
  76           {Mode768Tbl,Mode34Tda,1024, 768,3+NOPOL                        }, //34: 1024x768 90
  77          
  78           {Mode864Tbl,Mode35Tda,1152, 864, 0+NOPOL                       }, //35: 1152x864 60
  79           {Mode864Tbl,Mode36Tda,1152, 864, 0+NOPOL                       }, //36: 1152x864 70
  80           {Mode864Tbl,Mode37Tda,1152, 864, 0+NOPOL+PRESETMODE}, //37: 1152x864 75
  81           
  82           {Mode870Tbl,Mode38Tda,1152, 870, 0+NOPOL                       }, //38: 1152x870 75
  83           
  84           {Mode900Tbl,Mode39Tda,1152, 900, 0+NOPOL                       }, //39: 1152x900 66
  85           {Mode900Tbl,Mode40Tda,1152, 900, 0+NOPOL                       }, //40: 1152x900 76
  86           
  87           {Mode960Tbl,Mode41Tda,1280, 960, 0+NOPOL                       }, //41: 1280x960 60
  88           {Mode960Tbl,Mode42Tda,1280, 960, 0+NOPOL                       }, //42: 1280x960 70
  89           {Mode960Tbl,Mode43Tda,1280, 960, 0+NOPOL                       }, //43: 1280x960 75
  90          
  91           {Mode1024Tbl,Mode44Tda,1280, 1024,0+NOPOL+PRESETMODE},//44: 1280x1024 60
  92           {Mode1024Tbl,Mode45Tda,1280, 1024,0+NOPOL                       },//45: 1280x1024 66
  93           {Mode1024Tbl,Mode46Tda,1280, 1024,0+NOPOL                       },//46: 1280x1024 70
  94           {Mode1024Tbl,Mode47Tda,1280, 1024,0+NOPOL                       },//47: 1280x1024 72
  95           {Mode1024Tbl,Mode48Tda,1280, 1024,0+NOPOL+PRESETMODE},//48: 1280x1024 75
  96           {Mode1024Tbl,Mode49Tda,1280, 1024,0+NOPOL                       },//49: 1280x1024 85
  97          
  98          };
  99          
 100          
 101          #define MAXMODE (sizeof(ModeTbl)/sizeof(MODETBL))
 102          
 103          void calculateDCLK(void);
 104          bit fineCalculateDCLK(void);
 105          bit modeAdjust(void); 
 106          #if (USE_TCON)
              bit modeAdjustMVz(void);
              void PatchTconTable(char);
              unsigned char checkFifoState(void);
              #endif
 111          
 112          
 113          //
 114          //      Set Display Mode
 115          //      Return: current mode, -1 unknown mode
 116          //
C51 COMPILER V6.23a  MODE                                                                  09/10/2004 16:09:01 PAGE 3   

 117          unsigned char modeSetMode(unsigned char mode, unsigned char sync_pol)
 118          {
 119   1              MODETBL *modetbl;
 120   1              unsigned char pol, *regtbl;
 121   1      
 122   1      #if (!USE_TCON && !MODE_ADJ_BY_CALCULATE)   
                      bit temp;
              #endif
 125   1      
 126   1              if (mode >= MAXMODE) 
 127   1              {
 128   2      #if DEBUGMSG
                              printf("    mode overlimit %d\n", MAXMODE);
              #endif
 131   2                      return MODE_OUTOFSYNC;
 132   2              }
 133   1      
 134   1      
 135   1      #if HYUNDAI_HT17E11_200                 //avoid discharge when CR24 sets 0xc0
                      if (!backlightOffFlag)
                              miscTurnOffBackLight();
              #endif
 139   1      
 140   1              freeRunFlag = 0;
 141   1              modetbl = &ModeTbl[mode];  
 142   1      
 143   1              checkModeChange(); // by seven 030718
 144   1              if (modechangeflag) // by seven 030718
 145   1                      return MODE_CHANGE;    
 146   1      
 147   1              // Program TDA registers
 148   1              regtbl = modetbl->tdaptr;
 149   1              if (!(eepData.MascotFlag & FLAG_PORTB) && (regtbl!=NULL)) 
 150   1                      TDADataTableOut(regtbl);
 151   1      
 152   1              // Program Mascot
 153   1              RegBitOut(0x24, 0x00 ,0x03);     // disable minify
 154   1      
 155   1              regtbl = modetbl->modeptr;
 156   1          
 157   1              if (regtbl == NULL) 
 158   1              {
 159   2      #if DEBUGMSG
                      printf("    modeptr==NULL\n");
              #endif
 162   2                      return MODE_OUTOFSYNC;
 163   2              }
 164   1              
 165   1              RegDataTableOut(regtbl);
 166   1              
 167   1              dspMute(2); // by seven 030717
 168   1      
 169   1              // setting polarity
 170   1              if ( (regtbl = modetbl->tdaptr) != NULL ) 
 171   1              {
 172   2                      if (eepData.MascotFlag & FLAG_PORTB) 
 173   2                              RegBitOut(0x33, sync_pol<<1, 0x06);
 174   2                      else 
 175   2                      {
 176   3                              RegBitOut(0x32, sync_pol<<1, 0x06);
 177   3                              pol = (*(regtbl+TDA_CTRL_OFF) & 0x3F) | (sync_pol<<6);
 178   3                              pol ^= 0x40;    
C51 COMPILER V6.23a  MODE                                                                  09/10/2004 16:09:01 PAGE 4   

 179   3                              RegByteOut(TDA_CTRL, pol);
 180   3                              
 181   3                              //Enable CKADCO, Vsync for COAST
 182   3                              RegBitOut(0x18, 0x18, 0x18);
 183   3                      }
 184   2              }
 185   1              
 186   1              CurrentMode = mode | (PresetModeFlag ? 0x00: 0x80);
 187   1              CurrentWidth = modetbl->width;
 188   1              CurrentHeight = modetbl->height;
 189   1      
 190   1              checkModeChange(); // by seven 030718
 191   1              if (modechangeflag) // by seven 030718
 192   1                      return MODE_CHANGE;
 193   1      
 194   1      #if PANEL_1280  //by seven 030526
                  if (CurrentWidth > 1024)
                      RegBitOut(0x30,0x80,0x80);
                  else
                      RegBitOut(0x30,0x00,0x80);
              #else   // for panel 1024x768
 200   1              RegBitOut(0x30,0x00,0x80);
 201   1      #endif
 202   1      
 203   1      #if CALCULATE_ZOOM
                                      ival = CurrentWidth - 1;
                                      ival1 = CurrentHeight - 1;
                      #if PANEL_1280
                                      ival = ((unsigned long)ival << 16)/1279;
                                      ival1 = ((unsigned long)ival1 << 16)/1023;
              
                                      if (CurrentWidth == 1280) ival = 0;
                                      if (CurrentHeight == 1024) ival1 = 0;
                      #else
                                      ival = ((unsigned long)ival << 16)/1023;
                                      ival1 = ((unsigned long)ival1 << 16)/767;
              
                                      if (CurrentWidth == 1024) ival = 0;
                                      if (CurrentHeight == 768) ival1 = 0;
                      #endif
              
                                      RegWordOut(0x4b, ival);
                                      RegWordOut(0x4d, ival1);
              #endif
 223   1      
 224   1              checkModeChange(); // by seven 030718
 225   1              if (modechangeflag) // by seven 030718
 226   1                      return MODE_CHANGE;
 227   1      
 228   1      #if CALCULATE_DCLK
 229   1              calculateDCLK();
 230   1      #endif
 231   1      
 232   1              if (modechangeflag) // by seven 030718
 233   1                      return MODE_CHANGE;
 234   1      
 235   1              if (!(eepData.MascotFlag & FLAG_PORTB))
 236   1              {
 237   2                      if ( eepFindModeEntry() )
 238   2                      {
 239   3                              adjVPos(0,HIDE);
 240   3                              adjHPos(0,HIDE);
C51 COMPILER V6.23a  MODE                                                                  09/10/2004 16:09:01 PAGE 5   

 241   3                              adjPitch(0,HIDE);
 242   3                              adjPhase(0,HIDE);
 243   3      #if DEBUGMSG
                      printf("        PRESET loaded\n");
              #endif
 246   3                      }
 247   2              }
 248   1      
 249   1      #if (HYUNDAI_HT17E11_200 && !MODE_ADJ_BY_CALCULATE)
                      if (!((CurrentWidth > 1024 && CurrentWidth <= 1280) && (CurrentHeight > 768 && CurrentHeight < 1024)))
                              RegBitOut(0x24, 0x10, 0x30);
              #elif CHIMEI_M150X3
                      RegBitOut(0x24, 0x20, 0x30);
                      RegByteOut(0x5f,0xf0);
              #endif
 256   1      
 257   1      
 258   1      #if SRC_SI151
                      if ((eepData.MascotFlag & FLAG_PORTB) && (CurrentWidth > 1024)) 
                      {
                              ival = RegByteIn(0x3B);
                              ival = (ival<<8)+RegByteIn(0x3A)+1;
                              RegByteOut(0x3A, ival);
                              RegByteOut(0x3B, ival>>8);
                      }
              #endif
 267   1      
 268   1      
 269   1      /*
 270   1              if (eepData.MascotFlag & FLAG_PORTB)
 271   1              {
 272   1                      if((CurrentMode & 0x7f)== 39 || (CurrentMode & 0x7f)== 41)
 273   1                              RegBitOut(0x31,0x60,0x60);       // External DE         //09092002
 274   1                      else
 275   1                              RegBitOut(0x31,0x20,0x60);       // External DE         //09092002
 276   1              }
 277   1      */

⌨️ 快捷键说明

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