📄 autoadj.lst
字号:
393 4 break;
394 4 }
395 3 }
396 2 }
397 1 FuncBuf[pCLOCK] = GoodClk;
398 1 SetADC_PLL();
399 1 FuncBuf[pPHASE] = (temp + 24) & 0x3f;
400 1 SetADC_Phase();
401 1 }
402 /*==========================================
403 ==========================================*/
404 unsigned long CheckPhaseData()
405 {
406 1 Byte ch;
407 1 Word zz;
408 1 xdata unsigned long Value,MinValueTemp,MaxValueTemp;
409 1 MaxValueTemp = 0;
410 1 MinValueTemp = 0xffffffff;
411 1 FuncBuf[pPHASE] = 0;
412 1 SetADC_Phase();
413 1 WriteIIC563(0x106,0x02);
414 1 LocalTimer = 10;
415 1 for(FuncBuf[pPHASE]=4; FuncBuf[pPHASE]<0x42; FuncBuf[pPHASE] += 4)
416 1 {
417 2 while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0)
418 2 {
419 3 CheckModeChange();
420 3 if(Abort)
421 3 return 0;
422 3 }
423 2 SetADC_Phase();
424 2 WriteIIC563(0x106,0x02);
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 8
425 2 LocalTimer = 10;
426 2 Value = 0x00000000;
427 2 for(zz=0x116; zz>0x112; zz--)
428 2 {
429 3 ch = ReadIIC563(zz);
430 3 Value = Value << 8;
431 3 Value = Value + ch;
432 3 }
433 2 if(Value < MinValueTemp)
434 2 {
435 3 MinValueTemp = Value;
436 3 TempPhase = (FuncBuf[pPHASE] - 4) & 0x3f;
437 3 }
438 2 if(Value > MaxValueTemp)
439 2 MaxValueTemp = Value;
440 2 }
441 1 Value = MaxValueTemp - MinValueTemp;
442 1 return Value;
443 1 }
444 /*==========================================
445 ==========================================*/
446 void AutoPhaseFineTune(Byte Val)
447 {
448 1 unsigned short zz;
449 1 unsigned char qq,uu,yy,i;
450 1 unsigned long Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta;
451 1 unsigned char value;
452 1 if(Abort)
453 1 return;
454 1 //-------------------------at color xx , calculate phase-------------------------
455 1 Phase_1 = 0x00000000; // (i-1)
456 1 Phase_2 = 0x00000000; // (i-2)
457 1 Phase_Pre3 = 0x00000000; // (pre sum)->(delta)->(now sum)
458 1 Phase_Delta = 0xffffffff; // (min delta)
459 1 qq = FuncBuf[pPHASE];
460 1 WriteIIC563(0x106,0x02); // 0x01 --> 0x09
461 1 LocalTimer = 10;
462 1 for(yy=1; yy<Val; yy++)
463 1 {
464 2 while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0)
465 2 {
466 3 CheckModeChange();
467 3 if(Abort)
468 3 return;
469 3 }
470 2 FuncBuf[pPHASE] = (qq + yy) & 0x3f;
471 2 SetADC_Phase();
472 2 WriteIIC563(0x106,0x02); // 0x01 --> 0x09
473 2 LocalTimer = 100;
474 2 Phase_Now3 = 0x00000000;
475 2 for (zz=0x116; zz>0x112; zz--)
476 2 {
477 3 value = ReadIIC563(zz);
478 3 Phase_Now3 = Phase_Now3 << 8;
479 3 Phase_Now3 = Phase_Now3 + value;
480 3 }
481 2 i = (FuncBuf[pPHASE] - 1) & 0x3f;
482 2 Phase_2 = Phase_1; // Shift
483 2 Phase_1 = Phase_0;
484 2 Phase_0 = Phase_Now3;
485 2 Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2); // Phase_Now3
486 2 if(yy < 4)
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 9
487 2 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
488 2 else
489 2 {
490 3 if(Phase_Now3 > Phase_Pre3)
491 3 Phase_Pre3 = Phase_Now3 - Phase_Pre3;
492 3 else
493 3 Phase_Pre3 = Phase_Pre3 - Phase_Now3; // Phase_Pre3=delta
494 3 if(Phase_Pre3 < Phase_Delta)
495 3 {
496 4 uu = i;
497 4 Phase_Delta = Phase_Pre3;
498 4 }
499 3 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
500 3 }
501 2 }
502 1 FuncBuf[pPHASE] = (uu - 3) & 0x3f;
503 1 SetADC_Phase();
504 1 }
505 /*==========================================
506 ==========================================*/
507 void AutoPhaseByClock()
508 {
509 1 //preset mode total
510 1 Byte PhaseTemp;
511 1 Word H_Act,MinHActiveTemp;
512 1 MinHActiveTemp = 0xffff;
513 1 FuncBuf[pPHASE] = 0;
514 1 SetADC_Phase();
515 1
516 1 for(FuncBuf[pPHASE]=4; FuncBuf[pPHASE]<0x42; FuncBuf[pPHASE] += 4)
517 1 {
518 2 WriteIIC563(0x106,0x01);
519 2 LocalTimer = 10;
520 2 while((ReadIIC563(0x106) & BIT_0) && LocalTimer != 0)
521 2 {
522 3 CheckModeChange();
523 3 if(Abort)
524 3 return;
525 3 }
526 2 SetADC_Phase();
527 2 H_Act = ReadWordIIC563(0x110) & 0x0fff;
528 2 if(H_Act < MinHActiveTemp)
529 2 {
530 3 MinHActiveTemp = H_Act;
531 3 PhaseTemp = (FuncBuf[pPHASE] - 4) & 0x3f;
532 3 }
533 2 }
534 1 FuncBuf[pPHASE] = PhaseTemp;
535 1 SetADC_Phase();
536 1 }
537 /*==========================================
538 ==========================================*/
539 void LoadPresetModeSettings(Byte type)
540 {
541 1 switch(type)
542 1 {
543 2 case 0:
544 2 FuncBuf[pPHASE] = EEP_ModeMap[T_Preset_ROM_Phase];//EEP_SyncMap[addr+7];
545 2 FuncBuf[pCLOCK] =EEP_ModeMap[T_Preset_ROM_HTotal];// EEP_SyncMap[addr+4];
546 2 FuncBuf[pCLOCK] <<= 8;
547 2 FuncBuf[pCLOCK] |= EEP_ModeMap[T_Preset_ROM_HTotal+1];//EEP_SyncMap[addr+5];
548 2 case 1:
C51 COMPILER V7.06 AUTOADJ 12/11/2007 11:28:43 PAGE 10
549 2 FuncBuf[pVPOSITION] = EEP_ModeMap[T_Preset_ROM_VBP];//EEP_SyncMap[addr+1];
550 2 FuncBuf[pHPOSITION] = EEP_ModeMap[T_Preset_ROM_HBP];//EEP_SyncMap[addr+2];
551 2 FuncBuf[pHPOSITION] <<= 8;
552 2 FuncBuf[pHPOSITION] |= EEP_ModeMap[T_Preset_ROM_HBP+1];//EEP_SyncMap[addr+3];
553 2 break;
554 2 case 2:
555 2 FuncBuf[pCLOCK] =EEP_ModeMap[T_Preset_ROM_HTotal];// EEP_SyncMap[addr+4];
556 2 FuncBuf[pCLOCK] <<= 8;
557 2 FuncBuf[pCLOCK] |= EEP_ModeMap[T_Preset_ROM_HTotal+1];//EEP_SyncMap[addr+5];
558 2 break;
559 2 }
560 1 }
561 void WaitVblank()
562 {
563 1 /*
564 1 LocalTimer = 3; //30ms
565 1 while(!V_SyncPresent) //Vsync Lo
566 1 {
567 1 if(LocalTimer == 0)
568 1 return;
569 1 }
570 1 LocalTimer = 5; //50ms
571 1 while(V_SyncPresent) //Vsync Hi
572 1 {
573 1 if(LocalTimer == 0)
574 1 return;
575 1 }
576 1 */
577 1 }
578
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2714 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 77
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -