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

📄 modehandle.lst

📁 车载DVD的主控MCU的源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 525   1              for(ModePoint=0;ModePoint< T_Total_Mode_No;ModePoint++){
 526   2                      Hf.b[0] = EEP_ModeMap[T_EEaddr_H_Freq_Hi_Byte]; //check h_sync
 527   2                      Hf.b[1] = EEP_ModeMap[T_EEaddr_H_Freq_Low_Byte];
 528   2                      Vf.b[0] = EEP_ModeMap[T_EEaddr_V_Freq_Hi_Byte];
 529   2                      Vf.b[1] = EEP_ModeMap[T_EEaddr_V_Freq_Low_Byte];
 530   2                      
 531   2                      PolPass = 0;
 532   2                      if(Vf.b[0] & 0x80)
 533   2                              PolPass = 1;
 534   2                      if((Vf.b[0] & 0x30) == HV_Pol)
 535   2                              PolPass = 1;
 536   2                      if(Vf.b[0] & 0x40){
 537   3                              ch = (Vf.b[0] & 0x40) >> 1;
 538   3                              ch |= ch >> 1;
 539   3                              if(ch == HV_Pol)
 540   3                                      PolPass = 1;
 541   3                      }
 542   2                      if(PolPass){
 543   3                              if(abs(Hf.w - H_SYNC)<3){
 544   4                                      Vf.b[0] &= 0x0f;
 545   4                                      if(abs(Vf.w - V_SYNC) < 10){
 546   5                                                      break;
 547   5                                              }
 548   4                                      }
 549   3                              }
 550   2                      }
C51 COMPILER V7.06   MODEHANDLE                                                            12/11/2007 11:28:43 PAGE 10  

 551   1      #endif          
 552   1      /*
 553   1              if(ModePoint >=Graphic_Text_Mode_Start_No&&ModePoint <=Graphic_Text_Mode_End_No&&(SyncMode == 0 || SyncMo
             -de == 3)){
 554   1                      GTmodeEn = 1;
 555   1                      if(TextMode)
 556   1                              ModePoint++;            //for set in text mode kevin y50202
 557   1              }else{
 558   1                      GTmodeEn = 0;
 559   1              }
 560   1              if(ModePoint >= T_Total_Mode_No){
 561   1                      NewMode = 1;
 562   1                      SetUserMode();
 563   1              }else{
 564   1                      NewMode = 0;
 565   1                      }
 566   1      */      
 567   1              if(ModePoint >= 19)
 568   1                      ModePoint = 11;
 569   1              LoadModeDependentSettings();
 570   1      /*      
 571   1              if(ModePoint ==1)
 572   1                      FuncBuf[pHPOSITION] = 0x96;//0x4B;
 573   1              else{
 574   1                      FuncBuf[pHPOSITION] = 0x2e;//0x4B;
 575   1                      FuncBuf[pVPOSITION] = 0x14;//0x4B;
 576   1              }
 577   1      */      
 578   1              ResolutionPtr = EEP_ModeMap[T_EEaddr_Resol]&0x7f;
 579   1              Hresolution = Active_Tab[Get_active_index()].H_Active;
 580   1              Vresolution = Active_Tab[Get_active_index()].V_Active;
 581   1              if(Vresolution>VTotal)
 582   1                      Vresolution=VTotal-20;
 583   1              ClockBase = EEP_ModeMap[T_EEaddr_BaseHTotal];   //EEP_SyncMap[Addr+2];
 584   1              ClockBase <<= 8;
 585   1              ClockBase |=  EEP_ModeMap[T_EEaddr_BaseHTotal+1];       //[Addr+3];
 586   1              
 587   1              SetInterface();
 588   1              SetScaler();
 589   1      //      SetADC_PLL();
 590   1              if(SyncMode < 3)        //skip setadcpll while in DVI mode
 591   1                      {
 592   2                      SetADC_PLL();
 593   2                      SetADC_Phase();
 594   2                      }
 595   1              else
 596   1                      {
 597   2                      CheckDVIresolution();
 598   2      //              CheckDVIFreqRange();
 599   2                      }
 600   1              if(SyncMode == 3)       //DVI
 601   1                      {
 602   2                      #if DVImode == DEmode
 603   2                              //FuncBuf[pVPOSITION] = 0x1e0;  // for DE mode scaler shut down Jacky20040629
 604   2                              FuncBuf[pVPOSITION] = 0;        // for DE mode scaler shut down Jacky20040629
 605   2                              FuncBuf[pHPOSITION] = 0;
 606   2                      //      SetDVI_Sharpness();
 607   2                              WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
 608   2                              WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
 609   2                              WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
 610   2                              WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
 611   2                      #else
C51 COMPILER V7.06   MODEHANDLE                                                            12/11/2007 11:28:43 PAGE 11  

                                      AutoPosition();
                              #endif
 614   2                      }       
 615   1              
 616   1      //      SetVP();
 617   1      //      SetHP();
 618   1              WriteIIC563(0x66,0x07);
 619   1      //      SetSharpness();
 620   1      }
 621          /*
 622          void SetUserMode(void)
 623          {
 624          #ifdef Wide19
 625          code unsigned short Vt_Tab[]={
 626                      490,590,610,730,778,800,874,910,970,1050,1080
 627          };
 628          
 629          code unsigned char UserTimeTab[]={
 630                  T_Timing_Parameters(0x10,0x60,0x384,Re_0720x0400),
 631                  T_Timing_Parameters(0x10,0x50,0x342,Re_0640x0480),
 632                  T_Timing_Parameters(0x10,0x17,0x3b0,Re_0720x0576),
 633                  T_Timing_Parameters(0x10,0x98,0x418,Re_0800x0600),
 634                  T_Timing_Parameters(0x10,0xe0,0x6c0,Re_1280x0720),
 635                  T_Timing_Parameters(0x12,0xc8,0x680,Re_1280x0768),
 636                  T_Timing_Parameters(0x10,0xd0,0x540,Re_1024x0768),
 637                  T_Timing_Parameters(0x10,0xd0,0x5c8,Re_1152x0864),
 638                  T_Timing_Parameters(0x19,0xe8,0x778,Re_1440x0900),
 639                  T_Timing_Parameters(0x10,0xe0,0x6c0,Re_1280x0960),
 640                  T_Timing_Parameters(0x10,0xf8,0x698,Re_1280x1024),
 641                  T_Timing_Parameters(0x2e,0x130,0x870,Re_1600x1200),
 642          };
 643          unsigned char i,j;
 644                for(i=0; i<11; i++){
 645                      if(VTotal < Vt_Tab[i]){
 646                            break;
 647                      }
 648                }
 649          #else
 650          code unsigned short Vt_Tab[]={
 651                      490,590,610,730,778,874,970,1050,1080
 652          };
 653          
 654          code unsigned char UserTimeTab[]={
 655                  T_Timing_Parameters(0x10,0x60,0x3a8,Re_0720x0400),
 656                  T_Timing_Parameters(0x10,0x50,0x342,Re_0640x0480),
 657                  T_Timing_Parameters(0x10,0x17,0x3b0,Re_0720x0576),
 658                  T_Timing_Parameters(0x10,0x98,0x418,Re_0800x0600),
 659                  T_Timing_Parameters(0x10,0xe0,0x6c0,Re_1280x0720),
 660                  T_Timing_Parameters(0x10,0xd0,0x540,Re_1024x0768),
 661                  T_Timing_Parameters(0x10,0xd0,0x5c8,Re_1152x0864),
 662                  T_Timing_Parameters(0x10,0xe0,0x6c0,Re_1280x0960),
 663                  T_Timing_Parameters(0x10,0xf8,0x698,Re_1280x1024),
 664                  T_Timing_Parameters(0x2e,0x130,0x870,Re_1600x1200),
 665          };
 666          unsigned char i,j;
 667                for(i=0; i<9; i++){
 668                      if(VTotal < Vt_Tab[i]){
 669                            break;
 670                      }
 671                }
 672          #endif    
 673                j = i * T_Timing_Data_No;
C51 COMPILER V7.06   MODEHANDLE                                                            12/11/2007 11:28:43 PAGE 12  

 674                ModePoint = Read24C16(T_EEaddr_User_Start);
 675                if((ModePoint <T_Preset_Timing_No)||(ModePoint >=T_Total_Mode_No)){
 676                      ModePoint = T_Preset_Timing_No;
 677                }
 678                Write24C16(T_EEaddr_User_Start,ModePoint+1);          //index to nextuser mode
 679                for(i=0; i<T_Timing_Data_No; i++){
 680                      Write24C16(T_EEaddr_Mode_data+i,UserTimeTab[j+i]);
 681                }
 682                Write24C16(T_EEaddr_H_Freq_Hi_Byte,H_SYNC >> 8);
 683                Write24C16(T_EEaddr_H_Freq_Low_Byte,(Byte)H_SYNC);
 684                Write24C16(T_EEaddr_V_Freq_Hi_Byte,(V_SYNC >> 8)|HV_Pol);
 685                Write24C16(T_EEaddr_V_Freq_Low_Byte,V_SYNC);
 686                ResolutionPtr = Read24C16(T_EEaddr_Resol)&0x7f;
 687          }
 688          */
 689          /*==========================================
 690          ==========================================*/
 691          
 692          
 693          void CheckModeChange(void)
 694          {
 695   1      
 696   1              unsigned char temp;
 697   1              if(DetectIRQ() || ChangeMode>0){
 698   2                              temp = ReadIIC563(0x1ab);
 699   2                              if((temp & 0x3c) != 0){
 700   3                                      BackLightOff();
 701   3                                      Abort = 1;
 702   3                                      H_SYNC_Temp = 0xffff;
 703   3                                      V_SYNC_Temp = 0xffff;
 704   3                              }
 705   2                              
 706   2                              temp = ReadIIC563(0x19a);
 707   2                              if(((SyncMode > 0)&&(SyncMode < 3))||((SyncMode > 4)&&(SyncMode < 7))){         //compostive
 708   3                                      if((temp & BIT_5) == 0){
 709   4                                              BackLightOff();
 710   4                                              Abort = 1;
 711   4                                              H_SYNC_Temp = 0xffff;
 712   4                                              V_SYNC_Temp = 0xffff;
 713   4                                              return;
 714   4                                      }
 715   3                              }else{
 716   3                                      if((temp & 0x18) != 0x18){
 717   4                                              BackLightOff();
 718   4                                              Abort = 1;
 719   4                                              H_SYNC_Temp = 0xffff;
 720   4                                              V_SYNC_Temp = 0xffff;
 721   4                                              return;
 722   4                                      }
 723   3                              }
 724   2              }
 725   1      }
 726          
 727          bit VsyncValide()
 728          {
 729   1      /*
 730   1              Word VsyncWidth;
 731   1              LocalTimer = 2; //20ms
 732   1              while(!V_SyncPresent)   //Vsync Lo
 733   1                      {
 734   1                      if(LocalTimer == 0)
 735   1                              return 0;
C51 COMPILER V7.06   MODEHANDLE                                                            12/11/2007 11:28:43 PAGE 13  

 736   1                      }
 737   1              LocalTimer = 10;        //100ms
 738   1              while(V_SyncPresent)    //Vsync Hi
 739   1                      {
 740   1                      if(LocalTimer == 0)
 741   1                              return 0;
 742   1                      }
 743   1              VsyncWidth = 0;
 744   1              while(!V_SyncPresent)   //Vsync Hi 1:7us
 745   1                      {
 746   1                      VsyncWidth ++;
 747   1                      if(VsyncWidth > 50)             //over 350us
 748   1                              return 0;
 749   1                      }
 750   1              VsyncWidth = 0;
 751   1              while(V_SyncPresent)            //Vsync Hi 1:7us
 752   1                      {
 753   1                      VsyncWidth ++;
 754   1                      if(VsyncWidth > 714)    //over 5ms
 755   1                              return 1;
 756   1                      }
 757   1      */      return 0;
 758   1      }
 759          
 760          void LoadModeDependentSettings(void)
 761          {
 762   1      //      Sharp,V_BP,H_BP,H_Tatol,Phase
 763   1      //unsigned short addr;
 764   1      //      addr = T_EEaddr_Mode_data;
 765   1              FuncBuf[pSHARPNESS] = EEP_ModeMap[T_EEaddr_Sharp];//(addr++);
 766   1              FuncBuf[pVPOSITION] = EEP_ModeMap[T_EEaddr_VBP];//(addr++);
 767   1              FuncBuf[pHPOSITION] = EEP_ModeMap[T_EEaddr_HBP];//(addr++);
 768   1              FuncBuf[pHPOSITION] <<= 8;
 769   1              FuncBuf[pHPOSITION] |= EEP_ModeMap[T_EEaddr_HBP+1];//(addr++);
 770   1              FuncBuf[pCLOCK] = EEP_ModeMap[T_EEaddr_HTotal];//(addr++);
 771   1              FuncBuf[pCLOCK] <<= 8;
 772   1              FuncBuf[pCLOCK] |= EEP_ModeMap[T_EEaddr_HTotal+1];//(addr++);
 773   1      //      addr++;
 774   1              FuncBuf[pPHASE] = EEP_ModeMap[T_EEaddr_Phase];//(addr); 
 775   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2583    ----
   CONSTANT SIZE    =     63    ----
   XDATA SIZE       =   ----      17
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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