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

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

?? tv_2in1.c

?? 主要用于液晶電視解碼,內(nèi)置51單片機(jī),全部代碼用C編寫(xiě),編譯環(huán)境為KEILC
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#define _TV_2IN1_C_

#include "board.h"

#define _TV_C_

#include <math.h>
#include "types.h"
#include "Global.h"
#if TV_ENABLE
#include "Reg52.h"
#include "TV.h"
#include "devtuner.h"
#include "misc.h"
#include "nvram.h"
#include "DevVD.h"
#include "msVD.h"
#include "msosd.h"
#include "DEBUG.h"
#include "ms_reg.h"
#include "ms_rwreg.h"
#include "panel.h"
#include "mstar.h"
//#include "menudef.h"
#include "menu.h"
#include "UserPref.h"
#include "Tda7052.h"
#include "nvram.h"
#include "M2_vd_agc_lib.h"

#if(ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
#endif


BYTE XDATA  g_ucTryTimes;
extern BYTE code strProgramText[LANG_Nums][12];

extern void devSetSWF(BYTE ColorSoundSystem);
extern void NVRam_WriteWord(WORD addr, WORD value);
extern void Osd_SetTextColor(BYTE foreColor, BYTE backColor);
extern BOOL ExecuteKeyEvent(MenuItemActionType menuAction);

#if TV_SYSTEM==TV_NTSC
code WORD tFreqCode_AirTV[] =
{
//      x0            x1            x2            x3           x4            <Channel>
    TN_N( 48.25), TN_N( 61.25), TN_N( 55.25), TN_N( 61.25), TN_N( 67.25), // 000 - 004
    TN_N( 77.25), TN_N( 83.25), TN_N(175.25), TN_N(181.25), TN_N(187.25), // 005 - 009
    TN_N(193.25), TN_N(199.25), TN_N(205.25), TN_N(211.25), TN_N(471.25), // 010 - 014
    TN_N(477.25), TN_N(483.25), TN_N(489.25), TN_N(495.25), TN_N(501.25), // 015 - 019
    TN_N(507.25), TN_N(513.25), TN_N(519.25), TN_N(525.25), TN_N(531.25), // 020 - 024
    TN_N(537.25), TN_N(543.25), TN_N(549.25), TN_N(555.25), TN_N(561.25), // 025 - 029
    TN_N(567.25), TN_N(573.25), TN_N(579.25), TN_N(585.25), TN_N(591.25), // 030 - 034
    TN_N(597.25), TN_N(603.25), TN_N(609.25), TN_N(615.25), TN_N(621.25), // 035 - 039
    TN_N(627.25), TN_N(633.25), TN_N(639.25), TN_N(645.25), TN_N(651.25), // 040 - 044
    TN_N(657.25), TN_N(663.25), TN_N(669.25), TN_N(675.25), TN_N(681.25), // 045 - 049
    TN_N(687.25), TN_N(693.25), TN_N(699.25), TN_N(705.25), TN_N(711.25), // 050 - 054
    TN_N(717.25), TN_N(723.25), TN_N(729.25), TN_N(735.25), TN_N(741.25), // 055 - 059
    TN_N(747.25), TN_N(753.25), TN_N(759.25), TN_N(765.25), TN_N(771.25), // 060 - 064
    TN_N(777.25), TN_N(783.25), TN_N(789.25), TN_N(795.25), TN_N(801.25), // 065 - 069
};

