📄 mode_detect.lst
字号:
C51 COMPILER V7.06 MODE_DETECT 11/21/2005 13:47:38 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MODE_DETECT
OBJECT MODULE PLACED IN .\Output\Mode_Detect.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Code\Mode_Detect.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
- PRINT(.\Output\Mode_Detect.lst) PREPRINT(.\Output\Mode_Detect.i) OBJECT(.\Output\Mode_Detect.obj)
stmt level source
1
2 #define __MODEDETECT__
3
4 #include "Header\Lcd_func.h"
5 #include "Header\Lcd_Main.h"
6 #include "Header\Access.h"
7 #include "Header\config.h"
8 #include "Header\OSD.h"
9 #include "Header\Lcd_Auto.h"
10 #include "Header\Frame_Sync.h"
11 #include "Header\Src_Ctrl.h"
12 #include "Header\LCD_OSD.h"
13
14
15 /////////////////////////////////////////////////////////
16 //------------------- Mode Detector -----------------//
17 /////////////////////////////////////////////////////////
18 void Mode_Detector(void)
19 {
20 1
21 1 switch (stGUD1.INPUT_SOURCE & 0x07)
22 1 {
23 2 case SOURCE_VGA :
24 2 case SOURCE_DVI :
25 2 // Save previous values of ucMode_Curr, bHpole_Curr and bVpole_Curr
26 2 bHpole_Prev = bHpole_Curr;
27 2 bVpole_Prev = bVpole_Curr;
28 2
29 2 if ((MODE_NOSIGNAL == ucMode_Curr) || (MODE_NOSUPPORT == ucMode_Curr))
30 2 Detect_Input_Mode();
31 2 else
32 2 Check_Input_Mode();
33 2 break;
34 2
35 2 default :
36 2 if ((MODE_NOSIGNAL == ucMode_Curr) || (MODE_NOSUPPORT == ucMode_Curr))
37 2 Detect_Video_Mode(); // Set default polarity
38 2 else
39 2 Check_Video_Mode(); // Set polarity after measure
40 2 break;
41 2 }
42 1
43 1 Measure_Mode(); // Measure mode-timing
44 1 }
45
46 void Measure_Mode(void)
47 {
48 1
49 1
50 1 switch (stGUD1.INPUT_SOURCE & 0x07)
51 1 {
52 2 RTDSetByte(SYNC_CTRL_4A,0x00);
53 2 case SOURCE_VGA :
54 2 RTDSetByte(SYNC_POR_4C, (SYNC_SS == ucSync_Type) ? 0x02 : 0x32);
C51 COMPILER V7.06 MODE_DETECT 11/21/2005 13:47:38 PAGE 2
55 2 break;
56 2
57 2 case SOURCE_DVI :
58 2 /*//eric 0729 test issue:DVI source change
59 2 #if (TMDS_ENABLE)
60 2 if (0 == ucTMDS_SEARCH_COUNTER && MODE_NOSIGNAL == ucMode_Curr) // V101C modified
61 2 {
62 2 RTDCodeW(TMDS_MANUAL_ON);
63 2
64 2 ucTMDS_SEARCH_COUNTER = 0x08;
65 2 }
66 2 ucTMDS_SEARCH_COUNTER -= 0x01;
67 2 #endif
68 2 */
69 2 RTDSetByte(SYNC_POR_4C, 0x02);
70 2 break;
71 2
72 2 default :
73 2 RTDSetByte(SYNC_POR_4C, 0x02);
74 2 break;
75 2 }
76 1
77 1 }
78
79 #if(SOURCE_AUTO_SCAN)
80 /////////////////////////////////////////////////////////
81 //---Detect which source with valid signal-------------//
82 /////////////////////////////////////////////////////////
83 void Measure_Source(unsigned char SOURCE)
84 {
85 1 switch(SOURCE)
86 1 {
87 2 case SOURCE_VGA:
88 2 RTDSetByte(SYNC_CTRL_4A,0x01);
89 2 break;
90 2 case SOURCE_DVI:
91 2 RTDSetByte(SYNC_CTRL_4A,0x03);
92 2 break;
93 2 case SOURCE_AV:
94 2 I2CWrite(V_ENABLE);
95 2 I2CWrite(AV_DETECT);
96 2 break;
97 2 case SOURCE_SV:
98 2 I2CWrite(V_ENABLE);
99 2 I2CWrite(SV_DETECT);
100 2 break;
101 2 }
102 1 //RTDSetByte(SYNC_POR_4C, 0x32);
103 1 //RTDSetByte(SYNC_POR_4C, 0x02);
104 1 //RTDSetByte(SYNC_POR_4C, (stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA ? 0x32 : 0x02);
105 1
106 1 if(((stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA) && (SYNC_SS != ucSync_Type))
107 1 RTDSetByte(SYNC_POR_4C,0x32);
108 1 else
109 1 RTDSetByte(SYNC_POR_4C,0x02);
110 1
111 1 Delay_Xms(35);
112 1 //Delay_Xms(24);
113 1
114 1
115 1 }
116 #endif
C51 COMPILER V7.06 MODE_DETECT 11/21/2005 13:47:38 PAGE 3
117
118 unsigned char VGA_Mode_Search(unsigned int HS_Pulse)
119 {
120 1 unsigned char ucMode_Temp,m;
121 1 Data[0] = HS_Pulse * 12 / usHsync; // 0 : 720x350; 1 : 640x350;
122 1
123 1 ucMode_Temp = MODE_NOSUPPORT;
124 1
125 1 // Search for Standard Mode
126 1 m = MODE_1280x1024x75HZ; //anson
127 1 // m = MODE_1600x1200x60HZ;
128 1 do
129 1 {
130 2 if ((usHsync > VGA_Mode[m][0]) && (usHsync < VGA_Mode[m][1]))
131 2 {
132 3 if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3]))
133 3 {
134 4 if (MODE_1280x1024x75HZ == m)
135 4 {
136 5 if (0 == (bVpole_Curr | bHpole_Curr)) m = MODE_1280x1024x76HZ; // SUN 1024-76
137 5 }
138 4 else if (MODE_1024x0768x75HZ == m)
139 4 {
140 5 if (0 == (bVpole_Curr | bHpole_Curr)) m = MODE_1024x0768x74HZ; // MAC768-75
141 5 }
142 4 else if (MODE_0640x0480x60HZ == m && bVpole_Curr != bHpole_Curr)
143 4 {
144 5 // MODE_VGA350x60Hz : 640x350 60Hz
145 5 // MODE_VGA350x60Hz | 0x40 : 720x350 60Hz
146 5 // MODE_VGA400x60Hz : 640x400 60Hz
147 5 // MODE_VGA400x60Hz | 0x40 : 720x400 60Hz
148 5 if (bHpole_Curr)
149 5 m = Data[0] ? MODE_VGA350x60Hz : MODE_VGA350x60Hz | 0x40;
150 5 else
151 5 m = (stGUD1.FUNCTION & 0x10) ? MODE_VGA400x60Hz : MODE_VGA400x60Hz | 0x40;
152 5 //m = (stGUD1.INPUT_SOURCE & 0x80) ? MODE_VGA400x60Hz : MODE_VGA400x60Hz | 0x40;
153 5 }
154 4 else if (MODE_0640x0480x50HZ == m && bVpole_Curr != bHpole_Curr)
155 4 {
156 5 // MODE_VGA350x50Hz : 640x350 50Hz
157 5 // MODE_VGA350x50Hz | 0x40 : 720x350 50Hz
158 5 // MODE_VGA400x50Hz : 640x400 50Hz
159 5 // MODE_VGA400x50Hz | 0x40 : 720x400 50Hz
160 5 if (bHpole_Curr)
161 5 m = Data[0] ? MODE_VGA350x50Hz : MODE_VGA350x50Hz | 0x40;
162 5 else
163 5 m = (stGUD1.FUNCTION & 0x10) ? MODE_VGA400x50Hz : MODE_VGA400x50Hz | 0x40;
164 5 //m = (stGUD1.INPUT_SOURCE & 0x80) ? MODE_VGA400x50Hz : MODE_VGA400x50Hz | 0x40;
165 5 }
166 4 else if (MODE_0720x0400x85HZ == m)
167 4 {
168 5 if (1 == bHpole_Curr && 0 == bVpole_Curr)
169 5 m = MODE_0640x0350x85HZ;
170 5 else if (stGUD1.FUNCTION & 0x10) //else if (stGUD1.INPUT_SOURCE & 0x80)
171 5 m = MODE_0640x0400x85HZ;
172 5 }
173 4 else if (MODE_0720x0400x70HZ == m)
174 4 {
175 5 if (1 == bHpole_Curr && 0 == bVpole_Curr)
176 5 m = Data[0] ? MODE_0640x0350x70HZ : MODE_0720x0350x70HZ;
177 5 else if ((stGUD1.FUNCTION & 0x10)==0) //else if (stGUD1.INPUT_SOURCE & 0x80) //anson
178 5 // else if (stGUD1.FUNCTION & 0x10) //else if (stGUD1.INPUT_SOURCE & 0x80)
C51 COMPILER V7.06 MODE_DETECT 11/21/2005 13:47:38 PAGE 4
179 5 m = MODE_0640x0400x70HZ;
180 5 }
181 4 else if (MODE_1024x0768x59HZ == m)
182 4 {
183 5 if(HS_Pulse > 45)
184 5 m = MODE_1024x0768x60HZ;
185 5 }
186 4 else if (MODE_1024x0768x60HZ == m)
187 4 {
188 5 if(HS_Pulse <= 45)
189 5 m = MODE_1024x0768x59HZ;
190 5 }
191 4 else if(MODE_1024x0768x72HZ == m) //anson 05_0321
192 4 {
193 5 if(ucRefresh <= 71)
194 5 m = MODE_1024x0768x70HZ;
195 5 }
196 4
197 4 ucMode_Temp = m;
198 4 }
199 3 }
200 2 }
201 1 while ((0 != --m) && (MODE_NOSUPPORT == ucMode_Temp));
202 1
203 1 // Search for User Mode
204 1 if (MODE_NOSUPPORT == ucMode_Temp)
205 1 {
206 2 usIPV_ACT_LEN = 0;
207 2
208 2 m = MODE_USER1280x1024; //anson
209 2 // m = MODE_USER1600x1200;
210 2 do
211 2 {
212 3 if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3]))
213 3 {
214 4 usIPV_ACT_LEN = CAP_WIN[m][4];
215 4
216 4 if ((usHsync >= VGA_Mode[m][0]) && (usHsync <= VGA_Mode[m][1]))
217 4 {
218 5 ucMode_Temp = m; // Support User Mode
219 5 }
220 4 }
221 3 }
222 2 while ((MODE_USER720x400 <= --m) && (MODE_NOSUPPORT == ucMode_Temp));
223 2 }
224 1
225 1 return ucMode_Temp;
226 1
227 1 }
228
229 unsigned char Partial_Display(void)
230 {
231 1 unsigned char ucMode_Temp;
232 1
233 1 if (DISP_LEN < usIPV_ACT_LEN) // V Scale-down
234 1 {
235 2 // Estimate display clock rate for full screen
236 2 // DCLK = (24.576MHz / usHsync) * DCLK per display line * (display image lines / input image lines)
237 2 ((unsigned int *)Data)[0] = (unsigned long)2458 * Mode_Preset[MODE_UNDEFINED1][0] * DISP_LEN
238 2 / ((unsigned long)100 * usIPV_ACT_LEN * usHsync);
239 2
240 2 if (MAX_DCLK < ((unsigned int *)Data)[0])
C51 COMPILER V7.06 MODE_DETECT 11/21/2005 13:47:38 PAGE 5
241 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -