📄 autoadj.lst
字号:
234 2 H_Difference = (H_Difference & 0xF0) >> 4;
235 2 if(Compare==0x01){
236 3 break; //H_Ref=H_Act
237 3 }
238 2 if(Compare==0x00){
239 3 // if(H_Difference == 0x01)
240 3 // break;
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 5
241 3 HTotal = HTotal + H_Difference;
242 3 if(HTotal > 2048){
243 4 i = 0xff;
244 4 break;
245 4 }
246 3 }
247 2 if(Compare == 0x02){
248 3 // if(H_Difference == 0x01)
249 3 // break;
250 3 HTotal = HTotal - H_Difference;
251 3 if(HTotal < H_Ref){
252 4 i = 0xff;
253 4 break;
254 4 }
255 3 }
256 2 SetADC_PLL();
257 2 if((flag3 & BIT_1) != 0){
258 3 flag2 |= BIT_0;
259 3 return;
260 3 }
261 2 }
262 1 if(i == 0xff){
263 2 NonFullScreen = 1;
264 2 flag2 |= BIT_0;
265 2 }
266 1 else{
267 2 #if 1
268 2 HTotal = (HTotal + 2) & 0xfffc;
269 2 #else
HTotal = (HTotal + 1) & 0xfffe;
#endif
272 2 SetADC_PLL();
273 2 if((flag3 & BIT_1) != 0){
274 3 flag2 |= BIT_0;
275 3 return;
276 3 }
277 2 }
278 1 }
279
280 void AutoPhaseFineTune(void)
281 {
282 1 unsigned char qq,yy,zz,uu,i;
283 1 unsigned long Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta;
284 1 unsigned char value;
285 1 if((flag2 & BIT_0) != 0x00)
286 1 return;
287 1 //-------------------------at color xx , calculate phase-------------------------
288 1 Phase_1 = 0x00000000; // (i-1)
289 1 Phase_2 = 0x00000000; // (i-2)
290 1 Phase_Pre3 = 0x00000000; // (pre sum)->(delta)->(now sum)
291 1 Phase_Delta = 0xffffffff; // (min delta)
292 1 // ADC_Phase =( ADC_Phase - 6) & 0x3F; // 3 is search range....
293 1 qq = ADC_Phase;
294 1 // SetADC_Phase();
295 1 WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
296 1 Timer3 = 100;
297 1 // for(yy=1; yy<16; yy++){
298 1 for(yy=1; yy<Repeat; yy++){
299 2 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
300 3 CheckModeChange();
301 3 if((flag2 & BIT_0) != 0)
302 3 return;
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 6
303 3 }
304 2 ADC_Phase = (qq + yy) & 0x3f;
305 2 SetADC_Phase();
306 2 WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
307 2 Timer3 = 100;
308 2 Phase_Now3 = 0x00000000;
309 2 for (zz=0x24; zz>0x20; zz--){
310 3 value = ReadIIC_HW(Scaler_Addr,zz);
311 3 Phase_Now3 = Phase_Now3 << 8;
312 3 Phase_Now3 = Phase_Now3 + value;
313 3 }
314 2 i = (ADC_Phase - 1) & 0x3f;
315 2 Phase_2 = Phase_1; // Shift
316 2 Phase_1 = Phase_0;
317 2 Phase_0 = Phase_Now3;
318 2 Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2); // Phase_Now3
319 2 if(yy < 4){
320 3 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
321 3 }
322 2 else{
323 3 if(Phase_Now3 > Phase_Pre3){
324 4 Phase_Pre3 = Phase_Now3 - Phase_Pre3;
325 4 }
326 3 else{
327 4 Phase_Pre3 = Phase_Pre3 - Phase_Now3; // Phase_Pre3=delta
328 4 }
329 3 if(Phase_Pre3 < Phase_Delta){
330 4 uu = i;
331 4 Phase_Delta = Phase_Pre3;
332 4 }
333 3 Phase_Pre3 = Phase_Now3; // Phase_Pre3 = Phase_Now3
334 3 }
335 2 }
336 1 ADC_Phase = (uu - 2) & 0x3f;
337 1 SetADC_Phase();
338 1 }
339
340 void SetADC_Offset(unsigned char OffSet)
341 {
342 1 unsigned char i,j,k,m,n,value;
343 1 unsigned long PhaseResult,Temp;
344 1 // WriteIIC_HW(Scaler_Addr,0x02,0x36);
345 1 // WriteIIC_HW(Scaler_Addr,0x04,0x35);
346 1 // WriteIIC_HW(Scaler_Addr,0x06,0x37);
347 1 WriteIIC_HW(Scaler_Addr,0x26,0x00);
348 1 WriteIIC_HW(Scaler_Addr,0x27,0x00);
349 1 for(m=0; m<3; m++){
350 2 for(k=OffSet; k<128; k=k+8){
351 3 i = 0x0f + m;
352 3 WriteIIC_HW(Scaler_Addr,i,k);
353 3 WaitSetup(5);
354 3 Timer3 = 10;
355 3 i = 0x19 + m * 0x10;
356 3 WriteIIC_HW(Scaler_Addr,0x20,i);
357 3 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
358 4 CheckModeChange();
359 4 if((flag2 & BIT_0) != 0)
360 4 return;
361 4 }
362 3 if(Timer3 == 0){
363 4 flag2 |= BIT_0;
364 4 return;
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 7
365 4 }
366 3 j = 0;
367 3 Temp = 0;
368 3 for(i=0; i<8; i++){
369 4 WriteIIC_HW(Scaler_Addr,0x24,i);
370 4 value = ReadIIC_HW(Scaler_Addr,0x23);
371 4 PhaseResult = value;
372 4 PhaseResult <<= 8;
373 4 value = ReadIIC_HW(Scaler_Addr,0x22);
374 4 PhaseResult += value;
375 4 PhaseResult <<= 8;
376 4 value = ReadIIC_HW(Scaler_Addr,0x21);
377 4 PhaseResult += value;
378 4 if(PhaseResult > Temp){
379 5 Temp = PhaseResult;
380 5 j = i;
381 5 }
382 4 }
383 3 if(Temp > 0x300){
384 4 i = 0x0f + m;
385 4 j = k+j;
386 4 WriteIIC_HW(Scaler_Addr,i,j);
387 4 break;
388 4 }
389 3 }
390 2 if(k == 128){
391 3 flag2 |= BIT_0;
392 3 return;
393 3 }
394 2 for(n=0; n<8; n++){
395 3 i = 0x0f + m;
396 3 WriteIIC_HW(Scaler_Addr,i,k+n);
397 3 WaitSetup(5);
398 3 Timer3 = 10;
399 3 i = 0x19 + m * 0x10;
400 3 WriteIIC_HW(Scaler_Addr,0x20,i);
401 3 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
402 4 CheckModeChange();
403 4 if((flag2 & BIT_0) != 0)
404 4 return;
405 4 }
406 3 if(Timer3 == 0){
407 4 flag2 |= BIT_0;
408 4 return;
409 4 }
410 3 j = 0;
411 3 Temp = 0;
412 3 for(i=0; i<8; i++){
413 4 WriteIIC_HW(Scaler_Addr,0x24,i);
414 4 value = ReadIIC_HW(Scaler_Addr,0x23);
415 4 PhaseResult = value;
416 4 PhaseResult <<= 8;
417 4 value = ReadIIC_HW(Scaler_Addr,0x22);
418 4 PhaseResult += value;
419 4 PhaseResult <<= 8;
420 4 value = ReadIIC_HW(Scaler_Addr,0x21);
421 4 PhaseResult += value;
422 4 if(PhaseResult > Temp){
423 5 Temp = PhaseResult;
424 5 j = i;
425 5 }
426 4 }
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 8
427 3 if(j == 0){
428 4 break;
429 4 }
430 3 }
431 2 i = 0x0f + m;
432 2 j = k+n;
433 2 WriteIIC_HW(Scaler_Addr,i,j);
434 2 }
435 1 Write24C16(0xfa,ReadIIC_HW(Scaler_Addr,0x0f));
436 1 Write24C16(0xfb,ReadIIC_HW(Scaler_Addr,0x10));
437 1 Write24C16(0xfc,ReadIIC_HW(Scaler_Addr,0x11));
438 1 }
439
440 void SetADC_Gain(unsigned char OffSet)
441 {
442 1 unsigned char i,j,k,m,n,value;
443 1 unsigned long PhaseResult,Temp;
444 1 WriteIIC_HW(Scaler_Addr,0x26,0x00);
445 1 WriteIIC_HW(Scaler_Addr,0x27,0xf8);
446 1 for(m=0; m<3; m++){
447 2 for(k=OffSet; k>7; k=k-8){
448 3 i = 0x02 + m * 2;
449 3 WriteIIC_HW(Scaler_Addr,i,k);
450 3 WaitSetup(5);
451 3 Timer3 = 10;
452 3 i = 0x19 + m * 0x10;
453 3 WriteIIC_HW(Scaler_Addr,0x20,i);
454 3 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
455 4 CheckModeChange();
456 4 if((flag2 & BIT_0) != 0)
457 4 return;
458 4 }
459 3 if(Timer3 == 0){
460 4 flag2 |= BIT_0;
461 4 return;
462 4 }
463 3 j = 0;
464 3 Temp = 0;
465 3 for(i=0; i<8; i++){
466 4 WriteIIC_HW(Scaler_Addr,0x24,i);
467 4 value = ReadIIC_HW(Scaler_Addr,0x23);
468 4 PhaseResult = value;
469 4 PhaseResult <<= 8;
470 4 value = ReadIIC_HW(Scaler_Addr,0x22);
471 4 PhaseResult += value;
472 4 PhaseResult <<= 8;
473 4 value = ReadIIC_HW(Scaler_Addr,0x21);
474 4 PhaseResult += value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -