⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tw88.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 568          extern CODE struct RegisterInfo PanelContrastRange;
 569          extern CODE struct RegisterInfo PanelBrightnessRange;
 570          extern CODE struct RegisterInfo PanelSharpnessRange;
 571          extern CODE struct RegisterInfo PanelHueRange;
 572          extern CODE struct RegisterInfo PanelSaturationRange;
 573          
 574          void GetInitPanelAttribute1(void)
 575          {
 576   1              BYTE rdata;
 577   1              int     regv;
 578   1      
 579   1              rdata = GetPanelContrastEE();
 580   1              Mapping1( rdata, &UserRange ,&regv, &PanelContrastRange);
 581   1              SetRGBContrast( GetPCColorTempModeEE(), (BYTE)regv );
 582   1      
 583   1              rdata = GetPanelBrightnessEE() ;
 584   1              Mapping1( rdata, &UserRange , &regv,   &PanelBrightnessRange );
 585   1              SelectPanelAttrRegGroup(GROUP_RGB); // Need to refresh "INDX_CB" bit  // Hans
 586   1              SetPanelBrightnessReg(RED,   (BYTE)regv);
 587   1              SetPanelBrightnessReg(GREEN, (BYTE)regv);
 588   1              SetPanelBrightnessReg(BLUE,  (BYTE)regv);
 589   1      
 590   1              SelectPanelAttrRegGroup(GROUP_YCbCr);
 591   1             SetDTVBrightnessReg(0x80);
 592   1             SetDTVContrastReg(0x80);
 593   1              SetPanelSaturationReg(U_SAT, 0x80);
 594   1              SetPanelSaturationReg(V_SAT, 0x80);
 595   1      }
 596          
 597          #endif // SUPPORT_PC
 598          
 599          //-------------------------------------------------------------------
 600          //                  Set Active Region Functions
 601          //-------------------------------------------------------------------
 602          void SetHactiveStart(WORD hstart)
 603          {
C51 COMPILER V7.50   TW88                                                                  04/01/2008 15:02:37 PAGE 11  

 604   1              BYTE val;
 605   1      
 606   1              #ifdef DEBUG_PC
 607   1              dPrintf("\r\n === SetHactiveStart(%d)", hstart);
 608   1              #endif
 609   1              // TW8804 write LSByte first
 610   1              val = ReadDecoder(0x49);
 611   1              val = val & 0xf8;
 612   1              val = val | (hstart>>8);
 613   1      
 614   1              WriteDecoder(0x49, val);
 615   1              WriteDecoder(0x47, (BYTE)hstart);
 616   1      }
 617          
 618          void SetHactiveEnd(WORD hend)
 619          {
 620   1              BYTE    val, buf;
 621   1      
 622   1              #ifdef DEBUG_PC
 623   1              dPrintf("\r\n === SetHactiveEnd(%d)", hend);
 624   1              #endif
 625   1              // TW8804 write LSByte first
 626   1              buf = (BYTE)(hend>>8)<<4;
 627   1              val = ReadDecoder(0x49);
 628   1              val = val & 0x0f;
 629   1              val = val | buf;
 630   1              
 631   1              WriteDecoder(0x49, val);
 632   1              WriteDecoder(0x48, (BYTE)hend);
 633   1      }
 634          
 635          void SetVactiveStart(WORD vstart)
 636          {
 637   1              BYTE val, v_h, v_l;
 638   1      
 639   1              #ifdef DEBUG_PC
 640   1              dPrintf("\r\n === SetVactiveStart(%d)", vstart);
 641   1              #endif
 642   1              // TW8804 write LSByte first
 643   1              v_l = (BYTE)vstart;
 644   1              v_h = (BYTE)(vstart>>8);
 645   1      
 646   1              val = ReadDecoder(0x4d);        // high 2 bits
 647   1              val = (val & 0xf0);
 648   1              val = val | (v_h<<2);
 649   1              val = val | v_h;
 650   1              WriteDecoder(0x4d, val);
 651   1      
 652   1              WriteDecoder(0x4a, v_l);        // Vactive Odd field Line start position
 653   1              WriteDecoder(0x4b, v_l);        // Vactive Even field Line start position
 654   1      }
 655          
 656          void SetVactiveLen(WORD van)
 657          {
 658   1      //      WORD vstop;
 659   1              BYTE val, buf;
 660   1      
 661   1              van += 1;                                                       // HHY add 1, because of bottom line garbage
 662   1              #ifdef DEBUG_PC
 663   1              dPrintf("\r\n === SetVactiveLen(%d)", van);
 664   1              #endif
 665   1      
C51 COMPILER V7.50   TW88                                                                  04/01/2008 15:02:37 PAGE 12  

 666   1              // TW8804 write LSByte first
 667   1              buf = (BYTE)(van>>8) << 4;
 668   1              val = ReadDecoder(0x4d);
 669   1              val = val & 0x8f;
 670   1              val = val | buf;
 671   1              WriteDecoder(0x4d, val);
 672   1              WriteDecoder(0x4c, (BYTE)van);          
 673   1                                              
 674   1      }
 675          
 676          void DefaultPanelAttributeForVideo(void)
 677          {
 678   1              SelectPanelAttrRegGroup(GROUP_RGB);
 679   1      
 680   1              SetPanelContrastReg(RED,  0x80);
 681   1              SetPanelContrastReg(GREEN,0x80);
 682   1              SetPanelContrastReg(BLUE, 0x80);
 683   1      
 684   1              SetPanelBrightnessReg(RED,  0x80);
 685   1              SetPanelBrightnessReg(GREEN,0x80);
 686   1              SetPanelBrightnessReg(BLUE, 0x80);
 687   1      
 688   1              SelectPanelAttrRegGroup(GROUP_YCbCr);
 689   1      
 690   1             SetDTVBrightnessReg(0x70); // 0x80
 691   1             SetDTVContrastReg(0x80);
 692   1              SetPanelSaturationReg(U_SAT, 0xB0); // 0x80
 693   1              SetPanelSaturationReg(V_SAT, 0xB0); // 0x80
 694   1      
 695   1      }
 696          
 697          #ifdef SUPPORT_PC
 698          
 699          //=============================================================================
 700          //                          Invert Polarity Functions
 701          //=============================================================================
 702          /*
 703          void InvertHSYNCPolarity(void)
 704          {
 705                  BYTE val;
 706          
 707                  val = ReadDecoder(0x40);
 708                  if( val & 0x04 ) {
 709                          val &= 0xfb;
 710          
 711                          #ifdef DEBUG_PC
 712                          dPuts("\r\nInvert H Pol: N->P ");
 713                          #endif
 714          
 715                  }
 716                  else {
 717                          val |= 0x04;
 718                          
 719                          #ifdef DEBUG_PC
 720                          dPuts("\r\nInvert H Pol: P->N ");
 721                          #endif
 722          
 723                  }
 724                  WriteDecoder(0x40, val);
 725          }
 726          */
 727          void InvertVSYNCPolarity(void)
