autoadj.lst

来自「台湾联咏NT68663 LCD MONITOR 控制程序(完整版)」· LST 代码 · 共 1,606 行 · 第 1/5 页

LST
1,606
字号
 921   4      				PhaseResult <<= 8;
 922   4      				value = ReadIIC563(0x0fc);
 923   4      				PhaseResult += value;
 924   4      				PhaseResult <<= 8;
 925   4      				value = ReadIIC563(0x0fb);
 926   4      				PhaseResult += value;
 927   4      				#if PRINT_MESSAGE
              					//printf("PhaseResult %x = %x %x\n",(unsigned short)m,(unsigned short)n,(unsigned short)(PhaseResult>
             ->8));
              					printf("PhaseResult %x = %x %x %x\n",(unsigned short)m,(unsigned short)n,(unsigned short)(PhaseResult
             - >> 16),(unsigned short)PhaseResult);
              				#endif
 931   4      				if(PhaseResult > Temp)
 932   4      					{
 933   5      					Temp = PhaseResult;
 934   5      					j = i;
 935   5      					}
 936   4      				}
 937   3      			if(j == 0)
 938   3      				break;
 939   3      			}
 940   2      		l = 0x003 + 3*m;
 941   2      		j = k+n;	// Jacky 20041210
 942   2      		WriteIIC563(l,j);
 943   2      		#if PRINT_MESSAGE
              			printf("Offset %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)j);
              		#endif
 946   2      		}
 947   1      	FuncBuf[pROFFSET] = ReadIIC563(0x003);
 948   1      	Write24C16(ep_ADC_R_Offset,FuncBuf[pROFFSET]);
 949   1      	FuncBuf[pGOFFSET] = ReadIIC563(0x006);
 950   1      	Write24C16(ep_ADC_G_Offset,FuncBuf[pGOFFSET]);
 951   1      	FuncBuf[pBOFFSET]  = ReadIIC563(0x009);
 952   1      	Write24C16(ep_ADC_B_Offset,FuncBuf[pBOFFSET]);
 953   1      
 954   1      //	FuncBuf[pROFFSET] = ReadIIC563(0x003);
 955   1      //	Write24C16(ep_ADC_R_Offset,FuncBuf[pROFFSET]);
 956   1      //	FuncBuf[pGOFFSET] = ReadIIC563(0x006);
 957   1      //	Write24C16(ep_ADC_G_Offset,FuncBuf[pGOFFSET]);
 958   1      //	FuncBuf[pBOFFSET] = ReadIIC563(0x009);
 959   1      //	Write24C16(ep_ADC_B_Offset,FuncBuf[pBOFFSET]);
 960   1      //	WriteIIC563(0x003,Read24C16(ep_ADC_R_Offset));
 961   1      //	WriteIIC563(0x006,Read24C16(ep_ADC_G_Offset));
 962   1      //	WriteIIC563(0x009,Read24C16(ep_ADC_B_Offset));
 963   1      }
 964          
 965          void SetADC_Gain(unsigned char OffSet)
 966          {
 967   1      unsigned short l;
 968   1      unsigned char i,j,k,m,n,value;
 969   1      unsigned long PhaseResult,Temp;
 970   1      
 971   1      	SetADC_Gain_C();
 972   1      	OffSet = ReadIIC563(0x01);
 973   1      	value = ReadIIC563(0x04);
 974   1      	if(OffSet > value)
 975   1      		OffSet = value;
 976   1      	value = ReadIIC563(0x07);
C51 COMPILER V6.12  AUTOADJ                                                                03/05/2008 14:11:12 PAGE 17  

 977   1      	if(OffSet > value)
 978   1      		OffSet = value;
 979   1      
 980   1      	//WriteIIC563(0x0f8,0x00);
 981   1      	WriteIIC563(0x0fa,0xf8);
 982   1      	for(m=0; m<3; m++)
 983   1      	{
 984   2      		for(k=OffSet; k>7; k=k-8)
 985   2      		{
 986   3      			l = 0x001 + m * 3;
 987   3      			WriteIIC563(l,k);
 988   3      			WriteIIC563(0x0f8,0x00);
 989   3      			//WaitSetup(2);
 990   3      			LocalTimer = 10;
 991   3      			i = 0x80 + (2-m)*0x08;
 992   3      			WriteIIC563(0x0f8,i);
 993   3      		   	while((ReadIIC563(0x0f8) & BIT_7) && LocalTimer != 0)
 994   3      			{
 995   4      				if(Abort)
 996   4      					return;
 997   4      			}
 998   3      			if(LocalTimer == 0){
 999   4      				Abort = 1;
1000   4      				return;
1001   4      			}
1002   3      			j = 0;
1003   3      			Temp = 0;
1004   3      			for(i=0; i<8; i++)
1005   3      				{
1006   4      				WriteIIC563(0x0f9,i);
1007   4      				value = ReadIIC563(0x0fd);
1008   4      				PhaseResult = value;
1009   4      				PhaseResult <<= 8;
1010   4      				value = ReadIIC563(0x0fc);
1011   4      				PhaseResult += value;
1012   4      				PhaseResult <<= 8;
1013   4      				value = ReadIIC563(0x0fb);
1014   4      				PhaseResult += value;
1015   4      				#if PRINT_MESSAGE
              					printf("PhaseResult %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)(PhaseResult>>8
             -));
              				#endif
1018   4      				if(PhaseResult > Temp)
1019   4      					{
1020   5      					Temp = PhaseResult;
1021   5      					j = i;
1022   5      					}
1023   4      				}
1024   3      			if(Temp > 0)//(Temp > 0x300)
1025   3      				{
1026   4      				i = 0x01 + m * 3;
1027   4      				j = k+j;
1028   4      //				WriteIIC563(i,j);
1029   4      				#if PRINT_MESSAGE
              					printf("Gain %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)j);
              				#endif
1032   4      				break;
1033   4      			}
1034   3      		}
1035   2      		if(k == 0){
1036   3      			LoadADC_Gain();
1037   3      			return;
C51 COMPILER V6.12  AUTOADJ                                                                03/05/2008 14:11:12 PAGE 18  

1038   3      		}
1039   2      		for(n=0; n<16; n++)
1040   2      			{
1041   3      			WriteIIC563(0x0f8,0x00);
1042   3      			l = 0x001 + m * 3;
1043   3      			WriteIIC563(l,k-n);
1044   3      			//WaitSetup(2);
1045   3      			LocalTimer = 10;
1046   3      			i = 0x80 + (2-m)*0x08;
1047   3      			WriteIIC563(0x0f8,i);
1048   3      		   	while((ReadIIC563(0x0f8) & BIT_7) && LocalTimer != 0){
1049   4      				if(Abort)
1050   4      					return;
1051   4      			}
1052   3      			if(LocalTimer == 0){
1053   4      				Abort = 1;
1054   4      				return;
1055   4      			}
1056   3      			j = 0;
1057   3      			Temp = 0;
1058   3      			WriteIIC563(0x0f9,7);
1059   3      			value = ReadIIC563(0x0fd);
1060   3      			PhaseResult = value;
1061   3      			PhaseResult <<= 8;
1062   3      			value = ReadIIC563(0x0fc);
1063   3      			PhaseResult += value;
1064   3      			PhaseResult <<= 8;
1065   3      			value = ReadIIC563(0x0fb);
1066   3      			PhaseResult += value;
1067   3      			if(PhaseResult > 80){
1068   4      				break;
1069   4      			}
1070   3      /*
1071   3      			for(i=0; i<8; i++)
1072   3      				{
1073   3      				WriteIIC563(0x0f9,i);
1074   3      				value = ReadIIC563(0x0fd);
1075   3      				PhaseResult = value;
1076   3      				PhaseResult <<= 8;
1077   3      				value = ReadIIC563(0x0fc);
1078   3      				PhaseResult += value;
1079   3      				PhaseResult <<= 8;
1080   3      				value = ReadIIC563(0x0fb);
1081   3      				PhaseResult += value;
1082   3      				#if PRINT_MESSAGE
1083   3      					printf("PhaseResult %x = %x %x\n",(unsigned short)m,(unsigned short)n,(unsigned short)(PhaseResult>>8
             -));
1084   3      				#endif
1085   3      				if(PhaseResult > Temp)
1086   3      					{
1087   3      					Temp = PhaseResult;
1088   3      					j = i;
1089   3      					}
1090   3      				}
1091   3      			if(j == 7)
1092   3      				break;
1093   3      */			
1094   3      			}		
1095   2      		l = 0x001 + m * 3;
1096   2      		j = k-n;
1097   2      		WriteIIC563(l,j);
1098   2      		#if PRINT_MESSAGE
C51 COMPILER V6.12  AUTOADJ                                                                03/05/2008 14:11:12 PAGE 19  

              			printf("Gain %x = %x %x\n",(unsigned short)m,(unsigned short)k,(unsigned short)j);
              		#endif
1101   2      		}
1102   1      	FuncBuf[pRADC] = ReadIIC563(0x001)+8;
1103   1      	Write24C16(ep_ADC_R_Gain,FuncBuf[pRADC]);
1104   1      	FuncBuf[pGADC] = ReadIIC563(0x004)+8;
1105   1      	Write24C16(ep_ADC_G_Gain,FuncBuf[pGADC]);
1106   1      	FuncBuf[pBADC] = ReadIIC563(0x007)+8;
1107   1      	Write24C16(ep_ADC_B_Gain,FuncBuf[pBADC]);
1108   1      }
1109          
1110          void AutoColor(void)
1111          {
1112   1      unsigned char Reg0x06A;
1113   1      	Reg0x06A = ReadIIC563(0x06A);
1114   1      	WriteIIC563(0x06A,0x00);	//Analog de-jitter
1115   1      	flag2 &= ~BIT_0;
1116   1      	WriteWordIIC563(0x034,FuncBuf[pHPOSITION] - 20);
1117   1      	SetADC_Offset(0x30);
1118   1      	if((flag2 & BIT_0) != 0x00){
1119   2      		goto Error;
1120   2      	}
1121   1      	WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
1122   1      	SetADC_Gain(0xf0);
1123   1      Error:
1124   1      	if(Abort){
1125   2      	//if((flag2 & BIT_0) != 0){
1126   2      		LoadADC_Gain();
1127   2      	}
1128   1      	WriteIIC563(0x06A,Reg0x06A);	//Analog de-jitter
1129   1      }
1130          void SetADC_Offset_C(void)
1131          {
1132   1      unsigned char i,k,value,rgb[3];
1133   1      	rgb[0] = ReadIIC563(0x03);
1134   1      	rgb[1] = ReadIIC563(0x06);
1135   1      	rgb[2] = ReadIIC563(0x09);
1136   1      
1137   1      	for(k=32; k<240; k++){
1138   2      		LocalTimer = 10;
1139   2      		WriteIIC563(0x106,0x2a);	//minimum value
1140   2      	   	while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0){
1141   3      			CheckModeChange();
1142   3      			if(Abort)
1143   3      				return;
1144   3      		}
1145   2      		i = 0;
1146   2      		value = ReadIIC563(0x113);
1147   2      //		printf("%d r = %x\r\n",(unsigned short)k,(unsigned short)value);
1148   2      		if((value < 5) && (rgb[0] > 4)){
1149   3      			rgb[0] -= 2;
1150   3      			i = 0xff;
1151   3      		}
1152   2      		if((value > 10) && (rgb[0] < 0x7f)){
1153   3      			rgb[0] += 2;
1154   3      			i = 0xff;
1155   3      		}
1156   2      		value = ReadIIC563(0x114);
1157   2      //		printf("%d g = %x\r\n",(unsigned short)k,(unsigned short)value);
1158   2      		if((value < 5) && (rgb[1] > 4)){
1159   3      			rgb[1] -= 2;
1160   3      			i = 0xff;
C51 COMPILER V6.12  AUTOADJ                                                                03/05/2008 14:11:12 PAGE 20  

1161   3      		}
1162   2      		if((value > 10) && (rgb[1] < 0x7f)){
1163   3      			rgb[1] += 2;
1164   3      			i = 0xff;
1165   3      		}
1166   2      		value = ReadIIC563(0x115);
1167   2      //		printf("%d b = %x\r\n",(unsigned short)k,(unsigned short)value);
1168   2      		if((value < 5) && (rgb[2] > 4)){
1169   3      			rgb[2] -= 2;
1170   3      			i = 0xff;
1171   3      		}
1172   2      		if((value > 10) && (rgb[2] < 0x7f)){
1173   3      			rgb[2] += 2;
1174   3      			i = 0xff;
1175   3      		}
1176   2      		if(i == 0){
1177   3      			break;
1178   3      		}
1179   2      		else{
1180   3      			WriteIIC563(0x03,rgb[0]);
1181   3      			WriteIIC563(0x06,rgb[1]);
1182   3      			WriteIIC563(0x09,rgb[2]);
1183   3      		}
1184   2      	}
1185   1      	//printf("rOffset = %d\r\n",(unsigned short)rgb[0]);
1186   1      	//printf("gOffset = %d\r\n",(unsigned short)rgb[1]);
1187   1      	//printf("bOffset = %d\r\n",(unsigned short)rgb[2]);
1188   1      }
1189          
1190          void SetADC_Gain_C(void)
1191          {
1192   1      unsigned char i,k,value,rgb[3];
1193   1      
1194   1      	rgb[0] = ReadIIC563(0x01);
1195   1      	rgb[1] = ReadIIC563(0x04);
1196   1      	rgb[2] = ReadIIC563(0x07);
1197   1      
1198   1      	for(k=0; k<128; k++){
1199   2      		LocalTimer = 10;
1200   2      		WriteIIC563(0x106,0x2e);
1201   2      	   	while((ReadIIC563(0x106) & BIT_1) && LocalTimer != 0){
1202   3      			CheckModeChange();
1203   3      			if(Abort)
1204   3      				return;
1205   3      		}
1206   2      		i = 0;
1207   2      		value = ReadIIC563(0x113);
1208   2      //		printf("%d r = %x\r\n",(unsigned short)k,(unsigned short)value);
1209   2      		if((value < 0xf0) && (rgb[0] > 4)){
1210   3      			rgb[0] -= 2;
1211   3      			i = 0xff;
1212   3      		}
1213   2      		if((value > 0xf8) && (rgb[0] < 0xff)){
1214   3      			rgb[0] += 2;
1215   3      			i = 0xff;
1216   3      		}
1217   2      		value = ReadIIC563(0x114);
1218   2      //		printf("%d g = %x\r\n",(unsigned short)k,(unsigned short)value);
1219   2      		if((value < 0xf0) && (rgb[1] > 4)){
1220   3      			rgb[1] -= 2;
1221   3      			i = 0xff;
1222   3      		}
C51 COMPILER V6.12  AUTOADJ                                                                03/05/2008 14:11:12 PAGE 21  

1223   2      		if((value > 0xf8) && (rgb[1] < 0xff)){
1224   3      			rgb[1] += 2;
1225   3      			i = 0xff;
1226   3      		}
1227   2      		value = ReadIIC563(0x115);
1228   2      //		printf("%d b = %x\r\n",(unsigned short)k,(unsigned short)value);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?