?? tuner.c
字號:
}
if((AFC<3||AFC>0x0c)&&VIF_Level())
{
i = EAD_TV_START + ChannelNUM*CH_IN_EAD;
//EEPROM_Wr_Byte(i,TV_CHDEF_STATE);
EEPROM_Wr_Byte(i,PB>>8);
EEPROM_Wr_Byte(i+1,PB&0xff);
ChannelNUM++;
EEPROM_Wr_Byte(EAD_TV_CHANNEL_SUM,ChannelNUM-1);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_CURRENT,ChannelNUM);
PB+=60;
break;
}
}
Print_PLL(8, VIDEO_BAR_VStart+1, PB);
Show_Menu();
//Print_CH(24, 1, ChannelNUM);
//PB+=60;
}
while(PB<=TV_BAND_VU_HLIMIT);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_CURRENT,0);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_LAST,0);
if(ChannelNUM == 0)
{
GetBand(TV_BAND_VL_LLIMIT);
Write_PLL(PLL_Band, TV_BAND_VL_LLIMIT);
PB = TV_BAND_VL_LLIMIT;
//EEPROM_Wr_Byte(EAD_TV_START,TV_CHDEF_STATE);
EEPROM_Wr_Byte(EAD_TV_START,PB>>8);
EEPROM_Wr_Byte(EAD_TV_START+1,PB&0xff);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_SUM,0);
}
i = EAD_TV_START ;
Channel_WORD.CH_B[0] = EEPROM_Rd_Byte(i);
Channel_WORD.CH_B[1] = EEPROM_Rd_Byte(i+1);
GetBand(Channel_WORD.CH_W);
Write_PLL(PLL_Band, Channel_WORD.CH_W);
PB = Channel_WORD.CH_W;
ResetOSD();
//Print_CH(24, 1, 0);
//if(bMute == 0)
byM230_DA3 = EEPROM_Rd_Byte(EAD_VOL);
Print_PLL(8, VIDEO_BAR_VStart+1, PB);
}
void Forward_50KHZ(BYTE n)
{
PB+=n;
GetBand(PB);
Write_PLL(PLL_Band,PB);
DelayTuner(5*n);
}
void Back_50KHZ(BYTE n)
{
PB-=n;
GetBand(PB);
Write_PLL(PLL_Band,PB);
DelayTuner(5*n);
}
void Get_HSYNC(void)
{
if(byM230_HCNTH&0x80)
H_Count = 0;
else
H_Count = (byM230_HCNTH&0x3f)*256+byM230_HCNTL;
}
void HSYNC_Range(void) //Range is 12K~~18K
{
NOSign = 1;
Get_HSYNC();
if(H_Count>0x1BC7&&H_Count<0x29AA) // if(H_Count>0x1000&&H_Count<0x4000)
NOSign = 0;
}
void HSYNC_Range2(void) //Range is 12K~~18K
{
NOSign = 1;
Get_HSYNC();
if(H_Count>0x1f40&&H_Count<0x2155) // if(H_Count>0x1BC7&&H_Count<0x29AA)
NOSign = 0;
}
void Tuner_ADC(void)
{
IICRead(SlvTuner,0x00,1);
TunerADC = IICBuf.ByteArray[0]&0x07;
}
BYTE Tuner_AFC(void)
{
BYTE AFC;
IICRead(TUNER_IF,0x00,1);
AFC = (IICBuf.ByteArray[0]&0x1e)>>1;
return AFC;
}
BIT VIF_Level(void)
{
BIT VIF = 0;
IICRead(TUNER_IF,0x00,1);
if(IICBuf.ByteArray[0]&0x40)
VIF = 1;
return VIF;
}
void Print_PLL(BYTE H_Start,BYTE C_Start,WORD pll)
{
BYTE baiw,shiw,gew,value;
WORD zhengshu;
float xiaoshu,frf;
frf = pll/20.0-PictureIF;
zhengshu = (WORD)frf;
xiaoshu = frf-zhengshu;
baiw = zhengshu/100;
shiw = (zhengshu%100)/10;
gew = zhengshu%10;
gotoxy(H_Start,C_Start);
PrintChar(_f,red,0);
PrintChar(_p,red,0);
PrintChar(_COM,red,0);
if(baiw>9)
PrintChar(HexTab[baiw%10],red,0);
else
PrintChar(HexTab[baiw],red,0);
PrintChar(HexTab[shiw],red,0);
PrintChar(HexTab[gew],red,0);
value=(BYTE)(xiaoshu*100);
shiw = value/10;
baiw = value%10;
PrintChar(_DOT,red,0);
PrintChar(HexTab[shiw],red,0);
PrintChar(HexTab[baiw],red,0);
PrintChar(__,red,0);
PrintChar(_M,red,0);
PrintChar(_H,red,0);
PrintChar(_z,red,0);
}
void Print_CH(BYTE H_Start,BYTE C_Start,BYTE CH)
{
//BYTE i,j;
gotoxy(H_Start,C_Start);
PrintChar(_C, green, 0);
PrintChar(_H, green, 0);
PrintChar(_COM, green, 0);
PrintDec(CH, green);
/*i = CH/100;
PrintChar(HexTab[i], green, 0);
i = (CH-i*100)/10;
j = CH%10;
PrintChar(HexTab[i], green, 0);
PrintChar(HexTab[j], green, 0);*/
}
void DelayTuner(BYTE n)
{
BYTE i,j;
i=n;
do{
j=50;
do{
SetWatchDog(4);
ClearHVflag();//debug 搜臺死機7.30
}
while(j--);
i--;
ClearHVflag();//debug 搜臺死機7.30
}
while(i);
}
void ClearHVflag(void)
{
if(byM230_INTFLG!= 0)
byM230_INTFLG = 0;
}
void Initial_EEPROM_PLL(void) //initial CHANNEL eeprom
{
BYTE i;
//WORD w_i;
//w_i=EAD_TV_START;
for(i=0;i<EEPROM_Rd_Byte(EAD_TV_CHANNEL_SUM);i++)//EEPROM_Rd_Byte(EAD_TV_CHANNEL_SUM)
{
EEPROM_Wr_Byte(EAD_TV_START+CH_IN_EAD*i, TV_BAND_VL_LLIMIT>>8);//initial CH eeprom
EEPROM_Wr_Byte(EAD_TV_START+CH_IN_EAD*i+1, TV_BAND_VL_LLIMIT&0xff);
}
}
void CH_PLUS(void)
{
BYTE i,CH;
byM230_DA3 = 0;
CH = EEPROM_Rd_Byte(EAD_TV_CHANNEL_CURRENT);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_LAST, CH);
if(CH>=0&&CH<EEPROM_Rd_Byte(EAD_TV_CHANNEL_SUM))
CH++;
else
CH = 0;
EEPROM_Wr_Byte(EAD_TV_CHANNEL_CURRENT, CH);
i = EAD_TV_START + CH*CH_IN_EAD;
Channel_WORD.CH_B[0] = EEPROM_Rd_Byte(i);
Channel_WORD.CH_B[1] = EEPROM_Rd_Byte(i+1);
GetBand(Channel_WORD.CH_W);
Write_PLL(PLL_Band, Channel_WORD.CH_W);
PB = Channel_WORD.CH_W;
ResetOSD();
Print_CH(CH_HStart, CH_VStart, CH);
//if(bMute)
byM230_DA3 = EEPROM_Rd_Byte(EAD_VOL);
Print_PLL(8, VIDEO_BAR_VStart+1, PB);
}
void CH_SUB(void)
{
BYTE i,CH;
byM230_DA3 = 0;
CH = EEPROM_Rd_Byte(EAD_TV_CHANNEL_CURRENT);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_LAST, CH);
if(CH>0&&CH<=EEPROM_Rd_Byte(EAD_TV_CHANNEL_SUM))
CH--;
else
CH = EEPROM_Rd_Byte(EAD_TV_CHANNEL_SUM);
EEPROM_Wr_Byte(EAD_TV_CHANNEL_CURRENT, CH);
i = EAD_TV_START + CH*CH_IN_EAD;
Channel_WORD.CH_B[0] = EEPROM_Rd_Byte(i);
Channel_WORD.CH_B[1] = EEPROM_Rd_Byte(i+1);
GetBand(Channel_WORD.CH_W);
Write_PLL(PLL_Band, Channel_WORD.CH_W);
PB = Channel_WORD.CH_W;
ResetOSD();
Print_CH(CH_HStart, CH_VStart, CH);
//if(bMute)
byM230_DA3 = EEPROM_Rd_Byte(EAD_VOL);
Print_PLL(8, VIDEO_BAR_VStart+1, PB);
}
#define TunerBar_Degree 5
#define TunerBar_Length 16
#define TunerBar_Sum_Degree (TunerBar_Degree*TunerBar_Length)
void PrintTunerBar(BYTE Cstart, BYTE Rstart)
{
BYTE color,full,i;
WORD tempPB,sum_value,value;
color = TUNER_BAR_Color;
GetBand(PB);
gotoxy(Cstart+5,Rstart-1);
if(PLL_Band == VLF_BAND)
{
sum_value = TV_BAND_VL_HLIMIT-TV_BAND_VL_LLIMIT;
tempPB = PB-TV_BAND_VL_LLIMIT;
PrintChar(_V, TUNER_BAND_Color, 0);
PrintChar(_H, TUNER_BAND_Color, 0);
PrintChar(_F, TUNER_BAND_Color, 0);
PrintChar(__, TUNER_BAND_Color, 0);
PrintChar(_L, TUNER_BAND_Color, 0);
}
else if(PLL_Band == VHF_BAND)
{
sum_value = TV_BAND_VH_HLIMIT-TV_BAND_VH_LLIMIT;
tempPB = PB-TV_BAND_VH_LLIMIT;
PrintChar(_V, TUNER_BAND_Color, 0);
PrintChar(_H, TUNER_BAND_Color, 0);
PrintChar(_F, TUNER_BAND_Color, 0);
PrintChar(__, TUNER_BAND_Color, 0);
PrintChar(_H, TUNER_BAND_Color, 0);
}
else if(PLL_Band == UHF_BAND)
{
sum_value = TV_BAND_VU_HLIMIT-TV_BAND_VU_LLIMIT;
tempPB = PB-TV_BAND_VU_LLIMIT;
PrintChar(__, red, 0);
PrintChar(_U, TUNER_BAND_Color, 0);
PrintChar(_H, TUNER_BAND_Color, 0);
PrintChar(_F, TUNER_BAND_Color, 0);
PrintChar(__, TUNER_BAND_Color, 0);
}
else
return;
value = ((float)tempPB/sum_value)*100;
value = (TunerBar_Sum_Degree*value)/100;
full = value/TunerBar_Degree;
gotoxy(Cstart,Rstart);
if(full>= TunerBar_Length)
{
for(i=0;i<TunerBar_Length;i++)
PrintChar(_Tuner_BAR_FULL, color, 1);
return;
}
/* if( (value==0) && (full==0) )
{
for(i=0;i<TunerBar_Length;i++)
{
PrintChar(_Tuner_BAR_EMP, color, 1);
}
//PrintChar(_BAR_END,color, 0);
return;
}
for(i=0;i<TunerBar_Length;i++)
{
if(i<full)
{
PrintChar(_Tuner_BAR_FULL,color, 1);
}
else if(i==full)
{
PrintChar(TunerBar_Code[value%TunerBar_Degree],color, 1);
}
else
{
PrintChar(_Tuner_BAR_EMP,color, 1);
}
}*/
if( value==0)
for(i = 0;i<TunerBar_Length;i++)
PrintChar(_Tuner_BAR_EMP, color, 1);
else
{
for(i = 0;i<full;i++)
PrintChar(_Tuner_BAR_FULL, color, 1);
PrintChar(TunerBar_Code[value%TunerBar_Degree], color, 1);
for(i = full+1;i<TunerBar_Length;i++)
PrintChar(_Tuner_BAR_EMP, color, 1);
}
}
void Get_CH(BYTE CH)
{
byM230_DA3 = 0;
if(EEPROM_Rd_Byte(EAD_TV_CHANNEL_CURRENT) != EEPROM_Rd_Byte(EAD_TV_CHANNEL_LAST))
EEPROM_Wr_Byte(EAD_TV_CHANNEL_LAST, EEPROM_Rd_Byte(EAD_TV_CHANNEL_CURRENT));
EEPROM_Wr_Byte(EAD_TV_CHANNEL_CURRENT, CH);
Channel_WORD.CH_B[0] = EEPROM_Rd_Byte(EAD_TV_START+CH*CH_IN_EAD);
Channel_WORD.CH_B[1] = EEPROM_Rd_Byte(EAD_TV_START+CH*CH_IN_EAD+1);
GetBand(Channel_WORD.CH_W);
Write_PLL(PLL_Band, Channel_WORD.CH_W);
PB = Channel_WORD.CH_W;
ResetOSD();
Print_CH(CH_HStart, CH_VStart, CH);
//if(bMute)
byM230_DA3 = EEPROM_Rd_Byte(EAD_VOL);
Print_PLL(8, VIDEO_BAR_VStart+1, PB);
}
void SET_AUDIO(void)
{
BYTE temp;
SysFlag2 = EEPROM_Rd_Byte(EAD_SYS_FLAG2);
temp = SysFlag2&0x03;
IICBuf.ByteArray[0] = temp|0x0c;
IICWrite(TUNER_IF,0x02, 1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -