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 + -
显示快捷键?