📄 mode.lst
字号:
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 + -