// CATV-STD
code WORD tFreqCode_CATV[] =
{
//      x0            x1            x2            x3           x4            <Channel>
    TN_N( 48.25), TN_N( 73.25), TN_N( 55.25), TN_N( 61.25), TN_N( 67.25), // 000 - 004
    TN_N( 77.25), TN_N( 83.25), TN_N(175.25), TN_N(181.25), TN_N(187.25), // 005 - 009
    TN_N(193.25), TN_N(199.25), TN_N(205.25), TN_N(211.25), TN_N(121.25), // 010 - 014
    TN_N(127.25), TN_N(133.25), TN_N(139.25), TN_N(145.25), TN_N(151.25), // 015 - 019
    TN_N(157.25), TN_N(163.25), TN_N(169.25), TN_N(217.25), TN_N(223.25), // 020 - 024
    TN_N(229.25), TN_N(235.25), TN_N(241.25), TN_N(247.25), TN_N(253.25), // 025 - 029
    TN_N(259.25), TN_N(265.25), TN_N(271.25), TN_N(277.25), TN_N(283.25), // 030 - 034
    TN_N(289.25), TN_N(295.25), TN_N(301.25), TN_N(307.25), TN_N(313.25), // 035 - 039
    TN_N(319.25), TN_N(325.25), TN_N(331.25), TN_N(337.25), TN_N(343.25), // 040 - 044
    TN_N(349.25), TN_N(355.25), TN_N(361.25), TN_N(367.25), TN_N(373.25), // 045 - 049
    TN_N(379.25), TN_N(385.25), TN_N(391.25), TN_N(397.25), TN_N(403.25), // 050 - 054
    TN_N(409.25), TN_N(415.25), TN_N(421.25), TN_N(427.25), TN_N(433.25), // 055 - 059
    TN_N(439.25), TN_N(445.25), TN_N(451.25), TN_N(457.25), TN_N(463.25), // 060 - 064
    TN_N(469.25), TN_N(475.25), TN_N(481.25), TN_N(487.25), TN_N(493.25), // 065 - 069
    TN_N(499.25), TN_N(505.25), TN_N(511.25), TN_N(517.25), TN_N(523.25), // 070 - 074
    TN_N(529.25), TN_N(535.25), TN_N(541.25), TN_N(547.25), TN_N(553.25), // 075 - 079
    TN_N(559.25), TN_N(565.25), TN_N(571.25), TN_N(577.25), TN_N(583.25), // 080 - 084
    TN_N(589.25), TN_N(595.25), TN_N(601.25), TN_N(607.25), TN_N(613.25), // 085 - 089
    TN_N(619.25), TN_N(625.25), TN_N(631.25), TN_N(637.25), TN_N(643.25), // 090 - 094
    TN_N( 91.25), TN_N( 97.25), TN_N(103.25), TN_N(109.25), TN_N(115.25), // 095 - 099
    TN_N(649.25), TN_N(655.25), TN_N(661.25), TN_N(667.25), TN_N(673.25), // 100 - 104
    TN_N(679.25), TN_N(685.25), TN_N(691.25), TN_N(697.25), TN_N(703.25), // 105 - 109
    TN_N(709.25), TN_N(715.25), TN_N(721.25), TN_N(727.25), TN_N(733.25), // 110 - 114
    TN_N(739.25), TN_N(745.25), TN_N(751.25), TN_N(757.25), TN_N(763.25), // 115 - 119
    TN_N(769.25), TN_N(775.25), TN_N(781.25), TN_N(787.25), TN_N(793.25), // 120 - 124
    TN_N(799.25)                                                          // 125
};

WORD NTSCChannelVsIsValid(BYTE ucSourceIndex,BYTE chIndex,WORD uwCompareFreq)
{
WORD uwtemp;

if(ucSourceIndex==NTSC_ATV)
	uwtemp=tFreqCode_AirTV[chIndex];
else
	uwtemp=tFreqCode_CATV[chIndex];

if(abs(uwtemp-uwCompareFreq)<STEPS_1M)
	{
	uwtemp=uwCompareFreq;
	}
return uwtemp;
}

WORD CurrentChannelFreq(BYTE ucChannel)
{
    if (g_TVChSetting.ucTVSource== NTSC_ATV) // air TV
        return tFreqCode_AirTV[ucChannel];
    else
        return tFreqCode_CATV[ucChannel];
}

#endif

BYTE code AUTOAFCMappingValue[16]=
{
  	 0x08,// 0
  	 0x09,// 1
  	 0x0A,// 2
  	 0x0B,// 3
  	 0x0C,// 4
  	 0x0D,// 5
  	 0x0E,// 6
  	 0x0F,// 7
  	 0x00,// 8
  	 0x01,// 9
  	 0x02,// A
  	 0x03,// B
  	 0x04,// C
  	 0x05,// D
  	 0x06,// E
  	 0x07,// F
};

BYTE GetAFCValue(BYTE ucLoopCount)
{
    BYTE value;

 	value= devTunerGetStatus(ucLoopCount);
  	value &= 0x1e;
  	value >>= 1;
  	value &= 0x0f;//16 counts

  	return  AUTOAFCMappingValue[value];//abs(value-7);//alue;//
}

void TurnerAFCHandler(void)
{
	BYTE AFCValue,uctempAFCTunerCount;
	WORD wtempFre;

    if(!PowerOnFlag||!IsTVInUse())
	    return;
	else if(AFCDisableFlag)
		return;
	else if(!(chData.ucChannelMisc&DoAFCFlag))
		return;
	else if(!(g_VdInfo.wVideoStatus&VD_HSYNC_LOCKED))
		return;

    AFCValue = GetAFCValue(5);
	uctempAFCTunerCount=g_ucAFCTuneCounter;
	wtempFre=chData.wFreq;

	if(AFCValue>9)
	{//printMsg("AFCValue>>>>9");
		wtempFre++;
		uctempAFCTunerCount++;
	}
	else if(AFCValue<6)
	{//printMsg("AFCValue>>>>6");
		wtempFre--;
		uctempAFCTunerCount--;
	}
	else
		return;

	if(uctempAFCTunerCount<AFCTUNEMINCOUNT||uctempAFCTunerCount>AFCTUNEMAXCOUNT)
		{//printMsg("uctempAFCTunerCount OUT OF RANGE ");
		return;
		}
	g_ucAFCTuneCounter=uctempAFCTunerCount;
	chData.wFreq=wtempFre;
    DevTunerWrite(chData.wFreq);
}


BOOL CheckTunerVsIsValid(WORD Vs)
{
	if((Vs>=TN_FREQMIN)&&(Vs<=TN_FREQMAX))
		return TRUE;
	else
		return FALSE;
}

void ReadTVChannelInfo(BYTE ch, BOOL ReallyAddr)
{
	ReallyAddr=ReallyAddr;
	NVRam_ReadTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
	if(!CheckTunerVsIsValid(chData.wFreq))
		chData.wFreq=TN_FREQ_INVILIDDEF;

#if TV_SYSTEM==TV_NTSC
	chData.wFreq=NTSCChannelVsIsValid(g_TVChSetting.ucTVSource,ch,chData.wFreq);
#endif

}

void SaveTVChannelInfo(BYTE ch, BOOL ReallyAddr)
{
	ReallyAddr=ReallyAddr;

	if(!CheckTunerVsIsValid(chData.wFreq))
		chData.wFreq=TN_FREQ_INVILIDDEF;
	NVRam_WriteTbl(nvrChanneAddr(ch), (BYTE*)&chData,SIZE_TV_CHANNEL_INFO);
}

void TV_SelectChannel( BYTE ucChannel )
{
#if TV_SYSTEM==TV_NTSC

    if(ucChannel>=TV_MAX_CHANNEL_NUM&&g_TVChSetting.ucTVSource==NTSC_ATV)
        return;
    else if(ucChannel>=CATV_MAX_CHANNEL_NUM&&g_TVChSetting.ucTVSource==NTSC_CTV)
        return;

#else
    if(ucChannel>=TV_MAX_CHANNEL_NUM)
        return;
#endif

    g_TVChSetting.ucPreChannelNO = g_TVChSetting.ucCurChannelNO;
    g_TVChSetting.ucCurChannelNO = ucChannel;
#if TV_SYSTEM==TV_NTSC
    if(g_TVChSetting.ucTVSource==NTSC_ATV)
	g_TVChSetting.ucATVChannelNO=ucChannel;
    else
	g_TVChSetting.ucCTVChannelNO=ucChannel;
#endif
    TV_SetCh();
}

