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

📄 scaler.lst

📁 车载DVD的主控MCU的源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 713   2                      if((FuncBuf[pVIDEOSOURCE] == SourceDVI) && (ReadIIC563(0x19a) & BIT_3) ==0x00)
 714   2                      {
 715   3                              PixelRate = ReadWordIIC563(0x19b) & 0x1fff;
 716   3                              if((PixelRate == 0x1fff)||(PixelRate == 0))
 717   3                                      H_SYNC_Temp = 0xffff;
 718   3                              else
 719   3                                      H_Counter = PixelRate * 512;
 720   3                      }
 721   2                      else
 722   2                      {
 723   3                              LocalTimer = 25;
 724   3                              while(LocalTimer > 0){
 725   4                                      ch = ReadIIC563(0x0df) & 0x3f;
 726   4                                      PixelRate = ch;
 727   4                                      PixelRate <<= 8;
 728   4                                      ch = ReadIIC563(0x0de);
 729   4                                      PixelRate += ch;
 730   4                                      PixelRate <<= 8;
C51 COMPILER V7.06   SCALER                                                                12/11/2007 11:28:43 PAGE 13  

 731   4                                      ch = ReadIIC563(0x0dd);
 732   4                                      PixelRate += ch;
 733   4                                      if(abs(PixelRate - H_Counter) > 2){
 734   5                                              H_Counter = PixelRate;
 735   5                                              LocalTimer = 25;
 736   5                                      }
 737   4                                      if(DetectBacklight())   //waiting for pll stable
 738   4                                              break;
 739   4                              }
 740   3                              H_Counter = PixelRate;
 741   3                      }
 742   2                      temp = ((float)FuncBuf[pCLOCK] * 536870912) / PixelRate;
 743   2                      PixelRate = temp;
 744   2                      for(k; k>0; k--)
 745   2                              PixelRate <<= 1;
 746   2                      WriteIIC563(0x0d2,(unsigned char)PixelRate);
 747   2                      WriteIIC563(0x0d3,(unsigned char)(PixelRate>>8));
 748   2                      WriteIIC563(0x0d4,(unsigned char)(PixelRate>>16));
 749   2              }
 750   1              WriteIIC563(0x0d7,(Byte)FuncBuf[pCLOCK]);
 751   1              WriteIIC563(0x0d8,(Byte)(FuncBuf[pCLOCK]>>8));
 752   1              if((SyncMode == 1)||(SyncMode == 2)||(SyncMode == 5)||(SyncMode == 6)){ //H+V SOG
 753   2                      WriteIIC563(0xd5,0x09);
 754   2              }
 755   1              else{
 756   2              #if 0
                              if((HV_Pol & BIT_4) == 0)
                                      WriteIIC563(0x0d5,0x03&(~BIT_3));
                              else
                                      WriteIIC563(0x0d5,0x03|BIT_3);
                      #else
 762   2                      WriteIIC563(0x0d5,0x0b);
 763   2              #endif
 764   2              }
 765   1      }
 766          
 767          void SetDPLL(unsigned long dclk)
 768          {
 769   1              Byte i;
 770   1              unsigned long temp;
 771   1              unsigned long code DpllTab[4]={80000000,40000000,20000000,0}; //050428,Eason
 772   1              for(i=0;i<4;i++)
 773   1                      if(dclk > DpllTab[i])
 774   1                              break;
 775   1              WriteIIC563(0x0f1,0x10+i);
 776   1              if(PanelTwoPixelPerClk == 1)    //Jacky 20050107
 777   1                      WriteIIC563(0x1fb,i * 2);
 778   1              else
 779   1                      WriteIIC563(0x1fb,i & 0xFE );
 780   1              switch(i)
 781   1              {
 782   2                      case 0:
 783   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK;
 784   2                              break;
 785   2                      case 1:
 786   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 2;
 787   2                              break;
 788   2                      case 2:
 789   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 4;
 790   2                              break;
 791   2                      case 3:
 792   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 8;
C51 COMPILER V7.06   SCALER                                                                12/11/2007 11:28:43 PAGE 14  

 793   2                              break;
 794   2              };
 795   1              WriteIIC563(0x0f2,(unsigned char)temp);
 796   1              WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
 797   1              WriteIIC563(0x0f4,(unsigned char)(temp >> 16));
 798   1              WriteIIC563(0x0f0,0x03);
 799   1      }
 800          void SetHP(void)
 801          {
 802   1      // Horizontal Start
 803   1              WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
 804   1      }
 805          /*==========================================
 806          ==========================================*/
 807          void SetVP(void)
 808          {
 809   1      // Vertical Start
 810   1              if(Interlance){
 811   2                      WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
 812   2                      if(V_SYNC < 550)
 813   2                              WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]-1);
 814   2                      else
 815   2                              WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
 816   2              }else
 817   1      //              WriteWordIIC563(0x02e,0x0050);
 818   1                      WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
 819   1      }
 820          /*==========================================
 821          ==========================================*/
 822          /*
 823          void SetSharpness(void)
 824          {
 825                  Word code H_Sharp[]={
 826                          0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,
 827                          0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
 828                          0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
 829                          0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
 830                  };
 831                  WriteIIC563(0x060,H_Sharp[FuncBuf[pSHARPNESS]]);
 832                  WriteIIC563(0x066,FuncBuf[pSHARPNESS]/4);
 833          }
 834          */
 835          /*==========================================
 836          ==========================================*/
 837          void SetBrightness(void)
 838          {
 839   1      /*
 840   1              unsigned short value;
 841   1      
 842   1      #define BACKLIGHT_50    ((maxBACKLIGHT-minBACKLIGHT)/2+minBACKLIGHT)
 843   1      
 844   1              if(FuncBuf[pBRIGHTNESS]>BACKLIGHT_50)           // max=111, min=18, 50%=46+18=64
 845   1              {       
 846   1                      value = FuncBuf[pBRIGHTNESS];
 847   1                      value = (value-BACKLIGHT_50);
 848   1              
 849   1                      //PWM9_REG = 3*value/5+60;              // evan modify date 060214
 850   1              
 851   1                      PWM9_REG = 7*value/5+60;
 852   1              
 853   1                      WriteIIC563(0x061,0);
 854   1                      WriteIIC563(0x062,0);           
C51 COMPILER V7.06   SCALER                                                                12/11/2007 11:28:43 PAGE 15  

 855   1              }
 856   1              else
 857   1              {
 858   1                      PWM9_REG = 60;
 859   1                      value = 0x100 - (BACKLIGHT_50-FuncBuf[pBRIGHTNESS])*25/40;
 860   1                      WriteIIC563(0x061,0);
 861   1                      WriteIIC563(0x062,(Byte)value);
 862   1              }
 863   1      */      
 864   1      }
 865          /*==========================================
 866          ==========================================*/
 867          void SetContrast(void)
 868          {
 869   1              Word value,k;
 870   1              
 871   1              FuncBuf[pRCOLOR]=0x7f;
 872   1              FuncBuf[pGCOLOR]=0x7f;
 873   1              FuncBuf[pBCOLOR]=0x7f;
 874   1              FuncBuf[pCONTRAST]=0x7f;
 875   1      #if ContrastBlock == sRGBGain
              //      WriteIIC563(0x3C0,0x7c); 
              //      WriteIIC563(0x3C4,0x80);//level0);  
              //      WriteIIC563(0x3C5,0x80);//level1);   
              //      WriteIIC563(0x3C6,0x80);//level2);
                      sRGB(200,200,200);
              #else
 882   1              
 883   1              k = FuncBuf[pCONTRAST] + 100;           //78 ---- 178
 884   1              value = FuncBuf[pRCOLOR];
 885   1              value = (unsigned short)value * k / 128;
 886   1              WriteIIC563(0x061,0x0d);
 887   1              WriteIIC563(0x063,value);
 888   1              value = FuncBuf[pGCOLOR];
 889   1              value = (unsigned short)value * k / 128;
 890   1              WriteIIC563(0x061,0x0e);
 891   1              WriteIIC563(0x063,value);
 892   1              value = FuncBuf[pBCOLOR];
 893   1              value = (unsigned short)value * k / 128;
 894   1              WriteIIC563(0x061,0x0f);
 895   1              WriteIIC563(0x063,value);
 896   1      
 897   1      #endif
 898   1       }
 899          /*==========================================
 900          ==========================================*/
 901          void ForceToBackground(Byte color_r,Byte color_g,Byte color_b)
 902          {
 903   1              unsigned char temp;
 904   1              if((ForceToBack == 0)||(FactMode!= 0)){
 905   2                      ForceToBack = 1;
 906   2                      WriteIIC563(0x16b,color_r);
 907   2                      WriteIIC563(0x16c,color_g);
 908   2                      WriteIIC563(0x16d,color_b);
 909   2                      temp = ReadIIC563(0x159);
 910   2                      //WriteIIC563(0x159,(temp&0xc0|0x07));  //RGB
 911   2                      WriteIIC563(0x159,(temp&0xc0)); //RGB
 912   2                      WriteIIC563(0x154,0x02);
 913   2              }
 914   1      }
 915          /*==========================================
 916          ==========================================*/