C51 COMPILER V7.50   TW88                                                                  04/01/2008 15:02:37 PAGE 13  

 728          {
 729   1              BYTE val;
 730   1      
 731   1              val = ReadDecoder(0x40);
 732   1              if( val & 0x02 ) {
 733   2                      val &= 0xfd;
 734   2      
 735   2                      #ifdef DEBUG_PC
 736   2                      dPuts("\r\nInvert V Pol: N->P ");
 737   2                      #endif
 738   2      
 739   2              }
 740   1              else {
 741   2                      val |= 0x02;
 742   2      
 743   2                      #ifdef DEBUG_PC
 744   2                      dPuts("\r\nInvert V Pol: P->N ");
 745   2                      #endif
 746   2      
 747   2              }
 748   1              WriteDecoder(0x40, val);
 749   1      }
 750          
 751          //=============================================================================
 752          //                          get sync pulse Functions
 753          //=============================================================================
 754          WORD GetVSYNCPulse(void)
 755          {
 756   1              WORD buf;
 757   1      
 758   1              WriteDecoder(0x5b, 0x70);                       // VSYNC 
 759   1              delay(10);
 760   1              buf = (WORD)ReadDecoder(0x58) << 8;
 761   1              buf |= ReadDecoder(0x57);
 762   1      
 763   1              #ifdef DEBUG_PC
 764   1              dPrintf("\r\nGetVSYNCPulse():%d ", buf);
 765   1              #endif
 766   1              return buf;
 767   1      }
 768          
 769          /* Not used right now!!
 770          WORD GetRelativePosition(void)
 771          {
 772                  WORD buf;
 773          
 774                  WriteDecoder(0x5b, 0x70);                       // VSYNC 
 775          
 776                  buf = (WORD)ReadDecoder(0x5a) << 8;
 777                  buf |= ReadDecoder(0x59);
 778          
 779                  return buf;
 780          }
 781          //*/
 782          
 783          WORD GetHSYNCPulse(void)
 784          {
 785   1              WORD buf;
 786   1      
 787   1              WriteDecoder(0x5b, 0x60);                       // HSYNC 
 788   1              buf = (WORD)ReadDecoder(0x58) << 8;             // from MSB
 789   1              buf |= ReadDecoder(0x57);
C51 COMPILER V7.50   TW88                                                                  04/01/2008 15:02:37 PAGE 14  

 790   1      
 791   1              return buf;
 792   1      }
 793          
 794          #endif  // SUPPORT_PC
 795          
 796          //=============================================================================
 797          //                                                              Internal PLL
 798          //=============================================================================
 799          #if defined SUPPORT_PC || defined SUPPORT_DTV
 800          
 801          BYTE GetPOST(void)
 802          {
 803   1              BYTE post;
 804   1      
 805   1              post = ReadDecoder(TW88_PLL_DIV);
 806   1              return ((post>>6) & 0x03);                      // change register position
 807   1      }
 808          
 809          DWORD GetPPF(void)
 810          {
 811   1              DWORD ppf, Freq;
 812   1              BYTE  i;
 813   1      
 814   1              Freq = ReadDecoder(TW88_FPLL0);
 815   1              Freq &= 0x0f;
 816   1              Freq <<= 8;
 817   1              Freq |= ReadDecoder(TW88_FPLL1);
 818   1              Freq <<= 8;
 819   1              Freq |= ReadDecoder(TW88_FPLL2);
 820   1      
 821   1              #ifdef DEBUG_PC
 822   1              dPrintf("\r\n(GetFBDN) :%ld", Freq);
 823   1              #endif
 824   1      // 27000000 * 4 * FREQ / 2^17  / 2^POST
 825   1              ppf = 824L * ( Freq );
 826   1      //      ppf = 412L * ( GetFBDN() );
 827   1      
 828   1              i= GetPOST();
 829   1              
 830   1              for(; i>0; i-- ) ppf /= 2;
 831   1      
 832   1              #ifdef DEBUG_PC
 833   1              dPrintf("\r\n(GetPPF) :%ld", ppf);
 834   1              #endif
 835   1              return ppf;
 836   1      }
 837          #endif 
 838          
 839          #if defined SUPPORT_PC || defined SUPPORT_DTV
 840          //=============================================================================
 841          //                         Set Measurement Window Functions   
 842          //=============================================================================
 843          void SetMeasureWindowH(WORD start, WORD stop)
 844          {
 845   1              BYTE val;
 846   1      
 847   1              #ifdef DEBUG_PC
 848   1              dPrintf("\r\nSetWindow H. Range(%04x, %04x)", start, stop);
 849   1              #endif
 850   1      
 851   1              // TW8804 write LSByte first
C51 COMPILER V7.50   TW88                                                                  04/01/2008 15:02:37 PAGE 15  

 852   1              val = (BYTE)((stop >> 4) & 0xf0);
 853   1              val |= (BYTE)((start>>8) & 0x07);
 854   1              WriteDecoder(0x53, val);                                // H-start and H-stop
 855   1      
 856   1              WriteDecoder(0x51, (BYTE)start);                // H-start
 857   1              WriteDecoder(0x52, (BYTE)stop);                 // H-stop
 858   1      }
 859          

⌨️ 快捷键说明

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