void TV_SelectPreChannel(void)
{
	BYTE temp;
	temp=g_TVChSetting.ucCurChannelNO;
	g_TVChSetting.ucCurChannelNO=g_TVChSetting.ucPreChannelNO;
	g_TVChSetting.ucPreChannelNO=temp;
#if TV_SYSTEM==TV_NTSC
    if(g_TVChSetting.ucTVSource==NTSC_ATV)
	g_TVChSetting.ucATVChannelNO=g_TVChSetting.ucCurChannelNO;
    else
	g_TVChSetting.ucCTVChannelNO=g_TVChSetting.ucCurChannelNO;
#endif
	TV_SetCh();
}

void TV_SetCh(void)
{
    VD_AGC_ResetGain( g_uwVideoAGC );

    ReadTVChannelInfo(g_TVChSetting.ucCurChannelNO,FALSE);
    g_TVChSetting.TvCurChannelMisc=chData.ucChannelMisc;

    DevTunerWrite(chData.wFreq);
    devSetSWF(chData.ucChannelMisc);
    devTunerSetAGCValue(g_VideoSetting.TunerAGC);
    msVDReset();

    //if( g_ucmsVDCtl&MSVD_CTL_FLAG_NOISE_HANDLER )
    msVDNoiseHandlerReset();

    SaveChannelNumberSetting();
    Set_InputTimingChangeFlag();

    Set_AFCDisableFlag();
    Set_ChannelAFCFlag();

    msVDColorBurstHandler( VD_COLOR_BURST_HANDLER_RESET );
}

BYTE TV_GetIncValidChannel( BYTE ucCurChannel )
{
BYTE ucTemp;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource==NTSC_ATV)
	ucTemp=TV_MAX_CHANNEL_NUM;
else
	ucTemp=CATV_MAX_CHANNEL_NUM;
#else
	ucTemp=TV_MAX_CHANNEL_NUM;
#endif
	ucCurChannel++;
	ucCurChannel%=ucTemp;

    return ucCurChannel;
}

BYTE TV_GetDecValidChannel( BYTE ucCurChannel )
{
BYTE ucTemp;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource==NTSC_ATV)
	ucTemp=TV_MAX_CHANNEL_NUM;
else
	ucTemp=CATV_MAX_CHANNEL_NUM;
#else
	ucTemp=TV_MAX_CHANNEL_NUM;
#endif
	ucCurChannel+=(ucTemp-1);
	ucCurChannel%=ucTemp;

    return ucCurChannel;
}

BYTE SearchTVNoSkipChannel(BYTE channel,BOOL Inc)
{
	BYTE BkChannel=channel;
	BYTE temp;
	//WORD wTempAdd;
	do
    {
    WatchDogClear();
    	if(Inc)
    		channel=TV_GetIncValidChannel(channel);
    	else
    		channel=TV_GetDecValidChannel(channel);
#if TV_SYSTEM==TV_NTSC
		if(g_TVChSetting.ucTVSource==NTSC_ATV)
			{
			temp=g_ucTVChannelSkipInfoBuff[channel/8];
			}
		else
			{
			temp=g_ucCATVChannelSkipInfoBuff[channel/8];
			}
#else
			temp=g_ucTVChannelSkipInfoBuff[channel/8];
#endif


	temp&=1<<(channel%8);

    	if((temp)||channel==g_TVChSetting.ucCurChannelNO)
    		break;
    }while(BkChannel!=channel);

	return channel;
}

