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

📄 tea5767test.lst

📁 包中包含了几个SC52控制TEA5767编程用到得C语言测试程序
💻 LST
字号:
C51 COMPILER V7.08   TEA5767TEST                                                           09/09/2008 15:01:13 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE TEA5767TEST
OBJECT MODULE PLACED IN TEA5767test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TEA5767test.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X55.H>
   2          #include "wbtest.h"
   3          #include "COM.h"
   4          //----------------------------------------------------
   5          #include "iic.h"
   6          #define max_freq 108000
   7          #define min_freq 87500
   8          unsigned char radio_write_data[5]={0x29,0xc2,0x20,0x11,0x00};        
   9          //要写入TEA5767的数据
  10          unsigned char radio_read_data[5];        //TEA5767读出的状态
  11          unsigned int pll;
  12          unsigned long frequency;
  13          unsigned int default_pll=0x29c2;//0x29f9;        //默认存台的pll,87.8MHz
  14          //unsigned int max_pll=0x339b;            //108MHz时的pll,
  15          //unsigned int min_pll=9000;            //70MHz时的pll
  16          //------------------------------------------------------------
  17          void radio_write(void);
  18          void radio_read(void);
  19          void get_pll(void);
  20          void get_frequency(void);
  21          void search(bit mode);
  22          void auto_search(bit mode);
  23          //------------------------------------------------------------
  24          void radio_write(void)
  25          {
  26   1          unsigned char i;
  27   1          iic_start();
  28   1          iic_write8bit(0xc0);        //TEA5767写地址
  29   1          if(!iic_testack())
  30   1          {
  31   2              for(i=0;i<5;i++)
  32   2              {
  33   3                  iic_write8bit(radio_write_data[i]);
  34   3                  iic_ack();
  35   3              }
  36   2          }
  37   1          iic_stop();    
  38   1      }
  39          //--------------------------------------------------------------
  40          //读TEA5767状态,并转换成频率
  41          void radio_read(void)
  42          {
  43   1          unsigned char i;
  44   1          unsigned char temp_l,temp_h;
  45   1          pll=0;
  46   1          iic_start();
  47   1          iic_write8bit(0xc1);        //TEA5767读地址
  48   1          if(!iic_testack())
  49   1          {
  50   2              for(i=0;i<5;i++)
  51   2              {
  52   3                  radio_read_data[i]=iic_read8bit();
  53   3                  iic_ack();
  54   3              }
  55   2          }
C51 COMPILER V7.08   TEA5767TEST                                                           09/09/2008 15:01:13 PAGE 2   

  56   1          iic_stop();
  57   1          temp_l=radio_read_data[1];
  58   1          temp_h=radio_read_data[0];
  59   1          temp_h&=0x3f;
  60   1          pll=temp_h*256+temp_l;
  61   1          get_frequency();
  62   1      }
  63          //----------------------------------------------------------------
  64          //由频率计算PLL
  65          void get_pll(void)
  66          {
  67   1          unsigned char hlsi;
  68   1          unsigned int twpll=0;
  69   1      
  70   1          hlsi=radio_write_data[2]&0x10;
  71   1          if (hlsi)
  72   1              pll=(unsigned int)((float)((frequency+225)*4)/(float)32.768);    
  73   1      //频率单位:k
  74   1          else
  75   1              pll=(unsigned int)((float)((frequency-225)*4)/(float)32.768);    
  76   1      //频率单位:k
  77   1      }
  78          //----------------------------------------------------------------
  79          //由PLL计算频率
  80          void get_frequency(void)
  81          {
  82   1          unsigned char hlsi;
  83   1          unsigned int npll=0;
  84   1      
  85   1          npll=pll;
  86   1          hlsi=radio_write_data[2]&0x10;
  87   1          if (hlsi)
  88   1              frequency=(unsigned long)((float)(npll)*(float)8.192-225);    //频率单位:KHz
  89   1          else
  90   1              frequency=(unsigned long)((float)(npll)*(float)8.192+225);    //频率单位:KHz
  91   1      }
  92          //------------------------------------------------------------------------------------
  93          //手动设置频率,mode=1,+0.1MHz; mode=0:-0.1MHz ,不用考虑TEA5767用于搜台的相关位:SM,SUD
  94          void search(bit mode)
  95          {
  96   1          radio_read();        
  97   1          if(mode)
  98   1          {
  99   2              frequency+=100;
 100   2              if(frequency>max_freq)
 101   2                  frequency=min_freq;
 102   2          }
 103   1          else
 104   1          {
 105   2              frequency-=100;
 106   2              if(frequency<min_freq)
 107   2                  frequency=max_freq;
 108   2          }          
 109   1          get_pll();
 110   1          radio_write_data[0]=pll/256;
 111   1          radio_write_data[1]=pll%256;
 112   1          radio_write_data[2]=0x20;
 113   1          radio_write_data[3]=0x11;
 114   1          radio_write_data[4]=0x00;
 115   1          radio_write();
 116   1      }
 117          //--------------------------------------------------------------------
