⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tuner_philips_fq1216.c

📁 TERAWINS T108DL TUNER 调试代码
💻 C
字号:
/* --------------------------------------------------------------------------
    Function  : Tuner_CalChannel
    Prupose   : Calculate channel frequency
    Arguments : --    --                  --
    Returns   : --    --                  --
    External  : --    --                  --
    Notes     :
   -------------------------------------------------------------------------- */

#include "reg51.h"
#include "common.h"
#include "TW803Reg.h"
#include "System.h"
#include "SRC_ctrl.h"
#include "OSDCtrl.h"
#include "TwoWire.h"
#include "OSDDraw.h"
#include "NVRam.h"
#include "Remote.h"
#include "Keypad.h"
#include "Tuner.h"
#include "Freq_Table.h"

void Tuner_CalChannelFreq(void) 
{
	Byte  lbChCount   = 0 ;
  	Byte  lbChDiff    = 0 ;

  	//------- Check channel boundary
  	if      ( DIR_TV_CHANNEL > CH_END   )      // Check channel up boundary
    	DIR_TV_CHANNEL = CH_START;
  	else if ( DIR_TV_CHANNEL < CH_START )      // Check channel down boundary
    	DIR_TV_CHANNEL = CH_END;

  	//------- Search channel frequency according to channel number
  	do {
    	gwDivider = CH_Freq(DIR_TV_MODE,lbChCount);
    	lbChDiff = DIR_TV_CHANNEL - CH_NO(DIR_TV_MODE,lbChCount);

    	if ( ++lbChCount >= CH_TYPE_TOTAL ) 
		{
      		--lbChCount;
      		break;
    	}

  	}while ( DIR_TV_CHANNEL >= CH_NO(DIR_TV_MODE, lbChCount) );

  	//------- Calculate offset channel frequency
  	if(lbChDiff)
    	gwDivider += ( CH_BANDWIDTH(DIR_TV_MODE,lbChCount) / TUNER_DIV_RATIO ) * lbChDiff ;

  	//-------  Check channel exist
  	gbExist = TUN_CH_EXIST() ;
}

/* --------------------------------------------------------------------------
    Function  : Tuner_WriteFreq
    Prupose   : Write channel frequency and control command to tuner
    Arguments : Bool  afUpDn              0:Channel Up / 1:Channel Down
    Returns   : --    --                  --
    External  : --    --                  --
    Notes     :
   -------------------------------------------------------------------------- */
void Tuner_WriteFreq(BOOL afUpDn) 
{
	Byte  bBandPort;
  	Byte bTemp[4];
  	Byte IFbTemp[4];

#if (SWAP_TV_SW==ON)
 	gwDivider=Tuner_ReadFreq();
#endif

  //------- Check band type
	if     ( gwDivider >= TUNER_H_BAND_MIN_FREQ ) // Check on the High band range
   		bBandPort = TUNER_BS_H_BAND ;
  	else if( gwDivider >= TUNER_M_BAND_MIN_FREQ ) // Check on the Mid band range
    	bBandPort = TUNER_BS_M_BAND ;
  	else                                          // Check on the Low band range
    	bBandPort = TUNER_BS_L_BAND ;

  	afUpDn   = afUpDn;                            // To prevent compile warning
 	bTemp[0] = mHIBYTE(gwDivider);
  	bTemp[1] = mLOBYTE(gwDivider);
  	bTemp[2] = TUNER_CB1;
  	bTemp[3] = bBandPort;

  	switch( DIR_PalTvSys ) 
	{
    	case PALTVSYS_BG:
      		IFbTemp[0] = TUNER_IF_SDA;			
      		IFbTemp[1] = TUNER_BG_BDATA;
	  		IFbTemp[2] = TUNER_BG_CDATA;
      		IFbTemp[3] = TUNER_BG_EDATA;
      		break;
    	case PALTVSYS_I:
	  		IFbTemp[0] = TUNER_IF_SDA;
      		IFbTemp[1] = TUNER_I_BDATA;
	  		IFbTemp[2] = TUNER_I_CDATA;
      		IFbTemp[3] = TUNER_I_EDATA;
      		break;
    	case PALTVSYS_DK:
	  		IFbTemp[0] = TUNER_IF_SDA;
      		IFbTemp[1] = TUNER_DK_BDATA;
	  		IFbTemp[2] = TUNER_DK_CDATA;
      		IFbTemp[3] = TUNER_DK_EDATA;
      		break;
	}

  	I2C_WrBytes_NoSub(TUNER_ADB, &bTemp, 4);
}

/* --------------------------------------------------------------------------
    Function  : Tuner_AFC_Control
    Prupose   : Tuner AFC control function
    Arguments : --    --                  --
    Returns   : Bool  --                  Is fine tune success
    External  : --    --                  --
    Notes     :
   -------------------------------------------------------------------------- */
Bool Tuner_AFC_Control(void)
{
#if (TUNER_AFC_CONTROL==ON)
	Word  lwDivider;
  	Byte  lbAFC_Cnt;
  	Bool  lfUpDn   ;

  	// ------------ Save frequency
  	lwDivider = gwDivider;

  	// ------------ Fine tune control
  	for (lbAFC_Cnt=0; lbAFC_Cnt<15; lbAFC_Cnt++) 
	{
    	Delay(30,MS);
    	switch( Tuner_ReadStatus() ) 
		{
      		// -187.5 K
      		case 8:
        		gwDivider -= TUNER_FINETUNE_HIGH;
        		lfUpDn = 0;
        		break;

      		// -125.0 K
      		case 9:
      		case 10:
        		gwDivider -= TUNER_FINETUNE_MID;
        		lfUpDn = 0;
        		break;

      		// - 62.5 K
      		case 11:
      		case 12:
      		case 13:
        		gwDivider -= TUNER_FINETUNE_LOW;
        		lfUpDn = 0;
        		break;

      		// Center freqency
      		default:
      		case 0:
      		case 1:
      		case 14:
      		case 15:
          		return SUCCESS;
        		break;

      		// + 62.5 K
      		case 2:
      		case 3:
      		case 4:
        		gwDivider += TUNER_FINETUNE_LOW;
        		lfUpDn = 1;
        		break;

      		// +125.0 K
      		case 5:
      		case 6:
        		gwDivider += TUNER_FINETUNE_MID;
        		lfUpDn = 1;
        		break;

      		// +187.5 K
      		case 7:
        		gwDivider += TUNER_FINETUNE_HIGH;
        		lfUpDn = 1;
        		break;
    	}

    	Tuner_WriteFreq(lfUpDn);
  	}
  	// ------------ Revocer frequency if AFC fail
  	gwDivider = lwDivider;
  	Tuner_WriteFreq(lfUpDn);
  	return FAILURE;

#else
  return SUCCESS;
#endif

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -