📄 auto.lst
字号:
C51 COMPILER V7.50 AUTO 10/30/2006 16:14:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AUTO
OBJECT MODULE PLACED IN .\Obj\AUTO.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\VGA\AUTO.C LARGE OPTIMIZE(6,SPEED) BROWSE INCDIR(.\Include\;.\Source
-\;.\Include\Panel\;.\Include\GammaTable\;.\Include\tuner\) DEFINE(T103) DEBUG OBJECTEXTEND PRINT(.\AUTO.lst) OBJECT(.\Ob
-j\AUTO.obj)
line level source
1 //---------------------------------------------------------------------------
2 // Terawins Inc. Company Confidential Strictly Private
3 //
4 // $Archive: Auto.c 702 $
5 // $Revision: 1.01 $
6 // $Author: JoannW $
7 // $Date: 2003/04/14 $
8 //
9 // --------------------------------------------------------------------------
10 // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
11 // --------------------------------------------------------------------------
12 // Copyright 2002 (c) Terawins Inc.
13 // This is an unpublished work.
14 // --------------------------------------------------------------------------
15 #include <reg51.h>
16 #include <math.h>
17 #include "common.h"
18
19 #include "Struct.h"
20 #include "system.h"
21
22 #include "TwoWire.h"
23
24 #include "TW803Reg.h"
25
26 #include "Display.h"
27 #include "Global.h"
28 #include "struct.h"
29 #ifdef NVRAM
30 #include "NVRam.h"
31 #endif
32 #include "ModeCtrl.h"
33 #include "ModeTbl.h"
34 #include "Auto.h"
35 static uCHAR m_cGoodPhase;
36
37
38
39 BOOL srcOptimizing(uCHAR cTuneType)
40 {
41 1 AutoPositionAdj(cTuneType&0xF0);
42 1 AutoPhaseAdj();
43 1 /*
44 1 if(cTuneType & CHANGMODE)
45 1 {
46 1 if(m_bDosMode)
47 1 twdDelay(300);
48 1 else
49 1 twdDelay(200);
50 1 }
51 1
52 1 if(INT0!=0)
53 1 {
C51 COMPILER V7.50 AUTO 10/30/2006 16:14:46 PAGE 2
54 1 if(cTuneType & POS1)
55 1 {
56 1 if(!AutoPositionAdj((cTuneType&0xF0)))
57 1 return FALSE;
58 1 }
59 1 }
60 1 else
61 1 return FALSE;
62 1
63 1 if(INT0!=0)
64 1 {
65 1 if(cTuneType & PIXEL)
66 1 {
67 1 if(!AutoFrequencyAdj(cTuneType))
68 1 return FALSE;
69 1 }
70 1 }
71 1 else
72 1 return FALSE;
73 1
74 1 if(INT0!=0)
75 1 {
76 1 if(cTuneType & PHASE)
77 1 {
78 1 if(!AutoPhaseAdj())
79 1 return FALSE;
80 1 }
81 1 }
82 1 else
83 1 return FALSE;
84 1
85 1
86 1 if(INT0!=0)
87 1 {
88 1 if(cTuneType & POS2)
89 1 {
90 1 if(!AutoPositionAdj(cTuneType&0xF0))
91 1 return FALSE;
92 1 }
93 1 }
94 1 else
95 1 return FALSE;
96 1 */
97 1 return TRUE;
98 1 }
99
100 BOOL AutoPositionAdj(uCHAR cTest)
101 {
102 1
103 1 //Reset Hsync and Vsync offset.
104 1 EepPrivate.wHOffset = 0;
105 1 EepPrivate.wVOffset = 0;
106 1 I2CWriteByte(TW803_P0, HSYCOFS_L, (uCHAR)EepPrivate.wHOffset);
107 1 I2CWriteByte(TW803_P0, HSYCOFS_H, (uCHAR)(EepPrivate.wHOffset>>8));
108 1 I2CWriteByte(TW803_P0, VSYCOFS_L, (uCHAR)EepPrivate.wVOffset);
109 1 I2CWriteByte(TW803_P0, VSYCOFS_H, (uCHAR)(EepPrivate.wVOffset>>8));
110 1 //~ Set threshold. ~//
111 1 I2CWriteByte(TW803_P0, THRESHOLD, 0x30);
112 1
113 1 //~ Enable boundary detection ~//
114 1 I2CWriteByte(TW803_P0, BOUNDCTR, (I2CReadByte(TW803_P0, BOUNDCTR)&0x7F));
115 1 I2CWriteByte(TW803_P0, BOUNDCTR, (I2CReadByte(TW803_P0, BOUNDCTR)|0x80));
C51 COMPILER V7.50 AUTO 10/30/2006 16:14:46 PAGE 3
116 1 m_wBuff[0]=10;
117 1 while(m_wBuff[0])
118 1 {
119 2 twdDelay(100);
120 2 if(I2CReadByte(TW803_P0, BOUNDCTR)&0x80) break;
121 2 m_wBuff[0]--;
122 2 }
123 1 //~ Disable boundary detection ~//
124 1 I2CWriteByte(TW803_P0, BOUNDCTR, (I2CReadByte(TW803_P0, BOUNDCTR)&0x7F));
125 1
126 1 //data start
127 1 m_wBuff[0] = I2CReadByte(TW803_P0, POS_LB_H);
128 1 m_wBuff[0] <<= 8;
129 1 m_wBuff[0] |= I2CReadByte(TW803_P0, POS_LB_L);
130 1
131 1
132 1 //data end
133 1 m_wBuff[1] = I2CReadByte(TW803_P0, POS_RB_H);
134 1 m_wBuff[1] <<= 8;
135 1 m_wBuff[1] |= I2CReadByte(TW803_P0, POS_RB_L);
136 1
137 1 m_wHRes = m_wBuff[1] - m_wBuff[0] + 1;
138 1 Auto_H_Pos(cTest);
139 1
140 1 //data start
141 1 m_wBuff[0] = I2CReadByte(TW803_P0, POS_TB_H);
142 1 m_wBuff[0] <<= 8;
143 1 m_wBuff[0] |= I2CReadByte(TW803_P0, POS_TB_L);
144 1
145 1
146 1 //data end
147 1 m_wBuff[1] = I2CReadByte(TW803_P0, POS_BB_H);
148 1 m_wBuff[1] <<= 8;
149 1 m_wBuff[1] |= I2CReadByte(TW803_P0, POS_BB_L);
150 1
151 1 m_wVRes = m_wBuff[1] - m_wBuff[0] + 1;
152 1 Auto_V_Pos(cTest);
153 1
154 1 return TRUE;
155 1 }
156
157 void Auto_H_Pos(uCHAR cTest)
158 {
159 1 if(cTest & (CHANGMODE|FORCEDTUNE))
160 1 {
161 2 if(m_bAlt)
162 2 {
163 3 if (m_cModeStatus & ADCHIGHRANGE)
164 3 HPosAutoAdj();
165 3 else if (m_cModeStatus & ADCLOWRANGE)
166 3 HPosAutoAdj();
167 3 else
168 3 HPosAutoAdj();
169 3 }
170 2 else
171 2 {
172 3 if (m_cModeStatus & ADCHIGHRANGE)
173 3 HPosAutoAdj();
174 3 else if (m_cModeStatus & ADCLOWRANGE)
175 3 HPosAutoAdj();
176 3 else
177 3 HPosAutoAdj();
C51 COMPILER V7.50 AUTO 10/30/2006 16:14:46 PAGE 4
178 3 }
179 2 }
180 1 else if(cTest&FINETUNE)
181 1 {
182 2 if (m_cModeStatus & ADCHIGHRANGE)
183 2 HPosAutoAdj();
184 2 else if (m_cModeStatus & ADCLOWRANGE)
185 2 HPosAutoAdj();
186 2 else
187 2 HPosAutoAdj();
188 2
189 2 }
190 1 }
191
192 void HPosAutoAdj()
193 {
194 1
195 1 if(m_wHRes<(m_pResolutionPtr->wHRes*0.98))
196 1 {
197 2 //~ Difference is too large, so following the mode table. ~//
198 2 m_wBuff[0] -=4;
199 2 }
200 1 else
201 1 {
202 2 //~ Reset ADC Capture HSize 0x48, 0x49 ~//
203 2 I2CWriteByte(TW803_P0, HATVC_L, (uCHAR)m_wHRes);
204 2 I2CWriteByte(TW803_P0, HATVC_H, (uCHAR)(m_wHRes>>8));
205 2 }
206 1 //~ Fill in the HSync Start Point by the register POS_LB. ~//
207 1 if(m_wBuff[0]>(m_pModeDescriptorPtr->wHBlk*1.01))
208 1 {
209 2 I2CWriteByte(TW803_P0, HSST_L, (uCHAR)m_pModeDescriptorPtr->wHBlk);
210 2 I2CWriteByte(TW803_P0, HSST_H, (uCHAR)(m_pModeDescriptorPtr->wHBlk>>8));
211 2 }
212 1 else
213 1 {
214 2 I2CWriteByte(TW803_P0, HSST_L, (uCHAR)m_wBuff[0]);
215 2 I2CWriteByte(TW803_P0, HSST_H, (uCHAR)(m_wBuff[0]>>8));
216 2 }
217 1
218 1 }
219
220 void Auto_V_Pos(uCHAR cTest)
221 {
222 1 if(cTest & (CHANGMODE|FORCEDTUNE))
223 1 {
224 2 if(m_bAlt)
225 2 {
226 3 if(!m_bInterlaced)
227 3 VPosAutoAdj();
228 3 else
229 3 VPosAutoAdj();
230 3 }
231 2 else
232 2 {
233 3 if(!m_bInterlaced)
234 3 VPosAutoAdj();
235 3 else
236 3 VPosAutoAdj();
237 3 }
238 2 }
239 1 else if(cTest&FINETUNE)
C51 COMPILER V7.50 AUTO 10/30/2006 16:14:46 PAGE 5
240 1 {
241 2 if(!m_bInterlaced)
242 2 VPosAutoAdj();
243 2 else
244 2 VPosAutoAdj();
245 2 }
246 1
247 1 }
248
249 void VPosAutoAdj()
250 {
251 1 if(m_wVRes<(m_pResolutionPtr->wVRes*0.98))
252 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -