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

📄 mode_detect.i

📁 液晶显示器程序代码
💻 I
📖 第 1 页 / 共 5 页
字号:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #line 5116 "Header\OSD.h" /0   extern unsigned char code Row_Info[][19]; extern unsigned char code FactRow_Info[][20];      extern unsigned char code OSD_Window_Setting[];  extern unsigned char code Page_All_Atb[]; extern unsigned char code Page_All_ENG[]; extern unsigned char code Page_All_GER[]; extern unsigned char code Page_All_FRE[]; extern unsigned char code Page_All_ITA[]; extern unsigned char code Page_All_SPA[]; extern unsigned char code Page_All_CHI_T[]; extern unsigned char code Page_All_CHI_S[]; extern unsigned char code Page_All_JAP[];  extern unsigned char code Page1_Atb[]; extern unsigned char code Page1_ENG[]; extern unsigned char code Page1_GER[]; extern unsigned char code Page1_FRE[]; extern unsigned char code Page1_ITA[]; extern unsigned char code Page1_SPA[]; extern unsigned char code Page1_CHI_T[]; extern unsigned char code Page1_CHI_S[]; extern unsigned char code Page1_JAP[];  extern unsigned char code Page2_Atb[]; extern unsigned char code Page2_ENG[]; extern unsigned char code Page2_GER[]; extern unsigned char code Page2_FRE[]; extern unsigned char code Page2_ITA[]; extern unsigned char code Page2_SPA[]; extern unsigned char code Page2_CHI_T[]; extern unsigned char code Page2_CHI_S[]; extern unsigned char code Page2_JAP[];  extern unsigned char code Page3_Atb[]; extern unsigned char code Page3_ENG[]; extern unsigned char code Page3_GER[]; extern unsigned char code Page3_FRE[]; extern unsigned char code Page3_ITA[]; extern unsigned char code Page3_SPA[]; extern unsigned char code Page3_CHI_T[]; extern unsigned char code Page3_CHI_S[]; extern unsigned char code Page3_JAP[];  extern unsigned char code Page4_Atb[]; extern unsigned char code Page4_ENG[]; extern unsigned char code Page4_GER[]; extern unsigned char code Page4_FRE[]; extern unsigned char code Page4_ITA[]; extern unsigned char code Page4_SPA[]; extern unsigned char code Page4_CHI_T[]; extern unsigned char code Page4_CHI_S[]; extern unsigned char code Page4_JAP[];  extern unsigned char code Page5_Atb[]; extern unsigned char code Page5_ENG[]; extern unsigned char code Page5_GER[]; extern unsigned char code Page5_FRE[]; extern unsigned char code Page5_ITA[]; extern unsigned char code Page5_SPA[]; extern unsigned char code Page5_CHI_T[]; extern unsigned char code Page5_CHI_S[]; extern unsigned char code Page5_JAP[];  extern unsigned char code Page6_Atb[]; extern unsigned char code Page6_ENG[]; extern unsigned char code Page6_GER[]; extern unsigned char code Page6_FRE[]; extern unsigned char code Page6_ITA[]; extern unsigned char code Page6_SPA[]; extern unsigned char code Page6_CHI_T[]; extern unsigned char code Page6_CHI_S[]; extern unsigned char code Page6_JAP[];  extern unsigned char code Page7_Atb[]; extern unsigned char code Page7_ENG[]; extern unsigned char code Page7_GER[]; extern unsigned char code Page7_FRE[]; extern unsigned char code Page7_ITA[]; extern unsigned char code Page7_SPA[]; extern unsigned char code Page7_CHI_T[]; extern unsigned char code Page7_CHI_S[]; extern unsigned char code Page7_JAP[];  extern unsigned char code OSD_Version[];  extern unsigned char code NoCable_ENG[]; extern unsigned char code NoCable_GER[]; extern unsigned char code NoCable_FRE[]; extern unsigned char code NoCable_ITA[]; extern unsigned char code NoCable_SPA[]; extern unsigned char code NoCable_CHI_T[]; extern unsigned char code NoCable_CHI_S[]; extern unsigned char code NoCable_JAP[];  extern unsigned char code NoSignal_ENG[]; extern unsigned char code NoSignal_FRA[]; extern unsigned char code NoSignal_DEU[]; extern unsigned char code NoSignal_ESP[]; extern unsigned char code NoSignal_ITA[]; extern unsigned char code NoSignal_CHI_T[]; extern unsigned char code NoSignal_CHI_S[]; extern unsigned char code NoSignal_JAP[];  extern unsigned char code NoSupport_ENG[]; extern unsigned char code NoSupport_GER[]; extern unsigned char code NoSupport_FRE[]; extern unsigned char code NoSupport_ITA[]; extern unsigned char code NoSupport_SPA[]; extern unsigned char code NoSupport_CHI_T[]; extern unsigned char code NoSupport_CHI_S[]; extern unsigned char code NoSupport_JAP[];  extern unsigned char code rgb_OSD_VOLUME[]; extern unsigned char code OSD_VOLUME_ENG[];			  extern unsigned char code OSD_VOLUME_ESP[];			  extern unsigned char code OSD_VOLUME_JAP[];			  extern unsigned int code  strTabVOLUME_Atb[];			   extern unsigned char code OSD_AUTO[]; extern unsigned char code OSD_Auto_ENG[];			  extern unsigned char code OSD_Auto_DEU[];			  extern unsigned char code OSD_Auto_FRA[];			  extern unsigned char code OSD_Auto_ESP[];			  extern unsigned char code OSD_Auto_ITA[];			  extern unsigned char code OSD_Auto_CHI_T[];		  extern unsigned char code OSD_Auto_JAP[];			  extern unsigned int code  strTabAuto_Atb[];			   extern unsigned char code OSD_RGB[]; extern unsigned char code OSD_DVI[]; extern unsigned char code OSD_AV[]; extern unsigned char code OSD_SV[]; extern unsigned char code OSD_YUV[]; extern unsigned char code OSD_TV[];  extern unsigned char code FactoryPageAtbFont[];		  extern unsigned char code OSD_Clean_All[];			  extern unsigned char code Version_Panel[];			  extern unsigned char code RecallOK[];				  extern unsigned char code AutoOK[];				   extern unsigned char code OSD_Reset[];  extern unsigned char code OSD_Enable[];   extern unsigned char code Page8_Atb[]; extern unsigned char code Page8_Title_ENG[]; extern unsigned char code Page8_Title_GER[]; extern unsigned char code Page8_Title_FRE[]; extern unsigned char code Page8_Title_ITA[]; extern unsigned char code Page8_Title_SPA[]; extern unsigned char code Page8_Title_CHI_T[]; extern unsigned char code Page8_Title_CHI_S[]; extern unsigned char code Page8_Title_JAP[]; extern unsigned char code Page8_Content[];  extern unsigned char code Page9_Atb[]; extern unsigned char code Page9_Title_ENG[]; extern unsigned char code Page9_Title_GER[]; extern unsigned char code Page9_Title_FRE[]; extern unsigned char code Page9_Title_ITA[]; extern unsigned char code Page9_Title_SPA[]; extern unsigned char code Page9_Title_CHI_T[]; extern unsigned char code Page9_Title_CHI_S[]; extern unsigned char code Page9_Title_JAP[]; extern unsigned char code Page9_Content[];  extern unsigned char code PageADC_Atb[]; extern unsigned char code PageADC_ENG[]; extern unsigned char code PageVDC_Atb[]; extern unsigned char code PageVDC_ENG[];    #line 5305 "Header\OSD.h" /1       #line 5312 "Header\OSD.h" /0   extern unsigned int code OSD_HINT_TABLE[][8]; extern unsigned int code OSD_REMK_TABLE[][8]; extern unsigned int code OSD_PAGE_TABLE[][8]; extern unsigned int code OSD_PAGE_All_TABLE[][8];   #line 8 "Code\Mode_Detect.c" /0   #line 1 "Header\Lcd_Auto.h" /0                                                                      #line 71 "Header\Lcd_Auto.h" /1                                    #line 107 "Header\Lcd_Auto.h" /0  extern bit bAutoInProgress;  extern unsigned int idata   usVer_Start; extern unsigned int idata   usVer_End; extern unsigned int idata   usH_Start; extern unsigned int idata   usH_End;  extern unsigned char Auto_Phase(void);  extern unsigned char Auto_Position(void); extern unsigned char Auto_Config(void); extern unsigned char Auto_Balance(void);  extern unsigned char Measure_Color(unsigned char color, unsigned char margin);  #line 9 "Code\Mode_Detect.c" /0   #line 1 "Header\Frame_Sync.h" /0 #line 2 "Header\Frame_Sync.h" /1                   #line 21 "Header\Frame_Sync.h" /0  extern bit bFrameSync;      extern unsigned char   idata   ucSyncErrorCnt; extern unsigned char   idata   ucPE_Max; extern unsigned char   idata   ucStatus; extern unsigned char   idata   ucI_Code; extern unsigned char   idata   ucP_Corr;  extern unsigned char Frame_Sync(void); extern bit Frame_Sync_Detector(void); extern void Adjust_I_Code(void);  #line 10 "Code\Mode_Detect.c" /0   #line 1 "Header\Src_Ctrl.h" /0 #line 2 "Header\Src_Ctrl.h" /1           #line 13 "Header\Src_Ctrl.h" /0    extern bit bSourceScanEnable;          extern bit Source_Control(void); extern void Change_Source(unsigned char source);   extern void Source_Auto_Scan();   #line 11 "Code\Mode_Detect.c" /0   #line 1 "Header\LCD_OSD.h" /0                       #line 24 "Header\LCD_OSD.h" /1                                                                  #line 90 "Header\LCD_OSD.h" /0  extern unsigned char    idata   ucOSD_Page_Index; extern unsigned char    idata   ucOSD_Item_Index0; extern unsigned char    idata   ucOSD_Item_Index1; extern unsigned char    idata   ucOSD_Item_Index2;  extern unsigned char   idata   ucOSD_Pre_Page_Index; #line 98 "Header\LCD_OSD.h" /1    #line 102 "Header\LCD_OSD.h" /0   extern void OSD_Proc(unsigned char action);   extern void OSD_Window(unsigned char win_no, unsigned int row_start, unsigned int row_end, unsigned int col_start, unsigned int col_end, unsigned char width, unsigned char height, unsigned char color, unsigned char color_sb, unsigned char gradient, unsigned char gra_level,unsigned char attr);   extern void OSD_Line(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char indicate);  extern void Get_OSD_Margin(void);  extern void OSD_Opening(void); extern void OSD_Ending(void);  extern void Show_Note(void); extern void Show_Hint(void); extern void OSD_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width);  extern void OSD_Show_Check(void); extern void rgb_OSD_Slider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char range, unsigned char color, unsigned char color_slider);    extern void OSD_Fact_Line(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char indicate);  extern void OSD_Fact_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width);  extern void OSD_Position(unsigned char para);				  extern void Value_Adjust(unsigned char *Var, unsigned char Key, unsigned char VMax, unsigned char VMin);      #line 12 "Code\Mode_Detect.c" /0       void Mode_Detector(void) {  switch (stGUD1.INPUT_SOURCE & 0x07) { case 0 : case 1 :  bHpole_Prev = bHpole_Curr; bVpole_Prev = bVpole_Curr;  if ((0 == ucMode_Curr) || (255 == ucMode_Curr)) Detect_Input_Mode(); else Check_Input_Mode(); break;  default : if ((0 == ucMode_Curr) || (255 == ucMode_Curr)) Detect_Video_Mode();          else Check_Video_Mode();           break; }  Measure_Mode();       }  void Measure_Mode(void) {   switch (stGUD1.INPUT_SOURCE & 0x07) { RTDSetByte(0x4A,0x00); case 0 : RTDSetByte(0x4C, (0x00 == ucSync_Type) ? 0x02 : 0x32); break;  case 1 :  RTDSetByte(0x4C, 0x02); break;  default : RTDSetByte(0x4C, 0x02); break; }  }      void Measure_Source(unsigned char SOURCE) { switch(SOURCE) { case 0: RTDSetByte(0x4A,0x01); break; case 1: RTDSetByte(0x4A,0x03); break; case 2: I2CWrite(V_ENABLE); I2CWrite(AV_DETECT); break; case 3: I2CWrite(V_ENABLE); I2CWrite(SV_DETECT); break; }     if(((stGUD1.INPUT_SOURCE & 0x07) == 0) && (0x00 != ucSync_Type)) RTDSetByte(0x4C,0x32); else RTDSetByte(0x4C,0x02);  Delay_Xms(35);    }   unsigned char VGA_Mode_Search(unsigned int HS_Pulse) { unsigned char ucMode_Temp,m; Data[0] = HS_Pulse * 12 / usHsync;       ucMode_Temp = 255;   m   = 44;		   do { if ((usHsync > VGA_Mode[m][0]) && (usHsync < VGA_Mode[m][1])) {    if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3])) { if (44 == m) { if (0 == (bVpole_Curr | bHpole_Curr))   m   = 43;    }                             else if (32 == m) { if (0 == (bVpole_Curr | bHpole_Curr))   m   = 31;    }          else if (14 == m && bVpole_Curr != bHpole_Curr) {     if (bHpole_Curr) m   = Data[0] ? 3 : 3 | 0x40; else m   = (stGUD1.FUNCTION & 0x10) ? 4 : 4 | 0x40;  } else if (13 == m && bVpole_Curr != bHpole_Curr) {     if (bHpole_Curr) m   = Data[0] ? 1 : 1 | 0x40; else m   = (stGUD1.FUNCTION & 0x10) ? 2 : 2 | 0x40;  } else if (12 == m) { if (1 == bHpole_Curr && 0 == bVpole_Curr) m   = 10; else if (stGUD1.FUNCTION & 0x10)       m   = 11; } else if (9 == m) { if (1 == bHpole_Curr && 0 == bVpole_Curr) m   = Data[0] ? 6 : 7; else if ((stGUD1.FUNCTION & 0x10)==0)        m   = 8; } else if (27 == m) { if(HS_Pulse > 45) m = 26; } else if (26 == m) { if(HS_Pulse <= 45) m = 27;					    } else if(30 == m)			  { if(ucRefresh <= 71) m = 29; }  ucMode_Temp     = m; } } } while ((0 != --m) && (255 == ucMode_Temp));   if (255 == ucMode_Temp) { usIPV_ACT_LEN   = 0;  m   = 58;		   do { if ((usVsync >= VGA_Mode[m][2]) && (usVsync <= VGA_Mode[m][3])) { usIPV_ACT_LEN   = CAP_WIN[m][4];  if ((usHsync >= VGA_Mode[m][0]) && (usHsync <= VGA_Mode[m][1])) { ucMode_Temp     = m;      } } } while ((51 <= --m) && (255 == ucMode_Temp)); }  return ucMode_Temp;  }  unsigned char Partial_Display(void) { unsigned char ucMode_Temp;  if ((0x040c - 0x000c) < usIPV_ACT_LEN)     {   ((unsigned int *)Data)[0]   = (unsigned long)2458 * Mode_Preset[61][0] * (0x040c - 0x000c)  / ((unsigned long)100 * usIPV_ACT_LEN * usHsync);  if (138 < ((unsigned int *)Data)[0]) {    ((unsigned int *)Data)[1]   = (unsigned long)2458 * Mode_Preset[61][0] * 0x0410 / ((unsigned long)100 * (usVsync - 1) * usHsync);  if (138 < ((unsigned int *)Data)[1]) {  usIPV_ACT_LEN   = (0x040c - 0x000c); } else { ucMode_Temp     = 61 | 0x80;     } } else ucMode_Temp     = 61;                }  if ((0x040c - 0x000c) >= usIPV_ACT_LEN)    { ((unsigned int *)Data)[0]   = (unsigned long)2458 * Mode_Preset[60][0] * (0x040c - 0x000c)  / ((unsigned long)100 * usIPV_ACT_LEN * usHsync);  if (138 < ((unsigned int *)Data)[0]) { if (0x0410 >= (usVsync - 1)) { ((unsigned int *)Data)[1]   = (unsigned long)2458 * Mode_Preset[60][0] * 0x0410 / ((unsigned long)100 * (usVsync - 1) * usHsync); } else { ((unsigned int *)Data)[1]   = (unsigned long)2458 * Mode_Preset[60][0] / ((unsigned long)100 * usHsync); }  if (138 < ((unsigned int *)Data)[1])    ucMode_Temp = 255;             else ucMode_Temp = 60 | 0x80;     } else ucMode_Temp = 60;                }  return ucMode_Temp;  }  void Sync_Type_Switch(void) { if (0 == ucMode_Curr) { if (0x10 == ucSync_Type)           { RTDCodeW(VGA_SET_SS);  bVpole_Curr = 1; bHpole_Curr = 1; ucSync_Type = 0x00;  } else if (0x00 == ucSync_Type)      { RTDCodeW(VGA_SET_SOG);  bVpole_Curr = 1; bHpole_Curr = 1; ucSync_Type = 0x20;    } else                                  { RTDCodeW(VGA_SET_CS);  bVpole_Curr = 1; bHpole_Curr = 1; ucSync_Type = 0x10;    } } }  void Sync_Type_Confirm(void) {  #line 335 "Code\Mode_Detect.c" /1                                                                                          #line 425 "Code\Mode_Detect.c" /0  }    void Detect_Input_Mode(void) { unsigned char   ucMode_Temp; unsigned int    usHS_Pulse;  RTDRead(0x4C, 0x09, 0);  if (Data[0] & 0x02) {  RTDSetByte(0x4C, ((stGUD1.INPUT_SOURCE & 0x07) == 0) ? 0x20 : 0x00);   ucMode_Temp     = 0; } else			 {                usStdHS   = usHsync;    usStdVS   = usVsync;     bVpole_Curr = (bit)(Data[0] & 0x08);      bHpole_Curr = (bit)(Data[0] & 0x04);       Data[7] = Data[5]; Data[6] = Data[6] & 0x0f; Data[5] = Data[3]; Data[4] = Data[4] & 0x87; Data[3] = Data[1]; Data[2] = Data[2] & 0x8f;  usHsync     = ((unsigned int *)Data)[1];      usVsync     = ((unsigned int *)Data)[2];       if((stGUD1.INPUT_SOURCE & 0x07) == 0) usHS_Pulse  = ((unsigned int *)Data)[3];           ((unsigned long *)Data)[0]  = (unsigned long)usHsync * usVsync; ucRefresh   = (unsigned long)49152000 / ((unsigned long *)Data)[0]; ucRefresh   = (ucRefresh & 0x01) ? ((ucRefresh + 1) >> 1) : (ucRefresh >> 1);   if (usStdHS <= usHsync && (usStdHS + 2) >= usHsync)     usHsync = usStdHS; if (usStdVS <= usVsync && (usStdVS + 2) >= usVsync)     usVsync = usStdVS;   if ((bVpole_Curr != bVpole_Prev) || (bHpole_Curr != bHpole_Prev)) {   RTDRead(0x05, 0x01, 1);  if((stGUD1.INPUT_SOURCE & 0x07) == 0) { Data[0] &= 0xd7;     if (!bHpole_Curr)    Data[0] |= 0x20;  if (!bVpole_Curr && 0x00 == ucSync_Type)     Data[0] |= 0x08;       ucMode_Temp     = 255; } else if((stGUD1.INPUT_SOURCE & 0x07) == 1) { Data[0] &= 0xf3;     if (!bVpole_Curr)    Data[0] |= 0x08; if (!bHpole_Curr)    Data[0] |= 0x04; }             RTDSetByte(0x05, Data[0]);   } else { if (0x07ff <= usHsync || 0x07ff <= usVsync || 0 == usHsync || 0 == usVsync) { ucMode_Temp     = 0;          } else { ucMode_Temp = ((stGUD1.INPUT_SOURCE & 0x07) == 0) ? VGA_Mode_Search(usHS_Pulse) : 255;   if (48 > ucRefresh || 76 < ucRefresh) { ucMode_Temp = 255;     } else if (255 == ucMode_Temp && (0 != usIPV_ACT_LEN) && ((stGUD1.INPUT_SOURCE & 0x07) == 0)) {			     ucMode_Temp = Partial_Display(); } else if((stGUD1.INPUT_SOURCE & 0x07) == 1) ucMode_Temp = Seek_DVI_Mode(ucMode_Temp);   } } }  if((stGUD1.INPUT_SOURCE & 0x07) == 0) { if (0x20 == ucSync_Type && 0 != (usHS_Pulse * 7 / usHsync)) {   ucMode_Temp = 0; } }   if (255 == ucMode_Temp || 0 == ucMode_Temp) {  if((stGUD1.INPUT_SOURCE & 0x07) == 0) { if (0x20 == ucSync_Type)     ucMode_Temp = 0; }  if (255 != ucMode_Found && 0 != ucMode_Found)    ucMode_Times    = 0;  ucMode_Found    = ucMode_Temp;  if (5 > ucMode_Times) {  ucMode_Times ++;  if((stGUD1.INPUT_SOURCE & 0x07) == 1) {  RTDSetByte(0xFF,0x03); } } else { if((stGUD1.INPUT_SOURCE & 0x07) == 1) {  RTDSetByte(0xFF,0x00); }  bStable         = (ucMode_Curr == ucMode_Found) ? 1 : 0;      ucMode_Curr     = ucMode_Found; ucMode_Times    = 5 - 2;  if((stGUD1.INPUT_SOURCE & 0x07) == 0) Sync_Type_Switch();  } } else { if (ucMode_Found != ucMode_Temp) { ucMode_Times    = 1; ucMode_Found    = ucMode_Temp;  if((stGUD1.INPUT_SOURCE & 0x07) == 0) Sync_Type_Confirm(); } else {    Data[0] = ((stGUD1.INPUT_SOURCE & 0x07) == 0) ? 3 : 3;  if (Data[0] > ucMode_Times) { ucMode_Times ++; } else {   M512_Port51  = 1;           RTDSetByte(0x02, 0x40);    RTDOSDW(OSD_Reset);               ucMode_Curr     = ucMode_Found;   ucMode_Times    = 0;              bStable         = 0;               if((stGUD1.INPUT_SOURCE & 0x07)== 0) Display_VGA_Set();                else Display_DVI_Set();   #line 635 "Code\Mode_Detect.c" /1           #line 646 "Code\Mode_Detect.c" /0 } } } }   void Check_Input_Mode(void) {     RTDRead(0x4C, 0x05, 0);  if (Data[0] & 0x02) { RTDSetByte(0x4C, ((stGUD1.INPUT_SOURCE & 0x07) == 0) ? 0x20 : 0x00);             ucMode_Found    = 255; } else			 { bVpole_Curr = (bit)(Data[0] & 0x08);      bHpole_Curr = (bit)(Data[0] & 0x04);       Data[5] = Data[3]; Data[4] = Data[4] & 0x87; Data[3] = Data[1]; Data[2] = Data[2] & 0x8f; usHsync = ((unsigned int *)Data)[1];      usVsync = ((unsigned int *)Data)[2];        if ((bVpole_C

⌨️ 快捷键说明

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