autoadj.lst
来自「台湾联咏NT68663 LCD MONITOR 控制程序(完整版)」· LST 代码 · 共 1,606 行 · 第 1/5 页
LST
1,606 行
612 2 WriteIIC563(0x106,0x02);
613 2 LocalTimer = 10;
614 2 Value = 0x00000000;
615 2 for(zz=0x116; zz>0x112; zz--)
616 2 {
617 3 ch = ReadIIC563(zz);
618 3 Value = Value << 8;
619 3 Value = Value + ch;
620 3 }
621 2 if(Value < MinValueTemp)
622 2 {
623 3 MinValueTemp = Value;
624 3 TempPhase = (FuncBuf[pPHASE] - 4) & 0x3f;
625 3 }
626 2 if(Value > MaxValueTemp)
627 2 MaxValueTemp = Value;
628 2 }
629 1 Value = MaxValueTemp - MinValueTemp;
630 1 return Value;
631 1 }
632
633 /*
634 Byte AutoPhase(void)
635 {
636 unsigned short zz;
637 unsigned char PhaseTemp1,PhaseTemp2,value,i,temp;
638 unsigned long Value,MinValueTemp,MaxValueTemp;
639 if(Abort)
640 return 0;
641 #if PRINT_MESSAGE
642 printf("Auto Phase\n");
643 #endif
644 MaxValueTemp = 0;
645 MinValueTemp = 0xffffffff;
646 PhaseTemp1 = 0;
647 PhaseTemp2 = 0;
648 FuncBuf[pPHASE] = 0;
649 SetADC_Phase();
650 WriteIIC563(0x106,0x02); // 0X01 --> 0X09
651 LocalTimer = 100;
652 for(FuncBuf[pPHASE]=0; FuncBuf[pPHASE]<0x40; FuncBuf[pPHASE] = FuncBuf[pPHASE] + 2)
653 {
654 while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0)
655 {
656 if(Abort)
657 return 0;
658 }
659 SetADC_Phase();
660 WriteIIC563(0x106,0x02);
661 LocalTimer = 100;
662 Value = 0x00000000;
663 for (zz=0x116; zz>0x112; zz--)
664 {
665 value = ReadIIC563(zz);
666 Value = Value << 8;
667 Value = Value + value;
668 }
669 i = (FuncBuf[pPHASE] - 2) & 0x3f;
670 #if PRINT_MESSAGE
671 printf("Phase %d = %x %x\n",(unsigned short)i,(unsigned short)(Value >> 16),(unsigned short)Value);
C51 COMPILER V6.12 AUTOADJ 03/05/2008 14:11:12 PAGE 12
672 #endif
673 if(Value < MinValueTemp)
674 {
675 MinValueTemp = Value;
676 PhaseTemp1 = i;
677 }
678 if(Value > MaxValueTemp)
679 {
680 MaxValueTemp = Value;
681 PhaseTemp2 = i;
682 }
683 }
684 Value = (unsigned long)FuncBuf[pHPOSITION] * H_SYNC;
685 if(Value > 1000000)
686 {
687 i = (PhaseTemp1 + 4) & 0x3f;
688 temp = 60;
689 }
690 else
691 {
692 i = (PhaseTemp1 + 26) & 0x3f;
693 temp = 16;
694 }
695 FuncBuf[pPHASE] = i;
696 SetADC_Phase();
697 #if PRINT_MESSAGE
698 printf("phase ok = %d\n",(unsigned short)FuncBuf[pPHASE]);
699 #endif
700 return temp;
701 }
702 */
703 void AutoPhaseFineTune(Byte Val)
704 {
705 1 unsigned short zz;
706 1 unsigned char qq,uu,yy,i;
707 1 unsigned long Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta;
708 1 unsigned char value;
709 1 if(Abort)
710 1 return;
711 1 #if PRINT_MESSAGE
printf("Auto Phase Fine Tune\n");
#endif
714 1 //-------------------------at color xx , calculate phase-------------------------
715 1 Phase_1 = 0x00000000; // (i-1)
716 1 Phase_2 = 0x00000000; // (i-2)
717 1 Phase_Pre3 = 0x00000000; // (pre sum)->(delta)->(now sum)
718 1 Phase_Delta = 0xffffffff; // (min delta)
719 1 qq = FuncBuf[pPHASE];
720 1 WriteIIC563(0x106,0x02); // 0x01 --> 0x09
721 1 LocalTimer = 10;
722 1 for(yy=1; yy<Val; yy++)
723 1 {
724 2 while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0)
725 2 {
726 3 CheckModeChange();
727 3 if(Abort)
728 3 return;
729 3 }
730 2 FuncBuf[pPHASE] = (qq + yy) & 0x3f;
731 2 SetADC_Phase();
732 2 WriteIIC563(0x106,0x02); // 0x01 --> 0x09
733 2 LocalTimer = 100;
C51 COMPILER V6.12 AUTOADJ 03/05/2008 14:11:12 PAGE 13
734 2 Phase_Now3 = 0x00000000;
735 2 for (zz=0x116; zz>0x112; zz--)
736 2 {
737 3 value = ReadIIC563(zz);
738 3 Phase_Now3 = Phase_Now3 << 8;
739 3 Phase_Now3 = Phase_Now3 + value;
740 3 }
741 2 i = (FuncBuf[pPHASE] - 1) & 0x3f;
742 2 #if PRINT_MESSAGE
printf("Phase %d = %x %x\n",(unsigned short)i,(unsigned short)(Phase_Now3>>16),(unsigned short)Phase_No
-w3);
#endif
745 2 Phase_2 = Phase_1; // Shift
746 2 Phase_1 = Phase_0;
747 2 Phase_0 = Phase_Now3;
748 2 Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2); // Phase_Now3
749 2 if(yy < 4)
750 2 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
751 2 else
752 2 {
753 3 if(Phase_Now3 > Phase_Pre3)
754 3 Phase_Pre3 = Phase_Now3 - Phase_Pre3;
755 3 else
756 3 Phase_Pre3 = Phase_Pre3 - Phase_Now3; // Phase_Pre3=delta
757 3 if(Phase_Pre3 < Phase_Delta)
758 3 {
759 4 uu = i;
760 4 Phase_Delta = Phase_Pre3;
761 4 }
762 3 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
763 3 }
764 2 }
765 1 //FuncBuf[pPHASE] = (uu - 3) & 0x3f;
766 1 FuncBuf[pPHASE] = (uu - 1) & 0x3f;
767 1 SetADC_Phase();
768 1 #if PRINT_MESSAGE
printf("Phase ok = %d\n",(unsigned short)FuncBuf[pPHASE]);
#endif
771 1 }
772
773 void AutoPhaseByClock()
774 {
775 1 //preset mode total
776 1 Byte PhaseTemp;
777 1 Word H_Act,MinHActiveTemp;
778 1 #if PRINT_MESSAGE
printf("AutoPhaseByClock\n");
#endif
781 1 MinHActiveTemp = 0xffff;
782 1 FuncBuf[pPHASE] = 0;
783 1 SetADC_Phase();
784 1
785 1 for(FuncBuf[pPHASE]=4; FuncBuf[pPHASE]<0x42; FuncBuf[pPHASE] += 4)
786 1 {
787 2 WriteIIC563(0x106,0x01);
788 2 LocalTimer = 10;
789 2 while((ReadIIC563(0x106) & BIT_0) && LocalTimer != 0)
790 2 {
791 3 CheckModeChange();
792 3 if(Abort)
793 3 return;
794 3 }
C51 COMPILER V6.12 AUTOADJ 03/05/2008 14:11:12 PAGE 14
795 2 SetADC_Phase();
796 2 H_Act = ReadWordIIC563(0x110) & 0x0fff;
797 2 //H_Act = ReadIIC563(0x111) & 0x0f;
798 2 //H_Act <<= 8;
799 2 //H_Act |= ReadIIC563(0x110);
800 2
801 2 // 20040224 Jacky
802 2 //if(H_Act < (H_Ref - 124)){
803 2 // i = 0xff;
804 2 // break;
805 2 //}
806 2 //------------------------
807 2 if(H_Act < MinHActiveTemp)
808 2 {
809 3 MinHActiveTemp = H_Act;
810 3 PhaseTemp = (FuncBuf[pPHASE] - 4) & 0x3f;
811 3 }
812 2 #if PRINT_MESSAGE
printf("AutoPhaseByClock H_Act %d = %d\n",(unsigned short)FuncBuf[pPHASE],H_Act);
#endif
815 2 }
816 1 FuncBuf[pPHASE] = PhaseTemp;
817 1 SetADC_Phase();
818 1 #if PRINT_MESSAGE
printf("AutoPhaseByClock Phase = %d\n",(unsigned short)FuncBuf[pPHASE]);
#endif
821 1 }
822
823 #if AUTO_COLOR == GaugeGain
824 void SetADC_Offset(unsigned char OffSet)
825 {
826 1 xdata unsigned short l;
827 1 xdata unsigned char i,j,k,m,n,value;
828 1 xdata unsigned long PhaseResult,Temp;
829 1
830 1 SetADC_Offset_C();
831 1 OffSet = ReadIIC563(0x03);
832 1 value = ReadIIC563(0x06);
833 1 if(OffSet > value)
834 1 OffSet = value;
835 1 value = ReadIIC563(0x09);
836 1 if(OffSet > value)
837 1 OffSet = value;
838 1
839 1 WriteIIC563(0x0fa,0x00);
840 1 for(m=0; m<3; m++)
841 1 {
842 2 for(k=OffSet; k<248; k=k+8)
843 2 {
844 3 WriteIIC563(0x0f8,0x00);
845 3 l = 0x003 + m*3;
846 3 WriteIIC563(l,k); // Jacky 20041210
847 3 //WaitSetup(5);
848 3 i = 0x80 + (2-m)*0x08;
849 3 WriteIIC563(0x0f8,i);
850 3 LocalTimer = 10;
851 3 while((ReadIIC563(0x0f8) & BIT_7) && LocalTimer != 0)
852 3 {
853 4 if(Abort)
854 4 return;
855 4 }
856 3 if(LocalTimer == 0){
C51 COMPILER V6.12 AUTOADJ 03/05/2008 14:11:12 PAGE 15
857 4 Abort = 1;
858 4 return;
859 4 }
860 3 j = 0;
861 3 Temp = 0;
862 3 for(i=0; i<8; i++)
863 3 {
864 4 WriteIIC563(0x0f9,i);
865 4 value = ReadIIC563(0x0fd);
866 4 PhaseResult = value;
867 4 PhaseResult <<= 8;
868 4 value = ReadIIC563(0x0fc);
869 4 PhaseResult += value;
870 4 PhaseResult <<= 8;
871 4 value = ReadIIC563(0x0fb);
872 4 PhaseResult += value;
873 4 #if PRINT_MESSAGE
//printf("PhaseResult %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)(PhaseResult>
->8));
printf("PhaseResult %x = %x %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)(PhaseResult
- >> 16),(unsigned short)PhaseResult);
#endif
877 4 if(PhaseResult > Temp)
878 4 {
879 5 Temp = PhaseResult;
880 5 j = i;
881 5 }
882 4 }
883 3 if(Temp > (Vresolution*15))
884 3 //if(Temp > 1024)
885 3 {
886 4 l = 0x003 + m*3;
887 4 j = k+j;
888 4 WriteIIC563(l,j); // Jacky 20041210
889 4 #if PRINT_MESSAGE
printf("Offset %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)j);
#endif
892 4 break;
893 4 }
894 3 }
895 2 k = j;
896 2 for(n=0; n<8; n++)
897 2 {
898 3 WriteIIC563(0x0f8,0x00);
899 3 l = 0x003 + 3*m;
900 3 WriteIIC563(l,k+n); // Jacky 20041210
901 3 //WaitSetup(2);
902 3 LocalTimer = 10;
903 3 i = 0x80 + (2-m)*0x08;
904 3 WriteIIC563(0x0f8,i);
905 3 while((ReadIIC563(0x0f8) & BIT_7) && LocalTimer != 0)
906 3 {
907 4 if(Abort)
908 4 return;
909 4 }
910 3 if(LocalTimer == 0){
911 4 Abort = 1;
912 4 return;
913 4 }
914 3 j = 0;
915 3 Temp = 0;
916 3 for(i=0; i<8; i++)
C51 COMPILER V6.12 AUTOADJ 03/05/2008 14:11:12 PAGE 16
917 3 {
918 4 WriteIIC563(0x0f9,i);
919 4 value = ReadIIC563(0x0fd);
920 4 PhaseResult = value;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?