亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? detect.c

?? LCD OSD 程序用於8051 開發lcd
?? C
?? 第 1 頁 / 共 2 頁
字號:
      		else
      			i=i*4;
    	}
  	return i;
}

BYTE mStar_FineTuneDVIPhase(BYTE channelReg,BYTE channel)
{ BYTE phX, phY, phZ;
  BYTE errX, errY, errZ;

  mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  mStar_WriteByte(TESTEN, channel); // set test channed
  Delay1ms(1);
  mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  errX=mStar_ReadByte(DVI_ERST); // read error status X
  if (errX==0)
    return 0xFF;
  phX=mStar_ReadByte(channelReg);  // read phase X
  phX=GetLinearPhaseValue(phX); // convert to linear Phase;

  mStar_WriteByte(channelReg, DVIPhaseTbl[(phX+8)%0x20]); // write linear phase
  mStar_WriteByte(TESTEN, channel); // set test channed
  Delay1ms(1);
  mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  errY=mStar_ReadByte(DVI_ERST);  // read error status X
  if (errY==0)
    return 0xFF;
  phY=mStar_ReadByte(channelReg);  // read phase X
  phY=GetLinearPhaseValue(phY); // convert to linear Phase;

  mStar_WriteByte(channelReg, DVIPhaseTbl[(phY+8)%0x20]); // write linear phase
  mStar_WriteByte(TESTEN, channel); // set test channed
  Delay1ms(1);
  mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  errZ=mStar_ReadByte(DVI_ERST);  // read error status X
  phZ=mStar_ReadByte(channelReg);  // read phase X
  phZ=GetLinearPhaseValue(phZ); // convert to linear Phase;
  mStar_WriteByte(TESTEN, channel); // set test channed

  if (errX>errY)
    { if (errY>errZ)
        return phZ;
      else
      	return phY;
    }
  else // X<Y
    { if (errX>errZ)
        return phZ;
      else
      	return phX;
    }
}

void mStar_AutoDVI(void)
{ BYTE checkTimes=16;
  BYTE rtValue=0x10;
  BYTE regValue;


  mStar_WriteByte(REGBK, REGBANKADC);
  // auto-setting resistor impendence
  mStar_WriteByte(RT_CTL, rtValue);
  mStar_WriteByte(TESTEN, 0x00); // normal status
  mStar_WriteByte(TESTEN, RDST_B); // freeze/read status
  while (checkTimes--)
    { mStar_WriteByte(TESTEN, 0x00);
      Delay1ms(1);
      mStar_WriteByte(TESTEN, RDST_B); // freeze/read status
      regValue=mStar_ReadByte(RT_STATUS2);
      if (regValue&BIT7)
      	rtValue++;
      else
      	rtValue--;
      rtValue&=0x1F;
      mStar_WriteByte(RT_CTL, rtValue);
    }
  mStar_WriteByte(TESTEN, 0x00); // normal status
  // set best bandwidth
  regValue=mStar_FineTuneBandwidth();
  mStar_WriteByte(TESTEN, TSTEN_B);
  mStar_WriteByte(TESTA0, regValue);
  mStar_WriteByte(TESTEN, 0);
  mStar_WriteByte(REGBK, REGBANKSCALER);

}

Bool mStar_SyncLossStateDetect(void)
{ BYTE fStatus;
  Bool result=FALSE;

  fStatus=mStar_GetInputStatus();
//  Out_i("status %xH", fStatus);//mStar_ReadByte(INSTA));
//  Out_i("stable counter %d", InputTimingStableCounter);
  if (fStatus&SyncLoss)
    {
      if (SrcInputType<Input_Digital)
  	{ mStar_SetAnalogInputPort(); // switch to SOG
          fStatus=mStar_GetInputStatus();
          if (fStatus&SyncLoss)
      	    { mStar_SetAnalogInputPort(); // switch to Separate
              fStatus=mStar_GetInputStatus();
              if (!(fStatus&SyncLoss))
                goto SyncActive;
            }
          else // input timing is coming
            {
            #if 0//ChipID>=ChipAD
              mStar_SetAnalogInputPort(); // switch to Separate
              fStatus=mStar_GetInputStatus(); // check separate sync again
	      if (fStatus&SyncLoss)
	      	{ mStar_SetAnalogInputPort(); // switch to SOG again
                  if (!(fStatus&SyncLoss))
		    goto SyncActive;
	      	}
	      else
	    #endif
                goto SyncActive;
            }
  	}
      if (CableNotConnectedFlag)  // no Cable
        { if (!IsCableNotConnected())
            { Clr_CableNotConnectedFlag();
              result=TRUE;
            }
        }
      else if (IsCableNotConnected()) // no Sync
        { Set_CableNotConnectedFlag();
          result=TRUE;
      	}
      if (PowerSavingFlag)
        { if (SrcInputType==Input_Digital)
            { if (!(mStar_ReadByte(INTCTRL)&0x40) && !(mStar_ReadByte(STATUS2)&0xF0))
                { mStar_PowerUp();
                  Delay1ms(50);
                  fStatus=mStar_GetInputStatus();
                  if (fStatus&SyncLoss)
                    mStar_PowerDown();
                  else
                    result=TRUE;
                }
      	    }
          else if (SrcInputType==Input_YPbPr && mStar_ReadByte(STATUS2)&0x50)
            { if (abs(HFreq(mStar_ReadWord(HSPRD_H))-156)<20)
                { fStatus&=~SyncLoss;
                  result=TRUE;
                }
            }
        }
    }
  else
SyncActive:
    result=TRUE;

  if (result)
    SrcFlags=(SrcFlags&0xF0)|fStatus; // clear others flags, except sync informat (polarity & w/o)

  return result;
}

Bool mStar_ValidTimingDetect(void)
{ BYTE fStatus;

  fStatus=mStar_GetInputStatus();

  if (fStatus&SyncLoss) // no sync
    { SrcFlags=(SrcFlags&0xF0)|fStatus; // clear others flags, except sync informat (polarity & w/o)
      return TRUE;
    }
  else
    { if (SyncPolarity(SrcFlags)!=SyncPolarity(fStatus)) // Sync polarity changed
        { SrcFlags=(SrcFlags&0xF0)|fStatus; // clear others flags, except sync informat (polarity & w/o)
          return TRUE;
  	}
      else
      	{ WORD tempPeriod;

          SrcFlags=(SrcFlags&0xF0)|fStatus; // clear others flags, except sync informat (polarity & w/o)
          tempPeriod=mStar_ReadWord(HSPRD_H)&0x1FFF;
          //Out_i("HPeriod %d", tempPeriod);
          if (InputTimingStableCounter==0)
            SrcHPeriod=tempPeriod;
          if (abs(tempPeriod-SrcHPeriod)>HPeriod_Torlance) // HPeriod changed
            { Out_i("HPeriod %d", tempPeriod);
              return TRUE;
            }

          tempPeriod=mStar_ReadWord(VTOTAL_H)&0x7FF;
          //Out_i("VTotal %d", tempPeriod);
          if (InputTimingStableCounter==0)
            SrcVTotal=tempPeriod;
          if (abs(tempPeriod-SrcVTotal)>VTotal_Torlance) // vtotal changed
            { Out_i("VTotal %d", tempPeriod);
              return TRUE;
            }
      	}
    }
  return FALSE;
}

Bool mStar_FindMode(void)
{ WORD hFreq, vFreq;

#define fStatus	 hFreq
  fStatus=mStar_GetInputStatus();
  if (SyncPolarity(SrcFlags)!=SyncPolarity(fStatus)) // Sync polarity changed
    return FALSE;
  SrcFlags&=0x0F;
#undef fStaus

  hFreq=mStar_ReadWord(HSPRD_H)&0x1FFF;
  Out_i("f HPeriod %d", hFreq);
  if (abs(hFreq-SrcHPeriod)>HPeriod_Torlance) // HPeriod changed
    return FALSE;

  vFreq=mStar_ReadWord(VTOTAL_H)&0x7FF;
  Out_i("f VTotal %d", vFreq);
  if (abs(vFreq-SrcVTotal)>VTotal_Torlance) // vtotal changed
    return FALSE;

  /////////////////////////////////////////////////////////
  SrcHPeriod=hFreq;
  SrcVTotal=vFreq;
  hFreq=HFreq(SrcHPeriod);//((DWORD)MST_CLOCK_MHZ*10+SrcHPeriod/2)/SrcHPeriod; // round 5
  vFreq=VFreq(hFreq, SrcVTotal);//((DWORD)hFreq*1000+(SrcVTotal/2))/SrcVTotal;
//======== for interlace mode
  if (SrcInputType!=Input_Digital && mStar_ReadByte(STATUS2)&INTM_B)
    { SrcFlags|=bInterlaceMode;
      vFreq*=2;
    }
//====================================

  Out_i("HFreq = %d", hFreq);
  Out_i("VFreq = %d", vFreq);
  // check if input timing is out of range
  if (hFreq>MaxInputHFreq || hFreq<MinInputHFreq || vFreq>MaxInputVFreq || vFreq<MinInputVFreq)
    { SrcFlags|=bUnsupportMode;
      return TRUE;
    }

  // search input mode index
  { BYTE modeIndex=0;
    InputModeType *modePtr=StandardMode;
    Bool found=FALSE;

    while (modePtr->HFreq)
      { if (abs(hFreq-modePtr->HFreq)<HFreq_Torlance && abs(vFreq-modePtr->VFreq)<VFreq_Torlance &&
            GetSyncPolarity(SrcFlags)&modePtr->Flags &&
            (SrcFlags&bInterlaceMode)==(modePtr->Flags&bInterlaceMode))
          { found=TRUE;
            SrcModeIndex=modeIndex;
            break;
    	  }
        modePtr++;
        modeIndex++;
      }
    if (!found) // out of standard input range
      { printMsg("cannot find mode in standard mode");
      #define delta	hFreq
      #define minDelta	vFreq
        modeIndex=0;
        modePtr=StandardMode;
        minDelta=VTotal_Delta;
        while (modePtr->HFreq)
          { delta=abs(SrcVTotal-(modePtr->VTotal));
            if (delta<VTotal_Delta && (SrcFlags&bInterlaceMode)==(modePtr->Flags&bInterlaceMode))
              { if (delta<minDelta)
                  { minDelta=delta;
                    SrcModeIndex=modeIndex;
            	  }
                SrcFlags|=bUserMode;
                found=TRUE;
    	      }
            modePtr++;
            modeIndex++;
          }
      #undef delta
      #undef minDelta
      } // out of standard input range
    if (!found)
      SrcFlags|=bUnsupportMode;

   if(   StandardModeGroup==Res_1600x1200
      
      )
          SrcFlags|=bUnsupportMode;


  } // search mode index
  return TRUE;
}

//
BYTE mStar_GetInputStatus(void)
{ BYTE fStatus=0;
  WORD inputValue;
  BYTE status;

  inputValue=mStar_ReadWord(HSPRD_H)&0x1FFF;
  if (inputValue==0x1FFF || inputValue<10)
    fStatus|=bHSyncLoss;

  inputValue=mStar_ReadWord(VTOTAL_H)&0x7FF;
  if (inputValue==0x7FF || inputValue<200)
    fStatus|=bVSyncLoss;

  status=mStar_ReadByte(STATUS2);
  fStatus|=(status&0x03); // Get input timing polarity

  if (SrcInputType==Input_Digital) // input timing is valid while current state is no sync
    { if (mStar_ReadByte(INTCTRL)&0x40)
        { fStatus|=SyncLoss;
        //  printMsg("no digital");
  	}
    }
  else if (!(fStatus&SyncLoss) && SyncLossState()) // input timing is valid while current state is no sync
    { if (SrcInputType<Input_Digital && status&INTM_B)
  	{ mStar_WriteByte(SWRST, GPR_B);
          Delay1ms(1);
          mStar_WriteByte(SWRST, 0);
  	}
      Delay1ms(20);
      if (InputTimingChangeFlag)
        return fStatus;

      status=status&mStar_ReadByte(STATUS2);
      if ((status&3)!=(fStatus&3)) // polarity is stable
      	fStatus|=SyncLoss;
      else if (status&0x30) // SOG or CSync input
        { Delay1ms(20);
          if (InputTimingChangeFlag)
            return fStatus;

          status=mStar_ReadByte(STATUS2);
          // Check if SOG/CSYNC is valid
          if (abs(mStar_ReadWord(VTOTAL_H)-inputValue)>5)
            fStatus|=SyncLoss;
          else if (SrcInputType==Input_YPbPr)
            { if ((status&0x18)!=0x18)
                fStatus|=SyncLoss;
            }
        #if ChipID>=ChipAD
	  else if (status&SOGD_B && mStar_ReadByte(SOGHSPW)>mStar_ReadWord(HSPRD_H)/5)
            fStatus|=SyncLoss;
        #else
          else  if ((status&0x50)==0x50 || (status&0xA0)==0xA0)
      	    fStatus|=SyncLoss;
        #endif
          else if ((status&0x18)==0x18)
            fStatus|=SyncLoss;   // Check if SOG/CSYNC is valid
        }
    }
  return fStatus;
}

Bool IsCableNotConnected(void)
{

#if Quanta || QuantaGateway				// Jason
  return (hwDSUBCable_Pin);// && hwDVICable_Pin);
#else
  return TRUE;
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美自拍偷拍一区| 国内成+人亚洲+欧美+综合在线 | 91蜜桃免费观看视频| 中文成人av在线| 91蜜桃免费观看视频| 亚洲一二三区视频在线观看| 91精品婷婷国产综合久久| 蜜臀av性久久久久av蜜臀妖精| 精品国产99国产精品| 成人妖精视频yjsp地址| 综合精品久久久| 欧美日韩一区二区三区视频| 麻豆免费看一区二区三区| 国产午夜精品久久久久久免费视 | 国产91在线观看| 日韩一区中文字幕| 欧美性色欧美a在线播放| 日韩高清在线一区| 国产日韩视频一区二区三区| 91麻豆.com| 奇米色777欧美一区二区| 国产亚洲欧美日韩日本| 欧美影院一区二区| 韩国三级中文字幕hd久久精品| 中文字幕电影一区| 在线播放亚洲一区| 高清不卡一区二区在线| 亚洲成人免费影院| 久久久精品中文字幕麻豆发布| 在线视频观看一区| 国产一区二区久久| 亚洲午夜一区二区三区| 久久久久一区二区三区四区| 色88888久久久久久影院野外| 伦理电影国产精品| 亚洲美女视频一区| 久久久久成人黄色影片| 欧美日韩小视频| 成年人国产精品| 另类小说色综合网站| 一区二区三区影院| 国产日产欧美一区二区三区| 欧美一区二区三区色| 9色porny自拍视频一区二区| 麻豆精品在线观看| 亚洲一区二区三区影院| 一区二区三区小说| 国产亚洲欧美色| 日韩视频123| 欧美色涩在线第一页| 丁香一区二区三区| 麻豆精品视频在线观看视频| 亚洲一区二区不卡免费| 亚洲欧洲三级电影| 国产欧美一区二区三区在线老狼| 日韩一级免费一区| 欧美日韩综合色| 日本精品一区二区三区高清 | 中文字幕不卡一区| 日韩三级av在线播放| 欧美日韩卡一卡二| 91国产免费看| 色综合久久久久久久久久久| 国v精品久久久网| 国产一区福利在线| 韩国毛片一区二区三区| 精品一区二区三区的国产在线播放 | 久久久久久久久岛国免费| 91麻豆精品国产| 欧美人妖巨大在线| 在线不卡中文字幕| 日韩一区二区在线观看视频| 884aa四虎影成人精品一区| 欧美三级韩国三级日本一级| 欧美视频三区在线播放| 欧美在线免费播放| 欧美日韩卡一卡二| 91精品国产色综合久久不卡蜜臀 | 亚洲色图制服诱惑| 国产精品久久三| 国产精品成人免费| 亚洲男女一区二区三区| 亚洲激情中文1区| 亚洲va欧美va国产va天堂影院| 亚洲国产成人精品视频| 五月激情综合婷婷| 老司机精品视频线观看86| 久久99久久99小草精品免视看| 精品在线一区二区三区| 国产风韵犹存在线视精品| 国产成人综合视频| 94-欧美-setu| 日韩女优电影在线观看| 久久综合色播五月| 国产精品天天摸av网| 亚洲女子a中天字幕| 亚洲国产另类av| 美国三级日本三级久久99| 国产乱码精品一品二品| 99国产精品久久久久久久久久| 在线视频欧美精品| 欧美成人精品1314www| 国产欧美一区二区精品性色| 亚洲美女精品一区| 日本不卡123| 福利电影一区二区| 欧美日韩亚洲综合| 久久伊99综合婷婷久久伊| 亚洲天堂精品在线观看| 午夜精品福利一区二区三区av| 久久av中文字幕片| 99精品桃花视频在线观看| 欧美挠脚心视频网站| 久久久久久久久久久久久久久99| 亚洲免费在线观看| 激情丁香综合五月| 在线精品视频一区二区三四| 欧美一级二级在线观看| 亚洲欧洲无码一区二区三区| 日韩福利视频网| 99精品视频在线观看| 91精品国产综合久久福利| 国产精品久久久久久一区二区三区| 亚洲亚洲人成综合网络| 风间由美中文字幕在线看视频国产欧美 | 99久久777色| 日韩视频免费直播| 亚洲欧美一区二区三区国产精品| 奇米777欧美一区二区| aaa国产一区| 久久久久久**毛片大全| 亚洲成人资源网| 波多野结衣视频一区| 精品久久人人做人人爰| 老汉av免费一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 欧美va在线播放| 午夜视频在线观看一区二区| 成人动漫精品一区二区| 欧美xxxxx牲另类人与| 午夜影院久久久| 一本一道综合狠狠老| 国产偷国产偷亚洲高清人白洁| 日韩av一区二区在线影视| 日本高清视频一区二区| 国产精品久线观看视频| 国产精品综合二区| 日韩视频一区二区三区| 日本怡春院一区二区| 欧美婷婷六月丁香综合色| **性色生活片久久毛片| 国产suv精品一区二区6| 久久久久综合网| 久久精品国产99| 欧美一区二区三区在线观看| 亚洲一区二区精品久久av| 在线精品视频一区二区三四| 亚洲欧美一区二区三区国产精品| 成人av综合一区| 欧美国产日韩亚洲一区| 国产成人精品一区二区三区网站观看| 日韩一卡二卡三卡国产欧美| 日韩精品国产精品| 欧美一区午夜视频在线观看| 午夜免费久久看| 91精品国产色综合久久ai换脸 | 视频精品一区二区| 欧美探花视频资源| 亚洲国产精品影院| 欧美亚洲尤物久久| 亚洲1区2区3区4区| 宅男噜噜噜66一区二区66| 日韩国产欧美在线播放| 日本一区二区三区高清不卡| 丁香婷婷综合激情五月色| 国产精品视频看| 一本大道久久a久久综合| 亚洲精品老司机| 欧美女孩性生活视频| 麻豆精品精品国产自在97香蕉| 精品久久久久久久久久久久久久久| 久久99热国产| 国产精品青草综合久久久久99| 成人黄色免费短视频| 亚洲丝袜美腿综合| 在线精品亚洲一区二区不卡| 视频一区视频二区中文字幕| 日韩精品一区二区三区在线播放 | 欧美日韩国产大片| 日韩精品每日更新| 国产色爱av资源综合区| 97成人超碰视| 奇米影视一区二区三区小说| 国产亚洲综合性久久久影院| av电影在线观看完整版一区二区| 夜夜精品浪潮av一区二区三区| 欧美高清精品3d| 国产九色sp调教91| 亚洲影视在线播放| 欧美v日韩v国产v|