?? modehandle.lst
字號(hào):
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MODEHANDLE
OBJECT MODULE PLACED IN .\BIN\ModeHandle.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\SRC\ModeHandle.C OPTIMIZE(9,SIZE) DEFINE(X17,TW2600XW02) DEBUG OBJECTEXTE
-ND PRINT(.\LST\ModeHandle.lst) OBJECT(.\BIN\ModeHandle.obj)
stmt level source
1 #include "MyDef.H"
2 #include "F63XREG.H"
3 #include "F63XDEF.H"
4 #include "math.h"
5 #include "stdio.h"
6 #include "RAM.H"
7 #include "ModeHandle.H"
8 #include "UserAdj.H"
9 #include "IIC.H"
10 #include "Scaler.H"
11 #include "MCU.H"
12 #include "PANEL.H"
13 #include "AutoAdj.H"
14 #include "ROM_MAP.H"
15 #include "SAA7114.H"
16
17 typedef union
18 {
19 unsigned short w;
20 unsigned char b[2];
21 }Union;
22
23 void GetCounter(void)
24 {
25 1 unsigned char temp;
26 1 Union TempFreq;
27 1 NoSyncFlag = 0;
28 1 if(ReadIIC563(0x19a) & BIT_5) //H+V high piority
29 1 if(SyncMode == 0)
30 1 {
31 2 V_SYNC = 0;
32 2 H_SYNC = 0;
33 2 NoSyncFlag = 1;
34 2 return;
35 2 }
36 1 temp = ReadIIC563(0x19a);
37 1 HV_Pol = (temp & 0x03) << 4;
38 1 BypassSOG = 0;
39 1
40 1 if(!(temp & BIT_6)) //Sep/Comp Hsync present
41 1 {
42 2 TempFreq.w = ReadWordIIC563(0x19b);
43 2 H_SYNC = (HSYNC_CLK)/TempFreq.w;
44 2 BypassSOG = 1;
45 2 if(H_SYNC <100)
46 2 {
47 3 H_SYNC = 0;
48 3 NoSyncFlag = 1;
49 3 }
50 2 }
51 1 else
52 1 {
53 2 if(SyncMode == 3){// Jacky 20040623 When DVI DE mode, GI_HCNT_OV alway "1"
54 3 #if DVImode == DEmode
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 2
55 3 if(ReadIIC563(0x1ab) & BIT_0)
56 3 {
57 4 TempFreq.w = ReadWordIIC563(0x19b);
58 4 H_SYNC = (HSYNC_CLK)/TempFreq.w;
59 4 BypassSOG = 1;
60 4 if(H_SYNC <100)
61 4 {
62 5 H_SYNC = 0;
63 5 NoSyncFlag = 1;
64 5 }
65 4 }
66 3 else
67 3 {
68 4 H_SYNC = 0;
69 4 NoSyncFlag = 1;
70 4 }
71 3 #else
H_SYNC = 0;
NoSyncFlag = 1;
#endif
75 3 }
76 2 else{
77 3 H_SYNC = 0;
78 3 NoSyncFlag = 1;
79 3 }
80 2 }
81 1 if(!(temp & BIT_7))//Sep/Comp Vsync present
82 1 {
83 2 TempFreq.w = ReadWordIIC563(0x19d);
84 2 V_SYNC = (VSYNC_CLK)/TempFreq.w;
85 2 BypassSOG = 1;
86 2 if(V_SYNC <100)
87 2 {
88 3 V_SYNC = 0;
89 3 NoSyncFlag = 1;
90 3 }
91 2 }
92 1 else
93 1 {
94 2 V_SYNC = 0; //over flow
95 2 NoSyncFlag = 1;
96 2 }
97 1 if((SyncMode == 2||SyncMode == 6) && !NoSyncFlag)
98 1 if(!VsyncValide()) //for SOG Vsync pulse detect
99 1 {
100 2 V_SYNC = 0;
101 2 H_SYNC = 0;
102 2 NoSyncFlag = 1;
103 2 }
104 1
105 1 }
106
107 void CheckFreq(void)
108 {
109 1 bit UnStable;
110 1 Byte i,Count;
111 1 if(DetectIRQ() || ChangeMode>0)
112 1 {
113 2 if(SyncMode == 3){
114 3 DVIBandWidthDetection();
115 3 }
116 2 OutOfRange = 0;
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 3
117 2 H_SYNC_Temp = 0x5555;
118 2 V_SYNC_Temp = 0x5555;
119 2 if(!BurnInMode && !ForceToBack)
120 2 ForceToBackground(0,0,0); //Set fource to background
121 2 Count = 0;
122 2 for(i=0;i<3;i++)
123 2 {
124 3 UnStable = 0;
125 3 GetCounter();
126 3 if(HV_Pol_Temp != HV_Pol)
127 3 UnStable = 1;
128 3 if(abs(H_SYNC_Temp - H_SYNC)>10)
129 3 UnStable = 1;
130 3 if(abs(V_SYNC_Temp - V_SYNC)>10)
131 3 UnStable = 1;
132 3 if(UnStable)
133 3 {
134 4 if((SyncMode == 3) && (abs(DVI_Clock - ReadIIC563(0x016)) > 2)) //Jacky 20050512
135 4 DVIBandWidthDetection();
136 4 HV_Pol_Temp = HV_Pol;
137 4 H_SYNC_Temp = H_SYNC;
138 4 V_SYNC_Temp = V_SYNC;
139 4 i = 0;
140 4 }
141 3 Sleep(35); //wait for Vsync update
142 3 Count++;
143 3 if(Count > 15) //freq unstable too long
144 3 {
145 4 V_SYNC = 0;
146 4 H_SYNC = 0;
147 4 NoSyncFlag = 1;
148 4 break;
149 4 }
150 3 }
151 2 ChangeMode = 0;
152 2 FastMuteEnable = 1;
153 2 WriteIIC563(0x1ab,0x3f); //clear IRQ
154 2 WriteIIC563(0x1ac,0x1f);
155 2 EndMute = 0;
156 2 MuteTimer = MUTE_DELAY_TIME;
157 2 }
158 1 if(NoSyncFlag)
159 1 {
160 2 if(ChangeMode == 0)
161 2 {
162 3 FastMuteEnable = 0;
163 3 if(!BurnInMode)
164 3 WriteIIC563(0x159,0x20); //fast mute disable
165 3 NoSync();
166 3 }
167 2 }
168 1 else
169 1 {
170 2 if(ChangeMode == 0 && !EndMute && MuteTimer == 0)
171 2 {
172 3 GetCounter(); //recheck frequency
173 3 if(HV_Pol_Temp != HV_Pol)
174 3 ChangeMode = 1;
175 3 if(abs(H_SYNC_Temp - H_SYNC)>10)
176 3 ChangeMode = 1;
177 3 if(abs(V_SYNC_Temp - V_SYNC)>10)
178 3 ChangeMode = 1;
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 4
179 3 EndMute = 1;
180 3 if(PowerDown)
181 3 {
182 4 ScalerPowerUp();
183 4 PowerTimer = POWER_TIME;
184 4 MuteTimer = 0;
185 4 }
186 3 if(BurnInMode)
187 3 {
188 4 BurnInMode = 0;
189 4 FactMode = 0;//jacky0316 Item41 BurnInMode
190 4 Write24C16(ep_Status,StatusFlag);
191 4 LED_GrnOn();
192 4 LED_RedOff();
193 4 }
194 3 //FastMuteOn();
195 3 WriteIIC563(0x159,0xa0); //fast mute disable
196 3 BackLightOff();
197 3 /*
198 3 VideoMute = 1;
199 3 ForceToBackground(0,0,0); //Set fource to background
200 3 */
201 3 Osd_Off();
202 3 if(ChangeMode == 0)
203 3 {
204 4 GetMode();
205 4 switch(OutOfRange)
206 4 {
207 5 case 0:
208 5 SetDisplayNormal();
209 5 //if(NewMode && SyncMode < 3) //bypass DVI
210 5 // TunePositionOnly();
211 5 //ShowSource();
212 5 break;
213 5 case 1:
214 5 SetDisplayNormal();
215 5 TunePositionOnly();
216 5 ShowMessage(MSG_OUTRANGE);
217 5 break;
218 5 case 2:
219 5 FastMuteEnable = 0;
220 5 ShowMessage(MSG_OUTRANGE);
221 5 break;
222 5 }
223 4 Sleep(PowerUpInvTiming);
224 4 //FastMuteOff();
225 4 BackLightOn();
226 4 VideoMute = 0;
227 4 if(NewMode && (AutoSetting == 1) && (SyncMode < 3) && (OutOfRange == 0) && (ModePoint > 18)) //bypass
-DVI and normal mode
228 4 {
229 5 ShowMessage(MSG_AUTOTUNE);
230 5 AutoTune();
231 5 //Write24C16(ep_Reso_Offset + (ModePoint * 8), ResolutionPtr|0x80);
232 5 }
233 4 }
234 3 }
235 2 }
236 1 }
237
238 void GetMode(void)
239 {
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 5
240 1 bit PolPass;
241 1 Byte ch;
242 1 Word i,Addr;
243 1 Union Hf,Vf;
244 1 ModePoint = 0;
245 1 UserModeRefReso = 0;
246 1 /*
247 1 ch = ReadIIC563(0x020);
248 1 if(ReadIIC563(0x19a) & BIT_2){
249 1 Interlance = 1;
250 1 WriteIIC563(0x020,ch|BIT_2);
251 1 }
252 1 else{
253 1 Interlance = 0;
254 1 WriteIIC563(0x020,ch);
255 1 }
256 1 */
257 1 VTotal = (Word)(((unsigned long)H_SYNC * 1000)/ V_SYNC);
258 1 if(SyncMode == 0 || SyncMode == 3)
259 1 i = 0;
260 1 else
261 1 i = 8;
262 1 for(;i< ModeNum;i++)
263 1 {
264 2 Addr = ep_Mode_Data + i * 4;
265 2 Hf.b[0] = Read24C16(Addr++); //check h_sync
266 2 Hf.b[1] = Read24C16(Addr++);
267 2 Vf.b[0] = Read24C16(Addr++);
268 2 Vf.b[1] = Read24C16(Addr);
269 2 PolPass = 0;
270 2 if(Vf.b[0] & 0x80)
271 2 PolPass = 1;
272 2 if((Vf.b[0] & 0x30) == HV_Pol)
273 2 PolPass = 1;
274 2 if(Vf.b[0] & 0x40)
275 2 {
276 3 ch = (Vf.b[0] & 0x40) >> 1;
277 3 ch |= ch >> 1;
278 3 if(ch == HV_Pol)
279 3 PolPass = 1;
280 3 }
281 2 if(PolPass)
282 2 {
283 3 if(i == 35 || i== 68 ){// Jacky 20040524 for 1024x768@60Hz and 1280x768@60Hz
284 4 if(abs(Hf.w - H_SYNC)<5)
285 4 {
286 5 Vf.b[0] &= 0x0f;
287 5 if(abs(Vf.w - V_SYNC) < 5)
288 5 {
289 6 //#if PRINT_MESSAGE
290 6 // printf("Mode %d\n",(unsigned short)ModePoint);
291 6 //#endif
292 6 //if(i < 8 && !TextMode)
293 6 // break;
294 6 //if(i >= 8)
295 6 break;
296 6 }
297 5 }
298 4 }
299 3 else{
300 4 if(abs(Hf.w - H_SYNC)<10)
301 4 {
C51 COMPILER V6.12 MODEHANDLE 03/05/2008 14:34:53 PAGE 6
302 5 Vf.b[0] &= 0x0f;
303 5 if(abs(Vf.w - V_SYNC) < 10)
304 5 {
305 6 //#if PRINT_MESSAGE
306 6 // printf("Mode %d\n",(unsigned short)ModePoint);
307 6 //#endif
308 6 //if(i < 8 && !TextMode) //graph mode stop search text mode 62~69
309 6 // break;
310 6 //if(i >= 8)
311 6 break;
312 6 }
313 5 }
314 4 }
315 3 }
316 2 }
317 1 ModePoint = i;
318 1 //if(ModePoint < 18)
319 1 // GTmodeEn = 1;
320 1 //else
321 1 // GTmodeEn = 0;
322 1 if(SyncMode == 6 && ModePoint == 11)
323 1 if(ModePoint == 11) //For NTSC 480P
324 1 ModePoint = 12;
325 1 else if(ModePoint == 8) //For PAL 574i
326 1 ModePoint = 69;
327 1 if(ModePoint == ModeNum)
328 1 {
329 2 #if PRINT_MESSAGE
printf("user's mode\n");
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -