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