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

📄 devtuner.lst

📁 MSTARXX.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
              
              void devTunerSetSoundToPalDK(void)
              {
                  BYTE tempvalue;
                  tempvalue=P4;
                  tempvalue&=0xFC;
                  tempvalue|=0x01;
                  P4=tempvalue;
              }
              
              void devTunerSetSoundToNTSCMN(void)
              {
                  P4&=0xFC;
              }
              
              #endif //TUNER_2IN1
 196          
 197          ///////////////////////////////////////////////////////////////////////////////
 198          ///////////////////////////////////////////////////////////////////////////////
 199          
 200          #define SlopeCount              1
 201          
 202          BYTE devTunerAutoTuneFreq( WORD wOriFreq, WORD* pwResultFreq )
 203          {
 204   1          TnAutoDrctType cDirect; // +/- direct
 205   1          char cOffset; // frequency offset
 206   1          BYTE ucDummy; // loop dummy
 207   1          BYTE ucBestAfc; // found best freq. flag
 208   1          BYTE ucAbidanceCount;//identify personate channel
 209   1      
 210   1          *pwResultFreq = wOriFreq; // intialize
 211   1          cDirect = TN_AUTO_TGL;
 212   1          cOffset = 0;
 213   1          ucDummy = TN_SCAN_STEP+5; // initialize dummy
 214   1          ucBestAfc = 0x07; // initialize AFC
 215   1          ucAbidanceCount=0;
 216   1      
 217   1          do
 218   1          {
 219   2              BYTE ucStatus; // status buffer
 220   2              BYTE ucAFC; // AFC status
 221   2              BYTE ucAfcDelta;
 222   2               BYTE ucLastAfc;
 223   2      
 224   2              devTunerWrite( wOriFreq + cOffset); // setting parameteer
 225   2              //Delay1ms(30);
 226   2              SystemDelay_translate_To_Dsp_Processor(2);
 227   2              ucStatus = devTunerGetStatus(10);
 228   2              if((ucStatus & TN_READ_AFCWIN) == 0x00) // No signal
 229   2                  return TN_SCAN_ERR;
 230   2      
 231   2                  ucLastAfc=ucAFC;
 232   2              ucAFC = (ucStatus & TN_READ_AFC) >> 1; // b4-b1
 233   2              if (ucAFC < 0x08) // 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
 234   2                  ucAfcDelta = ucAFC;
 235   2              else //if(ucAFC >= 0x08) // 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d 0x0e, 0x0f
 236   2                  ucAfcDelta = ucAFC ^ 0x0f;
 237   2      
 238   2              if (ucBestAfc > ucAfcDelta) // found better AFC
 239   2              {
 240   3                  ucBestAfc = ucAfcDelta;
C51 COMPILER V8.18   DEVTUNER                                                              09/29/2009 23:58:04 PAGE 5   

 241   3                  *pwResultFreq = wOriFreq + cOffset; // save freq.
 242   3              }
 243   2      
 244   2              // Setup the direction of search
 245   2              if (cDirect == TN_AUTO_TGL)
 246   2              {
 247   3                          if( ucAFC < 0x08 ) // 0x03, 0x04, 0x05, 0x06, 0x07
 248   3                      cDirect = TN_AUTO_PLS; // increase
 249   3                  else // 0x08, 0x09, 0x0a, 0x0b, 0x0c
 250   3                      cDirect = TN_AUTO_MNS; // decrease
 251   3              }
 252   2              if (cDirect == TN_AUTO_PLS) // increase
 253   2              {
 254   3                  if( ucAFC >= 0x08 ) // over -
 255   3                  {
 256   4                      if (ucBestAfc <= 0x02) // 0x00, 0x01, 0x02 or  0x0d 0x0e, 0x0f
 257   4                      {
 258   5                          if(ucAbidanceCount>SlopeCount)//||ucBestAfc == 0x00)
 259   5                                              goto succeed;
 260   5                                      else
 261   5                                      {
 262   6                                              if(ucLastAfc>ucAFC)
 263   6                                                      ucAbidanceCount++;
 264   6                                              else
 265   6                                                      ucAbidanceCount=0;
 266   6                                      }
 267   5                      }
 268   4                  }
 269   3                  cOffset++;
 270   3              }
 271   2              if (cDirect == TN_AUTO_MNS) // decrease
 272   2              {
 273   3                  if( ucAFC < 0x08 ) // over +
 274   3                  {
 275   4                      if (ucBestAfc <= 0x02) // 0x00, 0x01, 0x02 or  0x0d 0x0e, 0x0f
 276   4                      {
 277   5                          if(ucAbidanceCount>SlopeCount)//||ucBestAfc == 0x00)
 278   5                                          goto succeed;
 279   5                                  else
 280   5                                      {
 281   6                                              if(ucLastAfc<ucAFC)
 282   6                                                      ucAbidanceCount++;
 283   6                                              else
 284   6                                                      ucAbidanceCount=0;
 285   6                                      }
 286   5                      }
 287   4                  }
 288   3                  cOffset--;
 289   3              }
 290   2          } while(ucDummy--);
 291   1      
 292   1          return TN_SCAN_ERR;
 293   1      
 294   1      succeed:
 295   1          devTunerWrite( *pwResultFreq+STEPS_1M*2);
 296   1          SystemDelay_translate_To_Dsp_Processor(1);
 297   1          devTunerWrite( *pwResultFreq); // setting parameteer
 298   1          SystemDelay_translate_To_Dsp_Processor(1);
 299   1          msVDReset();
 300   1          SystemDelay_translate_To_Dsp_Processor(1);
 301   1          if (!(msVDGetSyncStable(10,20)))
 302   1              return TN_SCAN_ERR;
C51 COMPILER V8.18   DEVTUNER                                                              09/29/2009 23:58:04 PAGE 6   

 303   1              g_bSaveChannel = TRUE;
 304   1              return TRUE; // find Channel
 305   1      }
 306          
 307          void devSetSWF(BYTE ColorSoundSystem)
 308          {
 309   1          BYTE tempchroamvalue;
 310   1          tempchroamvalue=((g_TVChSetting.TvCurChannelMisc&ColorSysMask)>>4)%CHROMA_NUMS;
 311   1      
 312   1              switch(tempchroamvalue)
 313   1              {
 314   2                  case CHROMA_AUTO:
 315   2                      devTunerSetChromaToPal();
 316   2                          break;
 317   2                  case CHROMA_PAL:
 318   2                      devTunerSetChromaToPal();
 319   2                          break;
 320   2                  case CHROMA_NTSC:
 321   2                      devTunerSetChromaToNtsc();
 322   2                          break;
 323   2                  case CHROMA_SECAM:
 324   2                      devTunerSetChromaToPal();
 325   2                          break;
 326   2          }
 327   1      
 328   1              switch((ColorSoundSystem&SoundSysMask)%TV_SOUND_NUMS)
 329   1          {
 330   2              case TV_SOUND_BG:
 331   2                  devTunerSetSoundToPalBG();
 332   2                  break;
 333   2              case TV_SOUND_I:
 334   2                          devTunerSetSoundToPalI();
 335   2                      break;
 336   2              case TV_SOUND_M:
 337   2                  if(tempchroamvalue==CHROMA_AUTO||tempchroamvalue==CHROMA_NTSC)
 338   2                      devTunerSetChromaToNtsc();
 339   2                  devTunerSetSoundToNTSCMN();
 340   2                  break;
 341   2              case TV_SOUND_L:
 342   2                  if(tempchroamvalue==CHROMA_AUTO||tempchroamvalue==CHROMA_SECAM)
 343   2                   devTunerSetChromaToSECAM();
 344   2                  devTunerSetSoundToSECAML();
 345   2                  break;
 346   2              default:
 347   2              case TV_SOUND_DK:
 348   2                  devTunerSetSoundToPalDK();
 349   2                  break;
 350   2          }
 351   1      }
 352          
 353          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    738    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      5    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V8.18   DEVTUNER                                                              09/29/2009 23:58:04 PAGE 7   


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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