📄 autoadj.lst
字号:
192 5 SetVP();
193 5 }
194 4 // 050604,Eason,End
195 4 }
196 3 }
197 2 else if(OldVp < NewVp){
198 3 for(;OldVp<=NewVp;OldVp++){
199 4 FuncBuf[pVPOSITION] = OldVp;
200 4 SetVP();
201 4 }
202 3 }else{
203 3 FuncBuf[pVPOSITION] = OldVp;
204 3 SetVP();
205 3 }
206 2 }else{
207 2 Abort = 1; // abort
208 2 #if PRINT_MESSAGE
printf("AutoPosition fail\n");
#endif
211 2 }
212 1 // wait for next V pulse coming to latch data
213 1 WaitVblank();
214 1 }
215 /*==========================================
216 ==========================================*/
217 void AutoClock()
218 {
219 1 //preset mode total
220 1 bit FirstDo;
221 1 Byte H_Difference,i,Compare;
222 1 Word H_Ref,H_Act,TempClock;
223 1 TempClock = FuncBuf[pCLOCK];
224 1 if(VTotal > (Vresolution + 190)) //not full screen
225 1 {
226 2 NonFullScreen = 1;
227 2 return;
228 2 }
229 1 H_Ref = Hresolution;
230 1 if(H_Ref >= FuncBuf[pCLOCK])
231 1 {
232 2 Abort = 1;
233 2 FuncBuf[pCLOCK] = H_Ref + FuncBuf[pHPOSITION];
234 2 SetADC_PLL();
235 2 // return;
236 2 }
237 1 WriteWordIIC563(0x117, H_Ref);
238 1 FirstDo = 0;
239 1 for(i=0;i<20;i++)
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 5
240 1 {
241 2 WriteIIC563(0x106,0x01);
242 2 LocalTimer = 10;
243 2 while((ReadIIC563(0x106) & BIT_0) && LocalTimer != 0)
244 2 {
245 3 CheckModeChange();
246 3 if(Abort)
247 3 return;
248 3 }
249 2 H_Act = ReadWordIIC563(0x110) & 0x0fff;
250 2 if(H_Act < (H_Ref - 124)){
251 3 i = 0xff;
252 3 break;
253 3 }
254 2 //------------------------
255 2 H_Difference = ReadIIC563(0x119);
256 2 Compare = (H_Difference & 0xC0) >> 6;
257 2 H_Difference = (H_Difference & 0x3F) > AutoClock_Step ? AutoClock_Step : (H_Difference & 0x3f);
258 2 if(Compare == 0){ //H_Act == H_Ref jacky20040326 for AutoPhasebyClock
259 3 if(!FirstDo){
260 4 FirstDo = 1;
261 4 AutoPhaseByClock();
262 4 if(Abort)
263 4 return;
264 4 }
265 3 else
266 3 break;
267 3 }
268 2 if(Compare == 1)
269 2 {
270 3 FuncBuf[pCLOCK] += H_Difference;
271 3 if(FuncBuf[pCLOCK] > 2048)
272 3 {
273 4 i = 0xff;
274 4 break;
275 4 }
276 3 }
277 2 if(Compare == 2 || Compare == 3)
278 2 {
279 3 FuncBuf[pCLOCK] -= H_Difference;
280 3 if(FuncBuf[pCLOCK] < H_Ref)
281 3 {
282 4 i = 0xff;
283 4 break;
284 4 }
285 3 }
286 2 SetADC_PLL();
287 2 }
288 1 //printf("Clock divider 0 = %d\n",FuncBuf[pCLOCK]);
289 1 if(i == 0xff)
290 1 {
291 2 Abort = 1;
292 2 NonFullScreen = 1;
293 2 return;
294 2 }
295 1 else
296 1 {
297 2 if(abs(FuncBuf[pCLOCK] - TempClock) > (TempClock / 11)){
298 3 FuncBuf[pCLOCK] = TempClock;//joe reactive 5/12
299 3 Abort = 1;}
300 2 else
301 2 FuncBuf[pCLOCK] = (FuncBuf[pCLOCK] + 2) & 0xfffc;
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 6
302 2 FuncMax = ClockBase + 50;
303 2 FuncMin = ClockBase - 50;
304 2 if(FuncBuf[pCLOCK] > FuncMax)//over VPosition Max
305 2 {
306 3 FuncBuf[pCLOCK] = FuncMax;
307 3 }
308 2
309 2 SetADC_PLL();
310 2 }
311 1 }
312 /*==========================================
313 ==========================================*/
314 void AutoClockByPhase(bit h)
315 {
316 1 bit R_L,U_D;
317 1 Byte k,temp;
318 1 Word GoodClk;
319 1 xdata unsigned long MaxMin,Value;
320 1 if(h == 1)
321 1 LoadPresetModeSettings(2);
322 1
323 1 GoodClk = FuncBuf[pCLOCK];
324 1 SetADC_PLL();
325 1 WaitSetup(4);
326 1 if(Abort)
327 1 return;
328 1 MaxMin = CheckPhaseData();
329 1 temp = TempPhase;
330 1 if(Abort)
331 1 return;
332 1 U_D = 0;
333 1 R_L = 0;
334 1 for(k=0; k<16; k++)
335 1 {
336 2 if(R_L)
337 2 {
338 3 FuncBuf[pCLOCK] += 2;
339 3 SetADC_PLL();
340 3 //printf("Clock divider 1 = %d\n",FuncBuf[pCLOCK]);
341 3 WaitSetup(4);
342 3 if(Abort)
343 3 return;
344 3 //Sleep(25);
345 3 Value = CheckPhaseData();
346 3 //printf("Clock Value %d = %x %x\n",(unsigned short)k,(unsigned short)(Value >> 16),(unsigned short)Val
-ue);
347 3 if(Abort)
348 3 return;
349 3 if(MaxMin < Value)
350 3 {
351 4 GoodClk = FuncBuf[pCLOCK];
352 4 MaxMin = Value;
353 4 temp = TempPhase;
354 4 U_D = 1;
355 4 }
356 3 else
357 3 {
358 4 if(U_D == 0)
359 4 {
360 5 R_L = 0;
361 5 FuncBuf[pCLOCK] -= 2;
362 5 U_D = 1;
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 7
363 5 }
364 4 else
365 4 break;
366 4 }
367 3 }
368 2 else{
369 3 FuncBuf[pCLOCK] -= 2;
370 3 SetADC_PLL();
371 3 WaitSetup(4);
372 3 if(Abort)
373 3 return;
374 3 Value = CheckPhaseData();
375 3 if(Abort)
376 3 return;
377 3 if(MaxMin < Value)
378 3 {
379 4 GoodClk = FuncBuf[pCLOCK];
380 4 MaxMin = Value;
381 4 temp = TempPhase;
382 4 U_D = 1;
383 4 }
384 3 else
385 3 {
386 4 if(U_D == 0)
387 4 {
388 5 R_L = 1;
389 5 FuncBuf[pCLOCK] += 2;
390 5 U_D = 1;
391 5 }
392 4 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -