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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? detect.c

?? LCD OSD 程序用於8051 開發(fā)lcd
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <math.h>
#include "types.h"
#include "global.h"
#include "ms_reg.h"
#include "board.h"
#include "ms_rwreg.h"
#include "power.h"
#include "debug.h"
#include "misc.h"
#include "menu.h"
#include "UserPref.h"
#include "msOSD.h"
#include "mStar.h"
#include "Adjust.h"

#define DetectMsg	1

#if DetectMsg
 #define Out_i	printData
 #define Out_s	printMsg
#else
 #define Out_i
 #define Out_s
#endif

#define HPeriod_Torlance	10 // for mode change
#define VTotal_Torlance		10 // for mode change

// time of one loop is 34 when no input
#define ValidTimingStableCount		30//15
#define SyncLossStableCount		20//30
#define SwitchInputPortCount		10//15 // half or SyncLossStableCount to disable osd while switch input port
#define SwitchAnalogCount		10//15//7 // switch SOG/CSync-Separate by 4 times on switch input port

#define HFreq_Torlance		15 // 1.5 KHz
#define VFreq_Torlance		15 // 1.5 Hz
#define VTotal_Delta		50

#define MaxInputHFreq		855 // 80.0 KHz
#define MinInputHFreq		100//285 // 28.5 KHz
#define MaxInputVFreq		765//865 // 76.5 Hz
#define MinInputVFreq		400 // 50.0 Hz


extern InputModeType code StandardMode[];
extern BYTE InputTimingStableCounter;
extern BYTE TimingChangeDebunce;

BYTE code DVIPhaseTbl[];


BYTE mStar_FineTuneDVIPhase(BYTE channelReg,BYTE channel);
Bool mStar_FindMode(void);
BYTE mStar_GetInputStatus(void);
Bool IsCableNotConnected(void);
Bool mStar_SyncLossStateDetect(void);
Bool mStar_ValidTimingDetect(void);
void mStar_AutoDVI(void);

//*******************************************************************
// Function Name: mStar_MonitorInputTiming
//
// Decscription: Detect input timing
//
// callee: mStar_SyncLossStateDetect(), mStar_ValidTimingDetect(), mStar_AutoDVI() in detect.c
//         mStar_SetInputPort(), mStar_SetAnalogInputPort() in mstar.c
//
// caller: main() in main.c
//*******************************************************************
void mStar_MonitorInputTiming(void)
{ 
	if (!PowerOnFlag)
    		return;
  	// detect whether input signal is changing
  	if (!InputTimingChangeFlag)
    	{ 
    		if (SyncLossState())
        	{ 
        		if (!FreeRunModeFlag)
           			Set_InputTimingChangeFlag();
          		else if (mStar_SyncLossStateDetect()) // detect mode while no Sync/suspend/standby/disconnect
            		{ 
            			Set_InputTimingChangeFlag();
            		}
          		else if (InputTimingStableCounter)
            		{ 
            			// input timing is stable
              		if (InputTimingStableCounter%SwitchInputPortCount==0)
                		{ 
                			// switch input port while current port has no input.
                  			// detection time for each port is programmable according to requirement
                  			SrcInputType=(SrcInputType+1)%Input_Nums;
                  			mStar_SetupInputPort();
                 			if (SrcInputType==Input_Digital)
                   				mStar_AutoDVI(); //do auto tracking DVI
                		}
            		}
        	}
      		else // valid timing
        	{ 
        		// check if input timing is changing
          		if (mStar_ValidTimingDetect())
            		{ 
            			SrcFlags|=SyncLoss;
              		Set_InputTimingChangeFlag();
            		}
      		}
    	}
  //=============================================================================
  //=============================================================================
  	if (InputTimingChangeFlag) // input timing is unstable
    	{ 
    		Clr_InputTimingChangeFlag();
      		Clr_DoModeSettingFlag();

      		TimingChangeDebunce++;
      		if (!SyncLossState())// && !InputTimingStableFlag) // prevent from SOG
  		{ 
  			if (TimingChangeDebunce<=3)
  	    		{ 
  	    			SrcFlags|=SyncLoss;
  	      			return;
      	    		}
        	}
      		mStar_PrepareForTimingChange();
		//      Power_TurnOffGreenLed(); // turn off green led
		//      Power_TurnOnAmberLed(); // turn on amber led
    	}
  	else // input timing is stable
    	{ 
    		TimingChangeDebunce=0;
      		InputTimingStableCounter++; // counter timing stable times
      		if (InputTimingStableCounter==0)
      			InputTimingStableCounter=1;
      		if (!InputTimingStableFlag)
        	{ 
        		if ((!SyncLossState() && InputTimingStableCounter>=ValidTimingStableCount) || // set timing stable flag
               	(SyncLossState() && InputTimingStableCounter>=SyncLossStableCount))
            		{ 
            			Set_InputTimingStableFlag();// set flag to search for input mode
              		Set_DoModeSettingFlag();
              		//printData("input timing stable %d", SrcInputType);
            		}
        	}
    	}
}