C51 COMPILER V7.08   TEA5767TEST                                                           09/09/2008 15:01:13 PAGE 3   

 118          //自动搜台,mode=1,频率增加搜台; mode=0:频率减小搜台,不过这个好像不能循环搜台
 119          void auto_search(bit mode)
 120          {
 121   1          radio_read();
 122   1          get_pll();
 123   1          if(mode) radio_write_data[2]=0xa0;
 124   1          else radio_write_data[2]=0x20;
 125   1                  
 126   1          radio_write_data[0]=pll/256+0x40;
 127   1          radio_write_data[1]=pll%256;    
 128   1          radio_write_data[3]=0x11;
 129   1          radio_write_data[4]=0x00;
 130   1          radio_write();
 131   1      
 132   1          radio_read();
 133   1          while(!(radio_read_data[0]&0x80))     //搜台成功标志
 134   1          {
 135   2              radio_read();
 136   2              //disp_freq(9,1);
 137   2                      Blink(5,3);
 138   2                      while(KEY1);
 139   2          }    
 140   1      }
 141          //----------------------------------------------------------
 142          void SetFrequency(void)
 143          {
 144   1              get_pll();
 145   1          radio_write_data[0]=pll/256;
 146   1          radio_write_data[1]=pll%256;
 147   1          radio_write_data[2]=0x20;
 148   1          radio_write_data[3]=0x11;
 149   1          radio_write_data[4]=0x00;
 150   1          radio_write();
 151   1      }
 152          //----------------------------------------------------------
 153          //##########################################################
 154          //----------------------------------------------------------
 155          void main(void)
 156          {
 157   1              unsigned long step;
 158   1      
 159   1              Init_Com();
 160   1              SendString("Hello,CUST!---FM TEA5767");CT();
 161   1      
 162   1              frequency=91500000;
 163   1              step=100000;
 164   1              SetFrequency();
 165   1              SendNumb((frequency/100000),4);CT();
 166   1      
 167   1              Blink(3,3);
 168   1      
 169   1              frequency=88000000;
 170   1      
 171   1              for(;;)
 172   1              {
 173   2                      
 174   2                      if(KEY3==0);
 175   2                      {
 176   3                              Blink(1,1);
 177   3                              if(KEY3==0)
 178   3                              {
 179   4                                      Blink(1,1);
C51 COMPILER V7.08   TEA5767TEST                                                           09/09/2008 15:01:13 PAGE 4   

 180   4                                      frequency+=step;
 181   4                                      SetFrequency();
 182   4                                      //SendNumbLong(frequency);CT();
 183   4                                      SendNumb((frequency/100000),4);CT();
 184   4                              }
 185   3                      }
 186   2                      if(KEY4==0);
 187   2                      {
 188   3                              Blink(1,1);
 189   3                              if(KEY4==0)
 190   3                              {
 191   4                                      Blink(1,1);
 192   4                                      frequency-=step;
 193   4                                      SetFrequency();
 194   4                                      //SendNumbLong(frequency);CT();
 195   4                                      SendNumb((frequency/100000),4);CT();
 196   4                              }
 197   3                      }
 198   2                      
 199   2                      /*
 200   2                      while(KEY3);
 201   2                      {
 202   2                              Blink(1,3);
 203   2                              frequency+=step;
 204   2                              SetFrequency();
 205   2                              //SendNumbLong(frequency);CT();
 206   2                              SendNumb((frequency/100000),4);CT();
 207   2                      }
 208   2                      */
 209   2      
 210   2                      Blink(5,1);
 211   2              }
 212   1              //while(KEY3);
 213   1      
 214   1              //auto_search(1);
 215   1      
 216   1              //for(;;) Blink(1,1);
 217   1      }
 218          //----------------------------------------------------------


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1408    ----
   CONSTANT SIZE    =     25    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      32
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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