C51 COMPILER V7.06   SCALER                                                                12/11/2007 11:28:43 PAGE 16  

 917          void SetDisplayNormal(void)
 918          {
 919   1              Byte ch;
 920   1              if(SyncMode == 3)
 921   1                      {
 922   2                              ;
 923   2                      }
 924   1              else
 925   1                      {
 926   2                      WriteIIC563(0x1a9,0x00);
 927   2                      ch = ReadIIC563(0x101);
 928   2                      WriteIIC563(0x101,ch|BIT_5);    //chip warm reset
 929   2                      //Sleep(20);
 930   2                      WriteIIC563(0x101,ch);  //chip warm reset
 931   2                      }
 932   1      #if DVImode == DEmode
 933   1              // Jacky 20040623 For DE mode scaler shut down
 934   1              if(SyncMode == 3)       //DVI
 935   1              {
 936   2                      WriteIIC563(0x1a9,0x00);        //disable IRQ interrupt
 937   2                      ch = ReadIIC563(0x196);
 938   2                      WriteIIC563(0x196,0x94);
 939   2                      Sleep(20);
 940   2                      WriteIIC563(0x196,ch&(~BIT_7));
 941   2              }
 942   1      #endif
 943   1      //      Sleep(80);
 944   1      //      Sleep(50);
 945   1              //-------------------------
 946   1              WriteIIC563(0x1ab,0x3f);                //clear IRQ
 947   1              WriteIIC563(0x1ac,0x1f);
 948   1              WriteIIC563(0x1a9,0x3c);
 949   1              LoadADC_Gain();
 950   1              if(SyncMode == 3)       //DVI
 951   1              {
 952   2                      WriteIIC563(0x068,0x00);
 953   2                      WriteIIC563(0x06a,0x00);
 954   2              }

⌨️ 快捷键说明

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