📄 autoadj.lst
字号:
475 4 if(PhaseResult > Temp){
476 5 Temp = PhaseResult;
477 5 j = i;
478 5 }
479 4 }
480 3 if(Temp > 0x300){
481 4 i = 0x02 + m * 2;
482 4 j = k+j;
483 4 break;
484 4 }
485 3 }
486 2 if(k == 0){
487 3 flag2 |= BIT_0;
488 3 return;
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 9
489 3 }
490 2 for(n=0; n<16; n++){
491 3 i = 0x02 + m * 2;
492 3 WriteIIC_HW(Scaler_Addr,i,k-n);
493 3 WaitSetup(5);
494 3 Timer3 = 10;
495 3 i = 0x19 + m * 0x10;
496 3 WriteIIC_HW(Scaler_Addr,0x20,i);
497 3 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
498 4 CheckModeChange();
499 4 if((flag2 & BIT_0) != 0)
500 4 return;
501 4 }
502 3 if(Timer3 == 0){
503 4 flag2 |= BIT_0;
504 4 return;
505 4 }
506 3 j = 0;
507 3 Temp = 0;
508 3 for(i=0; i<8; i++){
509 4 WriteIIC_HW(Scaler_Addr,0x24,i);
510 4 value = ReadIIC_HW(Scaler_Addr,0x23);
511 4 PhaseResult = value;
512 4 PhaseResult <<= 8;
513 4 value = ReadIIC_HW(Scaler_Addr,0x22);
514 4 PhaseResult += value;
515 4 PhaseResult <<= 8;
516 4 value = ReadIIC_HW(Scaler_Addr,0x21);
517 4 PhaseResult += value;
518 4 if(PhaseResult > Temp){
519 5 Temp = PhaseResult;
520 5 j = i;
521 5 }
522 4 }
523 3 if(j == 7){
524 4 break;
525 4 }
526 3 }
527 2 i = 0x02 + m * 2;
528 2 j = k-n;
529 2 WriteIIC_HW(Scaler_Addr,i,j);
530 2 }
531 1 R_ADC = ReadIIC_HW(Scaler_Addr,0x02);
532 1 Write24C16(0xfd,R_ADC);
533 1 G_ADC = ReadIIC_HW(Scaler_Addr,0x04);
534 1 Write24C16(0xfe,G_ADC);
535 1 B_ADC = ReadIIC_HW(Scaler_Addr,0x06);
536 1 Write24C16(0xff,B_ADC);
537 1 }
538
539 void AutoColor(void)
540 {
541 1 flag2 &= ~BIT_0;
542 1 WriteWordIIC_HW(Scaler_Addr,0x18,HP_Start - 20);
543 1 SetADC_Offset(0x20);
544 1 if((flag2 & BIT_0) != 0x00){
545 2 goto Error;
546 2 }
547 1 WriteWordIIC_HW(Scaler_Addr,0x18,HP_Start);
548 1 SetADC_Gain(0xa0);
549 1 Error:
550 1 if((flag2 & BIT_0) != 0){
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 10
551 2 LoadADC_Gain();
552 2 }
553 1 }
554 //////////////////////////////////////////////////////////////////////////////
555 void AutoClockByPhase(bit h)
556 {
557 1 bit R_L,U_D;
558 1 unsigned char k,temp;
559 1 unsigned short i,GoodClk;
560 1 xdata unsigned long MaxMin,Value;
561 1 if((ModePoint < UserModeSt)&&(h == 1)){
562 2 i = 0x104 + (ModePoint * 8);
563 2 HTotal = MCU_DataMap[i];
564 2 i++;
565 2 HTotal <<= 8;
566 2 HTotal += MCU_DataMap[i];
567 2 }
568 1 GoodClk = HTotal;
569 1 SetADC_PLL();
570 1 WaitSetup(40);
571 1 if((flag2 & BIT_0) != 0)
572 1 return;
573 1 MaxMin = CheckPhaseData();
574 1 temp = TempValue;
575 1 if((flag2 & BIT_0) != 0)
576 1 return;
577 1 U_D = 0;
578 1 R_L = 1;
579 1 for(k=0; k<16; k++){
580 2 if(R_L == 1){
581 3 HTotal += 2;
582 3 SetADC_PLL();
583 3 WaitSetup(40);
584 3 if((flag2 & BIT_0) != 0)
585 3 return;
586 3 Value = CheckPhaseData();
587 3 if((flag2 & BIT_0) != 0)
588 3 return;
589 3 if(MaxMin < Value){
590 4 GoodClk = HTotal;
591 4 MaxMin = Value;
592 4 temp = TempValue;
593 4 U_D = 1;
594 4 }
595 3 else{
596 4 if(U_D == 0){
597 5 R_L = 0;
598 5 HTotal -= 2;
599 5 U_D = 1;
600 5 }
601 4 else{
602 5 break;
603 5 }
604 4 }
605 3 }
606 2 else{
607 3 HTotal -= 2;
608 3 SetADC_PLL();
609 3 WaitSetup(40);
610 3 if((flag2 & BIT_0) != 0)
611 3 return;
612 3 Value = CheckPhaseData();
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 11
613 3 if((flag2 & BIT_0) != 0)
614 3 return;
615 3 if(MaxMin < Value){
616 4 GoodClk = HTotal;
617 4 MaxMin = Value;
618 4 temp = TempValue;
619 4 U_D = 1;
620 4 }
621 3 else{
622 4 if(U_D == 0){
623 5 R_L = 1;
624 5 HTotal += 2;
625 5 U_D = 1;
626 5 }
627 4 else{
628 5 break;
629 5 }
630 4 }
631 3 }
632 2 }
633 1 HTotal = GoodClk;
634 1 SetADC_PLL();
635 1 ADC_Phase = (temp + 24) & 0x3f;
636 1 Repeat = 32;
637 1 SetADC_Phase();
638 1 }
639
640 unsigned long CheckPhaseData(void)
641 {
642 1 unsigned char zz,ch;
643 1 xdata unsigned long Value,MinValueTemp,MaxValueTemp;
644 1 MaxValueTemp = 0;
645 1 MinValueTemp = 0xffffffff;
646 1 ADC_Phase = 0;
647 1 SetADC_Phase();
648 1 WriteIIC_HW(Scaler_Addr,0x20,0x01); // 0x01 --> 0x09
649 1 Timer3 = 10;
650 1 for(ADC_Phase=4; ADC_Phase<0x42; ADC_Phase = ADC_Phase + 4){
651 2 while((ReadIIC_HW(Scaler_Addr,0x20) & BIT_0) && Timer3 != 0){
652 3 CheckModeChange();
653 3 if((flag2 & BIT_0) != 0)
654 3 return 0;
655 3 }
656 2 SetADC_Phase();
657 2 WriteIIC_HW(Scaler_Addr,0x20,0x01);
658 2 Timer3 = 10;
659 2 Value = 0x00000000;
660 2 for(zz=0x24; zz>0x20; zz--){
661 3 ch = ReadIIC_HW(Scaler_Addr,zz);
662 3 Value = Value << 8;
663 3 Value = Value + ch;
664 3 }
665 2 if(Value < MinValueTemp){
666 3 MinValueTemp = Value;
667 3 TempValue = (ADC_Phase - 4) & 0x3f;
668 3 }
669 2 if(Value > MaxValueTemp){
670 3 MaxValueTemp = Value;
671 3 }
672 2 }
673 1
674 1 Value = MaxValueTemp - MinValueTemp;
C51 COMPILER V7.50 AUTOADJ 03/18/2008 22:04:54 PAGE 12
675 1
676 1 return Value;
677 1 }
678 //////////////////////////////////////////////////////////////////////////////
679 void CheckRCV(void)
680 {
681 1 unsigned char i;
682 1 if(RI == 1){
683 2 i = SBUF;
684 2 RI = 0;
685 2 CheckCmd(i);
686 2 }
687 1 }
688
689 void CheckCmd(unsigned char i)
690 {
691 1 while(TI == 0){}
692 1 SBUF = i;
693 1 TI = 0;
694 1 if(i == 13){ //command over
695 2 while(TI == 0){}
696 2 printf("\n");
697 2 switch(rwbuf){
698 3 case 0x00:
699 3 printf("\r\n");
700 3 printf("W0 aaaa dd : Write 24C16\r\n");
701 3 printf("R0 aaaa : Read 24C16\r\n");
702 3 printf("W1 aaaa dd : Write Scaler\r\n");
703 3 printf("R1 aaaa : Read Scaler\r\n");
704 3 printf("W2 aaaa dd : Write rgbGain\r\n");
705 3 printf("R2 aaaa : Read rgbGain\r\n");
706 3 printf("W3 aaaa dd : Write SAA7114\r\n");
707 3 printf("R3 aaaa : Read SAA7114\r\n");
708 3 printf("R4 0 : Auto Black Level\r\n");
709 3 printf("R4 1 : Auto White Level\r\n");
710 3 printf("R4 2 : Auto Color\r\n");
711 3 printf("R4 3 : Set 6500K\r\n");
712 3 printf("R4 4 : Set 7500K\r\n");
713 3 printf("R4 5 : Set 9300K\r\n");
714 3 printf("R4 6 : Resive\r\n");
715 3 printf("R4 7 : DDC Write Enable\r\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -