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

📄 modedet.c

📁 keil C51 LCD 驱动源码,其中还有I2C驱动,ADC驱动,键盘操作等,是一个完整的keil源代码,供大家参考
💻 C
📖 第 1 页 / 共 3 页
字号:

//          if(FgOverRange)
//          {
             //algu 1120               ShowOverRange();
//             OsdShowMessage(OVER_RANGE_MESSAGE);
//             OSDNumber = L9_OVERRANGE;
//             if (FgBurnin)
//                              PromptTimer = TIME_3SEC;
//                     else 
//                              PromptTimer = TIME_25SEC;
//                      return; 
//        }     
          PromptTimer = 0;
//  algu 1130         if( RangeDetect()== Fail_Safe_Mode)               //algu 1123 temp 
//           {
//              OSDNumber=L9_FAILSAFE;
//              PromptTimer=TIME_1SEC;
//              OsdShowMessage(OVER_RANGE_MESSAGE);
//          }   
//        ES=1;

//        FgAutoOn=1;
//        FgChangeAuto=1;

// #if     ZURAC_HWMD
//           if( FgShowLogo )        /* Zurac Internal Osd demo */
//           {
//              if( FgOsdFontLoaded==0 )
//              {
//                 ZuracOsdLoadFont();
//                 FgOsdFontLoaded = 1;
//              }
//              ZuracOsdShowFont();
//           }
// #else
//           if( FgShowLogo )          /* Zurac Internal Osd demo */
//           {
//              ZuracOsdLoadFont();
//              ZuracOsdShowFont();
//           }
// #endif
//       }
    }
}