//*******************************************************************
// Function Name: mStar_ModeHandler
//
// Decscription: Programming scaler while input timing is changing
//
// callee: mStar_SyncLossStateDetect(), mStar_ValidTimingDetect(), mStar_AutoDVI() in detect.c
//         mStar_SetInputPort(), mStar_SetAnalogInputPort() in mstar.c
//
// caller: main() in main.c
//*******************************************************************
void mStar_ModeHandler(void)
{ 
	if (!DoModeSettingFlag) // while timing change & stable
    		return;
	
  	Clr_DoModeSettingFlag();
  	if (!SyncLossState()) // no sync
    	{ 
    		if (!mStar_FindMode()) // search mode index
        	{ 
        		Set_InputTimingChangeFlag(); // search mode faile
          		return;
        	}
      		if (!UnsupportedModeFlag) //supported mode
        	{ 
        		Out_i("input timing index = %d", SrcModeIndex);
          		ReadModeSetting(); // restore user's settings from NVRAM for each mode
          		if (mStar_SetupMode()==FALSE) // setup scaler
            		{ 
            			Set_InputTimingChangeFlag(); // setup mode failed
              		mStar_SetupFreeRunMode(); // setup freerun mode
              		Out_s("Failed to setup mode");
              		return;
            		}
          		if (UnsupportedModeFlag)
            		{ 
            			Out_s("Failed: Out of panel spec");
            		}
                       
      		}
      		else
        	Out_s("unsupported mode");
    	}
  	if (SyncLossState() || UnsupportedModeFlag)
    	{ 
    		mStar_SetupFreeRunMode(); // setup freerun mode
      	//	Power_TurnOffGreenLed(); // turn off green led
      	//	Power_TurnOnAmberLed(); // turn on amber led
    	}
  	else
    	{ 
    		if(!FactoryModeFlag)
  		{
      			Power_TurnOnGreenLed(); // turn on green led
      			Power_TurnOffAmberLed(); // turn off amber led
  		}
      		else
      		{
      			Power_TurnOffGreenLed(); // turn off green led
      			Power_TurnOnAmberLed(); // turn on amber led
      		}
      	}

  	if (!CableNotConnectedFlag || !SyncLossState())
    	{ 
    		if (DoBurninModeFlag)
        	{ 
        		Clr_DoBurninModeFlag();
          		mStar_WriteByte(FWC, 0); // disable background color function.
  		}
    	}
  	Power_TurnOnPanel(); // turn on panel
  	Menu_InitAction(); // initial menu osd state
  	//jon add
  	if (FlgPowerOnOpenAudio && PowerOnFlag)	//for void bo-bo voice
	{
		FlgPowerOnOpenAudio=0;
		VolumeMuteOff();	//open volume
	}

}