void SaveChannelSkipInfo( BYTE chIdx ,BIT bSkipIndex)
{
BYTE ucTemp,ucTempInfoBit,ucTempValue;

#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource == NTSC_ATV)
{
	NVRam_ReadByte(nvrTVChanneSkipInfoAddr(chIdx), &ucTemp);
}
else
{
	NVRam_ReadByte(nvrCATVChanneSkipInfoAddr(chIdx), &ucTemp);
}
#else
	NVRam_ReadByte(nvrTVChanneSkipInfoAddr(chIdx), &ucTemp);
#endif

ucTempInfoBit=chIdx%8;
ucTempValue=((BYTE)bSkipIndex<<ucTempInfoBit);
ucTempInfoBit=1<<ucTempInfoBit;
ucTemp&=~ucTempInfoBit;
ucTemp|=ucTempValue;
#if TV_SYSTEM==TV_NTSC
if(g_TVChSetting.ucTVSource == NTSC_ATV)
{
	g_ucTVChannelSkipInfoBuff[chIdx/8]=ucTemp;
	NVRam_WriteByte(nvrTVChanneSkipInfoAddr(chIdx), ucTemp);
}
else
{
	g_ucCATVChannelSkipInfoBuff[chIdx/8]=ucTemp;
	NVRam_WriteByte(nvrCATVChanneSkipInfoAddr(chIdx), ucTemp);
}
#else
	g_ucTVChannelSkipInfoBuff[chIdx/8]=ucTemp;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲3atv精品一区二区三区| 不卡高清视频专区| 91天堂素人约啪| 亚洲美女屁股眼交| 欧美日韩久久久| 国产高清精品久久久久| 中文字幕精品三区| 欧美日韩精品福利| 欧美日韩亚洲综合一区二区三区| 日韩经典中文字幕一区| 久久嫩草精品久久久久| 在线视频你懂得一区二区三区| 美女精品自拍一二三四| 亚洲日穴在线视频| 久久女同性恋中文字幕| 日本一区二区三区四区| 精品国产露脸精彩对白| 欧美在线免费视屏| 日韩一级在线观看| 欧美日韩成人一区| 欧美精品一区二区蜜臀亚洲| 欧美国产乱子伦| 亚洲精品国久久99热| 亚洲色图视频网| 亚洲免费观看高清完整| 日韩二区在线观看| 亚洲自拍偷拍麻豆| 亚洲欧美影音先锋| 国产精品你懂的| 国产欧美日韩麻豆91| 亚洲男人的天堂在线aⅴ视频| 亚洲愉拍自拍另类高清精品| 蜜桃视频一区二区| 丁香啪啪综合成人亚洲小说 | 久久精品国产99久久6| 亚洲精品久久嫩草网站秘色| 奇米在线7777在线精品| 亚洲午夜一区二区| 亚洲一区日韩精品中文字幕| 日本视频中文字幕一区二区三区| 国产盗摄一区二区| 欧美酷刑日本凌虐凌虐| 欧美精品久久久久久久久老牛影院| 欧美电视剧免费全集观看| 日韩免费高清av| 亚洲日本一区二区三区| 美女网站色91| 欧美日韩精品欧美日韩精品一 | 极品瑜伽女神91| 精品综合免费视频观看| 91浏览器打开| 久久综合久久综合久久综合| 日本一二三不卡| 日韩高清在线一区| 色视频欧美一区二区三区| 欧美日韩一区三区四区| 国产日韩av一区二区| 秋霞影院一区二区| 欧美主播一区二区三区美女| 国产精品美女久久久久久久久 | 成人福利视频网站| 日韩免费在线观看| 亚洲成av人片一区二区三区| www..com久久爱| 欧美在线观看一区二区| 国产精品久99| 久久综合综合久久综合| 99久久精品费精品国产一区二区| 色成年激情久久综合| 欧美精品日韩综合在线| 一区二区三区在线观看网站| 视频一区二区中文字幕| 91国产视频在线观看| 亚洲欧洲成人自拍| 波多野结衣91| 国产精品免费aⅴ片在线观看| 国产mv日韩mv欧美| 国产欧美一区二区精品仙草咪| 国产美女一区二区三区| 欧美日韩成人综合天天影院 | 欧美日韩国产系列| 亚洲一区在线电影| 欧美精品丝袜久久久中文字幕| 一区二区三区精品| 欧美日韩国产色站一区二区三区| 亚洲国产精品尤物yw在线观看| 欧美午夜寂寞影院| 久久精品网站免费观看| 日本伊人精品一区二区三区观看方式| 欧美一a一片一级一片| 一个色妞综合视频在线观看| 欧美日韩高清在线播放| 日韩精品亚洲一区| 精品国产不卡一区二区三区| 国产美女精品人人做人人爽| 国产精品激情偷乱一区二区∴| 91在线精品秘密一区二区| 夜夜嗨av一区二区三区网页 | 狠狠色丁香婷综合久久| 欧美中文字幕久久| 亚洲电影视频在线| 日韩欧美一区中文| 成人免费看片app下载| 中文字幕国产一区| 欧美亚洲自拍偷拍| 另类小说综合欧美亚洲| 国产精品成人在线观看| 欧美日韩亚洲国产综合| 麻豆91小视频| 亚洲欧洲国产专区| 欧美一区二区啪啪| 日韩电影在线一区二区| 久久亚洲免费视频| 欧美最新大片在线看| 国产在线播放一区二区三区| 亚洲三级电影网站| 日韩一级大片在线观看| 99久久国产综合精品色伊| 图片区小说区区亚洲影院| 欧美视频在线播放| 国产一区二区在线免费观看| 有码一区二区三区| 久久亚洲精品小早川怜子| 欧美日韩一区成人| 国产91对白在线观看九色| 天天综合天天做天天综合| 中文一区二区完整视频在线观看 | 欧美一区二区精品在线| 成人免费高清在线观看| 麻豆国产精品一区二区三区| 亚洲精品国产一区二区精华液| 久久婷婷国产综合国色天香| 色中色一区二区| 国产激情视频一区二区三区欧美| 亚洲高清免费一级二级三级| 中文字幕乱码一区二区免费| 欧美xingq一区二区| 韩日av一区二区| 午夜亚洲国产au精品一区二区| 久久精品一区二区三区不卡| 日韩一区二区在线播放| 欧亚洲嫩模精品一区三区| av爱爱亚洲一区| 懂色av一区二区夜夜嗨| 国产精品18久久久久久久久| 国产视频一区二区在线| 精品国产伦一区二区三区观看方式 | 日本午夜一区二区| 亚洲一区二区五区| 亚洲免费观看高清完整版在线| 国产精品久久久久久福利一牛影视| 精品国产91久久久久久久妲己| 日韩一区二区三区三四区视频在线观看 | 亚洲成a人片在线观看中文| 自拍av一区二区三区| 中文在线一区二区| 国产精品久久久久影院亚瑟| 中文字幕乱码亚洲精品一区| 国产日产欧美一区| 国产色婷婷亚洲99精品小说| 国产亚洲精久久久久久| 日韩精品中文字幕一区| 日韩视频在线一区二区| 久久综合九色综合97婷婷| 久久欧美一区二区| 国产精品视频你懂的| 国产免费久久精品| 1024成人网| 亚洲美女一区二区三区| 亚洲国产视频一区| 日韩不卡一区二区| 久久精品噜噜噜成人av农村| 久久精品99国产精品日本| 国产美女精品人人做人人爽| 成人sese在线| 欧美亚一区二区| 91麻豆精品91久久久久同性| 国产精品 欧美精品| 国产盗摄女厕一区二区三区| av不卡一区二区三区| 在线视频综合导航| 精品日韩一区二区三区| 亚洲国产精品v| 国产精品久久夜| 午夜伦理一区二区| 国产精品99久久久久久似苏梦涵| 成人久久视频在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲欧美一区二区三区极速播放| 亚洲v中文字幕| 国内精品国产成人国产三级粉色 | 欧美伊人久久久久久久久影院| 欧美一区二区在线不卡| 中文在线一区二区| 日韩成人免费看| 色美美综合视频| 久久一留热品黄| 亚洲va欧美va人人爽午夜| 国产精品一卡二| 欧美一级在线视频|