/************************************************************************/
/* Function    : ModeFindMode                                           */
/* Description : Find Mode                                              */
/*       Input : None                                                   */
/*      Output : none                                                   */
/************************************************************************/
void ModeFindMode( void )
{
    Word    IDATA   hfreq,vfreq;
    Word    IDATA   htole,vtole;
    Byte    IDATA   pol,inpol;
    Bool    fgFindMode,fgsmall8;

    inpol = ((Byte)CurrentHPol << 1) | CurrentVPol;
    ModeCounter = 0;
    do
    {
       fgFindMode = 0;
       fgsmall8=0;
       // Get Mode Timing
       DataPointer       = MODE_TIMING_TABLE + (7 * ModeCounter);
       pol               = *DataPointer;
       HIBYTE_REF(hfreq) = *(DataPointer+1);
       LOBYTE_REF(hfreq) = *(DataPointer+2);
       HIBYTE_REF(vfreq) = *(DataPointer+3);
       LOBYTE_REF(vfreq) = *(DataPointer+4);
       htole             = *(DataPointer+5);
       vtole             = *(DataPointer+6);

       if(CurHFreq >= hfreq)  hfreq = CurHFreq - hfreq;
       else                   hfreq = hfreq - CurHFreq;
       if(CurVFreq >= vfreq)  vfreq = CurVFreq - vfreq;
       else                   vfreq = vfreq - CurVFreq;

       if( (hfreq < htole) && (vfreq < vtole) )
       {
          fgFindMode = 1;
#if (DOUBLE_SAMPLING==1)                //algu 1112
          if( (InputSource==INPUT_ANALOG) && (ModeCounter<=8) )
          {
                ModeCounter += NORMAL_MODE_NUMBER;
                fgsmall8=1;
          }
#endif
#if (DOUBLE_SAMPLING==1)                //algu 1112
          if( (ModeCounter==NORMAL_MODE_NUMBER) || (ModeCounter==DosModeTable[0][1]) || (ModeCounter == DosModeTable[0][0]) )//alf 2) || (ModeCounter==9) )     //1107
#else
          if( (ModeCounter==0) || (ModeCounter==DosModeTable[0][1]) || (ModeCounter == DosModeTable[0][0]) )//alf 2) || (ModeCounter==9) )      //1107
#endif             
         
          {
             if( inpol != pol )  fgFindMode = 0;
             if( ModeCounter==DosModeTable[0][0])  //alf 9 )    //1107
             {
                if( FgDosMode==1 )  ModeCounter = DosModeTable[0][1];//alf 2; //1107 /* Graphic mode */
                fgFindMode = 1;
             }
             else if( ModeCounter==DosModeTable[0][1])//alf 2 ) //1107
             {
                if( FgDosMode==0 )  ModeCounter = DosModeTable[0][0]; //alf 9; //1107 /* Graphic mode */
                fgFindMode = 1;
             }
             else if( ModeCounter == 0 && ( FgCompSignal || FgSogSignal) && CurVFreq < 7200)
             {
                if(FgDosMode1 == 1)
                   fgFindMode = 1;
             }
          }
          if( (ModeCounter==DosModeTable[1][0]) ||(ModeCounter==DosModeTable[1][1]) )// alf  3) || (ModeCounter==10) ) //1107
          {
             if( FgDosMode==0 )  ModeCounter = DosModeTable[1][0];//alf 10;//1107  /* Text    mode */
             else                ModeCounter = DosModeTable[1][1];//alf  3; //1107  /* Graphic mode */
          }
          else if( (ModeCounter==22) || (ModeCounter==24) )
          {
             if( inpol!=pol )
             {
                if( ModeCounter==22 )  fgFindMode = 0;
                if( ModeCounter==24 )  ModeCounter = 22;
             }
          }
          else if( (ModeCounter==26) || (ModeCounter==28) )
          {  /* 1152x864 v.s. 1152x870 */
             if( inpol != pol )
             {
                if( ModeCounter==26 )  fgFindMode = 0;
                if( ModeCounter==28 )  ModeCounter = 26;
             }
          }
          else if( (ModeCounter==33) || (ModeCounter==40) )
          {  /* 1280x1024  VESA(75) v.s. SUN(76) */
             if( inpol != pol )
             {
                if( ModeCounter==33 )  fgFindMode = 0;
                if( ModeCounter==40 )  ModeCounter = 33;
             }
          }
       }
#if (DOUBLE_SAMPLING==1)                //Vincent 0108
//       if( (InputSource==INPUT_ANALOG) && (ModeCounter>=NORMAL_MODE_NUMBER) && fgFindMode == 0)
       if( fgsmall8==1 && fgFindMode == 0)
       {
             ModeCounter -= NORMAL_MODE_NUMBER;
       }
#endif
       if( fgFindMode == 0 )  ModeCounter++;
    } while ( (!fgFindMode) && (ModeCounter < TOTAL_MODE_NUMBER) );
    
    if( fgFindMode==0 )		// Search unknow mode
    {
    	for(pol=0;pol<TOTAL_UNKNOWMODE && !fgFindMode ; pol++)
    	{
            DataPointer       = UnknowMode + (6 * pol);
            HIBYTE_REF(hfreq) = *(DataPointer+0);
            LOBYTE_REF(hfreq) = *(DataPointer+1);
            HIBYTE_REF(vfreq) = *(DataPointer+2);
            LOBYTE_REF(vfreq) = *(DataPointer+3);
            htole             = *(DataPointer+4);
            vtole             = *(DataPointer+5);
       
            if(CurHFreq >= hfreq)  hfreq = CurHFreq - hfreq;
            else                   hfreq = hfreq - CurHFreq;
            if(CurVFreq >= vfreq)  vfreq = CurVFreq - vfreq;
            else                   vfreq = vfreq - CurVFreq;
            
            if( (hfreq < htole) && (vfreq < vtole) )
            	fgFindMode = 1;
    	}
    	if(fgFindMode)
    		ModeCounter = TOTAL_MODE_NUMBER;
    }
    
#if 1
    if( fgFindMode==0 )   // new mode handling
    {
       if( HS1frCount > 1100 )
       {
       }
       else if( HS1frCount > 1024 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7650 )   ModeCounter = 34;
          else if( CurVFreq > 7350 )   ModeCounter = 33;
          else if( CurVFreq > 7100 )   ModeCounter = 32;
          else if( CurVFreq > 6200 )   ModeCounter = 31;
          else if( CurVFreq > 5800 )   ModeCounter = 30;
          else /* below 58.00 Hz */    ModeCounter = 30;
       }
       else if( HS1frCount > 960 )
       {
          if( CurVFreq < 6200 && CurVFreq > 5800 )  ModeCounter = 29;
       }
       else if( HS1frCount > 864 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7650 )   ModeCounter = 27;
          else if( CurVFreq > 7200 )   ModeCounter = 26;
          else if( CurVFreq > 5900 )   ModeCounter = 25;
          else /* below 59.00 Hz */    ModeCounter = 25;
       }
       else if( HS1frCount > 768 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7650 )   ModeCounter = 23;
          else if( CurVFreq > 7350 )   ModeCounter = 22;
          else if( CurVFreq > 7100 )   ModeCounter = 21;
          else if( CurVFreq > 6200 )   ModeCounter = 20;
          else if( CurVFreq > 5800 )   ModeCounter = 19;
          else /* below 58.00 Hz */    ModeCounter = 19;
       }
       else if( HS1frCount > 600 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7650 )   ModeCounter = 16;
          else if( CurVFreq > 7350 )   ModeCounter = 15;
          else if( CurVFreq > 7100 )   ModeCounter = 14;
          else if( CurVFreq > 6200 )   ModeCounter = 13;
          else if( CurVFreq > 5800 )   ModeCounter = 12;
          else if( CurVFreq > 5400 )   ModeCounter = 11;
          else /* below 54.00 Hz */    ModeCounter = 11;
       }
       else if( HS1frCount > 480 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7650 )   ModeCounter = 8;
          else if( CurVFreq > 7350 )   ModeCounter = 7;
          else if( CurVFreq > 6750 )   ModeCounter = 6;
          else if( CurVFreq > 6200 )   ModeCounter = 5;
          else if( CurVFreq > 5800 )   ModeCounter = 4;
          else /* below 58.00 Hz */    ModeCounter = 4;
       }
       else if( HS1frCount > 400 )
       {
          if( CurVFreq > 8650 )        { }
          else if( CurVFreq > 7200 )   ModeCounter = 10;
          else if( CurVFreq > 5800 )   ModeCounter = 9;
          else if( CurVFreq > 5400 )   ModeCounter = 1;
          else /* below 54.00 Hz */    ModeCounter = 1;
       }
    }
#endif

#if (DOUBLE_SAMPLING==1)
    if( (InputSource==INPUT_ANALOG) && (ModeCounter<=8) )
    {
       ModeCounter += NORMAL_MODE_NUMBER;
       
    }
#endif

#if (DIGITAL_DOS_MODE==1)
    if( InputSource==INPUT_DIGITAL )
    {
        if( (ModeCounter==0) || 
            (ModeCounter==DosModeTable[0][0]) || (ModeCounter==DosModeTable[0][1]) )
        {
           pol = ModeGetDosMode();
           if( pol==2 )
               ModeCounter = DosModeTable[0][0];      /* 720x400/70 */
           else if( pol==1)
               ModeCounter = DosModeTable[0][1];      /* 640x400/70 */
           else
               ModeCounter = 0;                       /* 640x350/70 */
        }  
        else if( (ModeCounter==DosModeTable[1][0]) || (ModeCounter==DosModeTable[1][1]) )
        {
           pol = ModeGetDosMode();
           if( pol==2 )
              ModeCounter = DosModeTable[1][0];       /* 720x400/85 */
           else
              ModeCounter = DosModeTable[1][1];       /* 640x400/85 */
        }   
    }
#endif

   
// algu 1122   if( ModeCounter < TOTAL_MODE_NUMBER )          /* filter out non-supported mode */
//    {
//        if( ModeSupport[ModeCounter]==0 )
//        {
//           ModeCounter = TOTAL_MODE_NUMBER;        /* make this mode as unknown mode */
//           FgOverRange=1;             //algu 1107 show out of range message
//        }
//        else if( ModeSupport[ModeCounter]==2 )
//        {
//#if (ADC_IS_48_BIT==0)   /* filter out scaling down mode */   //mk0614
//           ModeCounter = TOTAL_MODE_NUMBER;
//#endif
//        }
//    }
    
    return;
}
/**************************************************************/
/* data definition for FreeRunInit()                          */
/**************************************************************/
#if    ( OUTPUT_MODE==OUTPUT_VGA )
Byte RDATA fri_12[] = { 0x80,0x02,0x20,0x03,0x23,0x00,0xe0,0x01,0x0d,0x02,0x20 };
Byte RDATA fri_30[] = { 0x94,0x00,0x80,0x02,0x12,0x00,0xe0,0x01,0x0b,0x02 };
Byte RDATA fri_40[] = { 0x94,0x00,0x14,0x03,0x12,0x00,0xf2,0x01 };
Byte RDATA fri_60[] = { 0x20,0x03,0x20,0x03 };
#elif    ( OUTPUT_MODE==OUTPUT_VGAW )
Byte RDATA fri_12[] = { 0x80,0x02,0x20,0x03,0x23,0x00,0xe0,0x01,0x0d,0x02,0x20 };
Byte RDATA fri_30[] = { 0x20,0x00,0x20,0x03,0x10,0x00,0xe0,0x01,0x0b,0x02 };
Byte RDATA fri_40[] = { 0x20,0x00,0x40,0x03,0x10,0x00,0xf0,0x01 };
Byte RDATA fri_60[] = { 0x20,0x04,0x20,0x04 };
#elif  ( OUTPUT_MODE==OUTPUT_SVGA )
Byte RDATA fri_12[] = { 0x20,0x03,0x20,0x04,0x1c,0x00,0x58,0x02,0x74,0x02,0x40 };
Byte RDATA fri_30[] = { 0x20,0x00,0x20,0x03,0x10,0x00,0x58,0x02,0x74,0x02 };
Byte RDATA fri_40[] = { 0x20,0x00,0x40,0x03,0x10,0x00,0x68,0x02 };
Byte RDATA fri_60[] = { 0x20,0x04,0x20,0x04 };
#elif  ( OUTPUT_MODE==OUTPUT_XGA )
Byte RDATA fri_12[] = { 0x00,0x04,0x38,0x05,0x23,0x00,0x20,0x03,0x20,0x03,0x68 };
Byte RDATA fri_30[] = { 0x20,0x00,0x00,0x04,0x23,0x00,0x00,0x03,0x26,0x03 };
Byte RDATA fri_40[] = { 0x20,0x00,0x20,0x04,0x23,0x00,0x23,0x03 };
Byte RDATA fri_60[] = { 0x40,0x05,0x40,0x05 };
#else /* OUTPUT_MODE==OUTPUT_SXGA */
Byte RDATA fri_12[] = { 0x00,0x05,0x98,0x06,0x23,0x00,0x00,0x04,0x2a,0x04,0x68 };
#if ( PANEL_DEFAULT == PANEL_ACER )
Byte RDATA fri_30[] = { 0xa0,0x00,0x00,0x05,0x20,0x00,0x00,0x04,0x29,0x04 };
Byte RDATA fri_40[] = { 0xa0,0x00,0xa0,0x05,0x20,0x00,0x20,0x04 };
#else
Byte RDATA fri_30[] = { 0x20,0x00,0x00,0x05,0x23,0x00,0x00,0x04,0x2a,0x04 };
Byte RDATA fri_40[] = { 0x20,0x00,0x20,0x05,0x23,0x00,0x23,0x04 };
#endif
Byte RDATA fri_60[] = { 0x98,0x06,0x98,0x06 };
#endif
/**************************************************************/
/**************************************************************/
void FreeRunInit(void)
{       
    if (FgFreeRun) return;      //algu 1122
    ResetScaler();
    EepromTimingDefault(FREERUN_MODE);  // preset default parameter to variables
    Ttfc( FREERUN_MODE,2 );             // This is a must. Do not remove it!

    ZuracWriteControl(0x12,fri_12,11);  // Modify Input window parameters
    ZuracWriteControl(0x30,fri_30,10);  // Modify Output window parameters
    ZuracWriteControl(0x40,fri_40,8);   // Modify background window parameters
    ZuracWriteControl(0x60,fri_60,4);   // Modify Scaling factor

    PowerPanel(1);      // Panel power-on
}
/************************************************************************/
/* Function    : ZuracFreeRun                                           */
/* Description : free running                                           */
/*       Input : OSDTitle                                               */
/*      Output : none                                                   */
/************************************************************************/
void ZuracFreeRun( Byte OSDTitle )
{
    if( FgPowerStby )
    {
       SystemPowerOn();
    }
    else
    {
       FreeRunInit(); 
       PowerLedPower(1);       // on  Power-LED
       PowerLedSleep(0);       // off Sleep-LED                
    }

⌨️ 快捷键说明

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