void mStar_PrepareForTimingChange(void)
{ 
  	PowerDownCounter=0;
  	Clr_ForcePowerSavingFlag();
  	Clr_InputTimingStableFlag();	 // reset input timing stable and wait for timing stable


  	if (PowerSavingFlag)
    		Power_PowerOnSystem();
  	else
    		Power_TurnOffPanel();
 	mStar_SetupFreeRunMode();
 	Osd_Hide();

#if UseINT
  	mStar_WriteByte(INTENA, 0);
#endif

  	if (InputTimingStableFlag)
    	{ 
    		mStar_WriteByte(SWRST, GPR_B|ADCR_B);// Reset Graphic port to re-counter input hfreq & vtotal
      		Delay1ms(3);
      		mStar_WriteByte(SWRST, 0);
      		Delay1ms(20);
      		if (SrcInputType==Input_Digital)
        	{ 
        		mStar_WriteByte(MISCFC, 0x20);  
          		mStar_AutoDVI();
      		}
    	}

  
  	InputTimingStableCounter=0;
  
  	SrcFlags&=~(bUnsupportMode|bUserMode|bNativeMode);

  	mStar_WriteByte(DBFC, 0x00);			// enable double bufer.
  	mStar_WriteByte(REGBK, REGBANKADC);
  	mStar_WriteByte(DBFC, 0x00);			// enable ADC's double bufer.
  	mStar_WriteByte(REGBK, REGBANKSCALER);
}

//==========================================================
BYTE GetBestBandwidth(BYTE channel, BYTE *errA)
{ 
	BYTE errB;

  	mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  	mStar_WriteByte(TESTEN, channel|TSTEN_B); // set test channed
  	mStar_WriteByte(TESTA0, 0x20); // set high bandwidth
  	mStar_WriteByte(TESTEN, channel); // set test channed
  	Delay1ms(1);
  	mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  	*errA=mStar_ReadByte(DVI_ERST);

  	mStar_WriteByte(TESTEN, channel|TSTEN_B); // set test channed
#if ChipID>=ChipAD
  	mStar_WriteByte(TESTA0, 0x08); // set medium bandwidth
#else
  	mStar_WriteByte(TESTA0, 0x00); // set medium bandwidth
#endif
  	mStar_WriteByte(TESTEN, channel); // set test channed
  	Delay1ms(1);
  	mStar_WriteByte(TESTEN, channel|ERRD_B); // set test channed
  	errB=mStar_ReadByte(DVI_ERST);
  	mStar_WriteByte(TESTEN, channel); // set test channed

#if ChipID>=ChipAD
  	if (*errA>errB)
    	{ 
    		*errA=errB;
      		return 0x8;
    	}
#else
  	if (*errA>errB)
    	{ 
    		*errA=errB;
      		return 0x0;
    	}
#endif
  	return 0x20;
}

BYTE mStar_FineTuneBandwidth(void)
{ 
	BYTE errRed, bwRed;
  	BYTE errGreen, bwGreen;
  	BYTE errBlue, bwBlue;

  	bwRed=GetBestBandwidth(RED_CHANNEL, &errRed);
  	bwGreen=GetBestBandwidth(GREEN_CHANNEL, &errGreen);
  	bwBlue=GetBestBandwidth(BLUE_CHANNEL, &errBlue);
  	if (errRed>errGreen)
    	{ 
    		if (errGreen>errBlue)
        		return bwBlue;
      		else
      			return bwGreen;
    	}
  	else
    	{ 
    		if (errRed>errBlue)
        		return bwBlue;
      		else
      			return bwRed;
    	}
}

BYTE code DVIPhaseTbl[]=
{// 0     1     2     3     4     5     6     7     8     9
  0x40, 0x01, 0x03, 0x07, 0x0F, 0x17, 0x13, 0x11, 0x10, 0x31,
  0x33, 0x37, 0x3F, 0x27, 0x23, 0x21, 0x20, 0x61, 0x63, 0x67,
  0x6F, 0x77, 0x73, 0x71, 0x70, 0x51, 0x53, 0x57, 0x5F, 0x47,
  0x43, 0x41
};
BYTE code DVIPhaseTbl2[]=
{// 0     4     8     12    16    20    24    28
  0x00, 0x1F, 0x30, 0x2F, 0x60, 0x7F, 0x50, 0x4F
};
BYTE GetLinearPhaseValue(BYTE value)
{ 
	BYTE i;

  	for (i=0; i<0x20; i++)
    		if (DVIPhaseTbl[i]==value)
      			break;
			
  	if (i>=0x20)
    	{ 
    		for (i=0; i<8; i++)
        		if (DVIPhaseTbl2[i]==value)
          			break;
      		if (i>=8)
      			i=0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆成人传媒免费观看| 亚洲一区二区视频在线| 国模大尺度一区二区三区| 日韩一区二区在线观看| 日韩电影免费一区| 精品毛片乱码1区2区3区| 韩国女主播成人在线| 欧美激情一区二区三区蜜桃视频| 激情欧美一区二区| 中文字幕欧美区| 91麻豆高清视频| 婷婷久久综合九色国产成人| 日韩免费性生活视频播放| 国产麻豆午夜三级精品| 国产精品久久影院| 国产精品乱码一区二区三区软件 | 69堂精品视频| 麻豆精品视频在线观看| 欧美激情在线一区二区三区| 色琪琪一区二区三区亚洲区| 日韩成人午夜精品| 中文字幕免费一区| 色哟哟欧美精品| 久久精品免费观看| 中文字幕一区二区三区在线播放| 在线亚洲高清视频| 激情综合网av| 亚洲精品亚洲人成人网| 7777精品伊人久久久大香线蕉的 | 国产黄色精品视频| 中文字幕五月欧美| 国产精品三级av在线播放| 亚洲成人777| 99re视频这里只有精品| 欧美日韩高清一区二区| 久久精品在这里| 免费一级片91| 欧美日韩视频在线一区二区| 亚洲国产成人一区二区三区| 欧美一区二区国产| 中文字幕亚洲欧美在线不卡| 欧美日韩国产一二三| 国产福利不卡视频| 日韩高清不卡一区| 国产精品福利电影一区二区三区四区 | 国产欧美日产一区| 欧美美女黄视频| 99久久综合国产精品| 久久精品国产精品亚洲红杏| 亚洲蜜臀av乱码久久精品| 久久夜色精品一区| 欧美老肥妇做.爰bbww| 国产精品一区在线| 亚洲一二三区不卡| 国产亚洲成年网址在线观看| 91精品国产免费| 在线精品视频一区二区| 成人小视频免费观看| 老色鬼精品视频在线观看播放| 又紧又大又爽精品一区二区| 日本一二三不卡| wwww国产精品欧美| 日韩三级免费观看| 69精品人人人人| 色94色欧美sute亚洲线路一ni | 成人国产亚洲欧美成人综合网| 麻豆精品一区二区综合av| 亚洲在线视频免费观看| 综合欧美亚洲日本| 中文字幕在线不卡国产视频| 国产午夜精品一区二区三区视频 | 亚洲国产综合91精品麻豆 | 亚洲同性同志一二三专区| 久久女同性恋中文字幕| 欧美本精品男人aⅴ天堂| 在线播放91灌醉迷j高跟美女 | 91精品国产91久久综合桃花 | 日韩国产一二三区| 日日摸夜夜添夜夜添精品视频| 一区二区三区不卡视频在线观看| 中文字幕在线不卡| 亚洲视频小说图片| 亚洲码国产岛国毛片在线| 亚洲免费在线看| 亚洲综合清纯丝袜自拍| 亚洲一区二区视频| 五月天激情综合| 日本在线观看不卡视频| 看片的网站亚洲| 国产精品自拍一区| av资源站一区| 色婷婷久久99综合精品jk白丝| 色婷婷综合久色| 欧美日韩一区二区三区视频| 亚洲人成电影网站色mp4| 国产精品电影院| 一区二区三区视频在线观看| 午夜精品爽啪视频| 美女一区二区在线观看| 国产精品一卡二| 99久久免费视频.com| 欧美三级日韩在线| 日韩免费高清视频| 中文字幕av一区二区三区| 亚洲欧美国产高清| 视频一区欧美精品| 国产美女精品人人做人人爽| 色综合久久99| 欧美一卡2卡三卡4卡5免费| 久久在线观看免费| 亚洲精品成人a在线观看| 日韩国产欧美在线观看| 国产成人一级电影| 欧美性欧美巨大黑白大战| 日韩一级片网址| 国产精品伦一区二区三级视频| 亚洲一区在线电影| 国产毛片精品国产一区二区三区| 99久久精品国产导航| 正在播放一区二区| 国产精品伦一区二区三级视频| 午夜欧美在线一二页| 成人免费毛片片v| 在线播放中文字幕一区| 亚洲国产精品成人综合色在线婷婷| 一区二区日韩av| 国产成a人亚洲| 91精品国产综合久久久久久| 欧美国产日韩a欧美在线观看| 亚洲国产三级在线| 成人性生交大片免费看视频在线| 欧美区一区二区三区| 国产午夜精品一区二区三区嫩草 | 这里只有精品99re| 国产精品成人免费在线| 免费在线观看精品| 欧美午夜精品电影| 国产精品久久久久久久蜜臀 | 国产在线精品视频| 欧美男人的天堂一二区| 日韩伦理免费电影| 国产夫妻精品视频| 日韩你懂的在线播放| 亚洲高清视频的网址| 99久久婷婷国产综合精品电影| 精品电影一区二区| 日韩中文字幕av电影| 91成人看片片| 1000部国产精品成人观看| 国产精品一级片| 精品不卡在线视频| 麻豆精品视频在线观看免费| 欧美乱妇一区二区三区不卡视频| 亚洲同性同志一二三专区| 国产成人精品aa毛片| 久久众筹精品私拍模特| 久久电影网站中文字幕 | 亚洲精品一区二区三区在线观看| 亚洲午夜在线电影| 91国偷自产一区二区开放时间 | 久久久久久久电影| 久久不见久久见免费视频1| 69成人精品免费视频| 肉丝袜脚交视频一区二区| 欧美三级资源在线| 亚洲一区二区在线免费观看视频| 色综合久久久久综合体桃花网| 国产精品女人毛片| 99久久久国产精品免费蜜臀| 国产精品美女久久久久久久久久久 | 亚洲二区在线视频| 欧美亚洲国产一区二区三区va| 亚洲乱码中文字幕| 欧美午夜一区二区三区免费大片| 亚洲精品中文在线影院| 一本一本大道香蕉久在线精品 | 亚洲成人动漫av| 欧美久久久一区| 奇米在线7777在线精品| 日韩一级片网站| 国产尤物一区二区| 中文字幕va一区二区三区| 99re66热这里只有精品3直播| 亚洲欧美日韩一区二区三区在线观看| 99久久免费精品| 亚洲第一久久影院| 欧美一区二区三区四区五区| 精品综合久久久久久8888| 久久久久国色av免费看影院| 成人h动漫精品一区二| 亚洲男人都懂的| 欧美欧美欧美欧美首页| 激情六月婷婷综合| 136国产福利精品导航| 欧美日韩国产一二三| 国产老肥熟一区二区三区| 亚洲天堂网中文字| 欧美丰满少妇xxxxx高潮对白| 激情图片小说一区| 亚洲女同女同女同女同女同69|