📄 tuner.lst
字号:
wTVFreq+=40;
}
C51 COMPILER V7.06 TUNER 06/16/2005 10:05:38 PAGE 12
I2CWriteByte(EEPVIDEOBLOCK, 0x00, cTVNum);
twdDelay(NVRDELAY);
I2CWriteByte(EEPVIDEOBLOCK, 0x01, cTVNum);
}
*/
//p = CATV_CH_Tbl + ch; //Taiwan? CATV_CH_Tbl
BOOL ChannelSel(uWORD *wTVFreq, uWORD wTVFreqMin)
{
uCHAR cTemp, cTemp1,i;
SetTuner(*wTVFreq);
OSDDrawTVFreq(*wTVFreq);
#ifdef PAL
OSDDrawBand(*wTVFreq);
#endif
EX1=1;
twdDelay(1000); //2000
cTemp=TunerReadByte(0x86);
m_cBuff[0]=cTemp;
if(!(m_cBuff[0]&0x80))
return FALSE;
else
{
m_cBuff[0]=(m_cBuff[0]&0x1E)>>1;
if(m_cBuff[0]==0x00||m_cBuff[0]==0x0F)
return TRUE;
}
m_cBuff[0]=0;
for(i=0;i<10;i++)
{
twdDelay(20);
m_cBuff[0]|=I2CReadByte(0xb8,0x3a);
}
// if(!(m_cBuff[0]&0x06))return FALSE;
i=0;
while((*wTVFreq>=wTVFreqMin)&&(*wTVFreq<=wTVFreqMin+40)&&(i<20))
{
if(cTemp&0x80)//Lock
{
cTemp1=(cTemp&0x1E)>>1;
if(cTemp1==0x00||cTemp1==0x0F)
return TRUE;
else if(cTemp1==0x01)
(*wTVFreq)++;
else if(cTemp1==0x02||cTemp1==0x03)
(*wTVFreq)+=2;
else if(cTemp1==0x04||cTemp1==0x05||cTemp1==0x06)
(*wTVFreq)+=3;
else if(cTemp1==0x07)
(*wTVFreq)+=4;
else if(cTemp1==0x08)
(*wTVFreq)-=4;
else if(cTemp1==0x09||cTemp1==0x0A||cTemp1==0x0B)
(*wTVFreq)-=3;
else if(cTemp1==0x0C||cTemp1==0x0D)
(*wTVFreq)-=2;
else if(cTemp1==0x0E)
(*wTVFreq)--;
C51 COMPILER V7.06 TUNER 06/16/2005 10:05:38 PAGE 13
}
else
break;
//{
// wTVFreq+=4;
i++;
SetTuner(*wTVFreq);
OSDDrawTVFreq(*wTVFreq);
#ifdef PAL
OSDDrawBand(*wTVFreq);
#endif
EX1=1;
twdDelay(300); //1000
cTemp=TunerReadByte(0x86);
}
return FALSE;
}
void SetTuner(uWORD wChanneF)
{
#if 1
uCHAR k;
#ifdef PAL
I2CWriteByte(0x86, 0x00,0xd6);
I2CWriteByte(0x86, 0x01,0x70);
I2CWriteByte(0x86, 0x02,m_cSoundSystem);
#endif
#ifdef NTSC
// I2CWriteByte(0x86, 0x00,0xd6);
// I2CWriteByte(0x86, 0x01,0x70);
// I2CWriteByte(0x86, 0x02,0x0f);
I2CWriteByte(0x86, 0x00,0x16);
I2CWriteByte(0x86, 0x01,0x30);
I2CWriteByte(0x86, 0x02,0x04);//IF 45.75MHz
#endif
wChanneF&=0x7fff;
if(wChanneF < VLMAX)
k=BAND_VL;
else if(wChanneF > VHMAX)
k=BAND_UHF;
else
k=BAND_VH;
#ifdef NTSC
wChanneF-=0x7c;
#endif
TunerWriteByte(0xC6,(uCHAR)(wChanneF>>8),(uCHAR)(wChanneF&0x00FF),k);
#endif
}
uCHAR TVEEPGetChannel(void)
{
uCHAR cTotal, cNum;
// cTotal = I2CReadByte(EEPVIDEOBLOCK, 0x00);
// twdDelay(NVRDELAY);
cNum = I2CReadByte(EEPVIDEOBLOCK, 0x01);
if((cNum>cTotal)||(cNum<1))
{
// cNum=1;
C51 COMPILER V7.06 TUNER 06/16/2005 10:05:38 PAGE 14
// twdDelay(NVRDELAY);
// I2CWriteByte(EEPVIDEOBLOCK, 0x00, cNum);
// twdDelay(NVRDELAY);
// I2CWriteByte(EEPVIDEOBLOCK, 0x01, cNum);
// twdDelay(NVRDELAY);
// I2CWriteByte(EEPVIDEOBLOCK, idTVCHANNEL_STAT+(cNum-1)*2, (uCHAR)(TVFREQ_BEGIN>>8));
// twdDelay(NVRDELAY);
// I2CWriteByte(EEPVIDEOBLOCK, idTVCHANNEL_STAT+(cNum-1)*2+1, (uCHAR)(TVFREQ_BEGIN&0x00FF));
}
return cNum;
}
uWORD TVSetChannel(uCHAR cNum)
{
uWORD wTemp;
twdDelay(NVRDELAY);
if(m_bAir_Cable)
{
wTemp=I2CReadByte(EEPVIDEOBLOCK, idTVCHANNEL_STAT+cNum*2);
wTemp<<=8;
twdDelay(NVRDELAY);
wTemp|=I2CReadByte(EEPVIDEOBLOCK, idTVCHANNEL_STAT+cNum*2+1);
}
else
{
wTemp=I2CReadByte(EEPVIDEOBLOCK+2, idTVCHANNEL_STAT+cNum*2);
wTemp<<=8;
twdDelay(NVRDELAY);
wTemp|=I2CReadByte(EEPVIDEOBLOCK+2, idTVCHANNEL_STAT+cNum*2+1);
}
// SetTuner(wTemp);
//I2CWriteByte(EEPVIDEOBLOCK, 0x01,cTemp1);
return wTemp;
}
void ResetTVChannel(void)
{
uCHAR i;
OSDShowRESET(0);
OSDResetVideoData();
OSDSetVideoValues();
EEPSaveVideoData();
#ifdef NTSC
m_bAir_Cable=0;
for(i=0;i<83;i++)EEPSaveTVChannel(i, DK_CCIR1[i]);
m_bAir_Cable=1;
for(i=0;i<99;i++)EEPSaveTVChannel(i, DK_CCIR2[i]);
i=I2CReadByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX);
i|=0x01;
I2CWriteByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX,i);
OSDShowTVSource(0);
#endif
#ifdef PAL
for(i=0;i<96;i++)EEPSaveTVChannel(i, DK_CCIR[i]);
#endif
OSDShowRESET(1);
}
#if 0
void SetChannel(uCHAR cChannel)
{
unsigned int *p;
C51 COMPILER V7.06 TUNER 06/16/2005 10:05:38 PAGE 15
p = DK_CCIR + cChannel;
SetTuner(*p);
}
#endif
#endif
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
C51 COMPILER V7.06 TUNER 06/16/2005 10:05:38 PAGE 16
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
eSPANISH . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
COLOR. . . . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 3
cColorR. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
cColorG. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
cColorB. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
isrcSVIDEO . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -