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

📄 dds9851.lst

📁 采用AD9851设计的一个产生50M 方波
💻 LST
字号:
C51 COMPILER V7.50   DDS9851                                                               02/11/2009 16:16:26 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DDS9851
OBJECT MODULE PLACED IN dds9851.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dds9851.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************
   2          *文件名:DDS9851。C                                                     *
   3          *功能:  高频实验箱DDS程序。                                            *
   4          *作者:  杨乐                                                           *
   5          *日期:  2009年1月21日                                                  *
   6          ************************************************************************/
   7          #include <stdio.h >
   8          #include <intrins.h >
   9          #include "dds9851.h"
  10          #include "FMAMTABLE.H"
  11          /************************************************************************
  12          *作者:    杨乐                                                         *
  13          *函数名:  delay1                                                       *
  14          *功能:    延时                                                         *
  15          *入口参数:无                                                           *
  16          *返回值:  无                                                           *
  17          *日期:    2009年1月21日                                                *
  18          ************************************************************************/
  19          void delay1(void)
  20          {
  21   1          unsigned char i;
  22   1              i = 255;
  23   1              for (;i;i--);
  24   1      }
  25          /************************************************************************
  26          *作者:    杨乐                                                         *
  27          *函数名:  SetFreq                                                      *
  28          *功能:    DDS频率设置                                                  *
  29          *入口参数:double f,unsigned char p                                     *
  30          *返回值:  无                                                           *
  31          *日期:    2009年1月21日                                                *
  32          ************************************************************************/
  33          void SetFreq(double f,unsigned char p ) //* f 为频率值,p phase */
  34          {
  35   1              unsigned long a ;
  36   1              unsigned char W[5];
  37   1      
  38   1              if (p >= 32)
  39   1                 p = 0;
  40   1              W[0] = 0x01+(p<<3);
  41   1              /* 由频率计算相位阶距 */
  42   1              f *= 4294967296.0;
  43   1              a = f/MOS ;
  44   1      
  45   1              W[1] = a / 0x1000000;
  46   1              W[2] = (a / 0x10000) % 0x100;
  47   1              W[3] = (a / 0x100) % 0x100;
  48   1              W[4] = a % 0x100;
  49   1      
  50   1              outData(&W[0]);
  51   1      }
  52          /************************************************************************
  53          *作者:    杨乐                                                         *
  54          *函数名:  Init_DDS                                                     *
  55          *功能:    DDS初始化                                                    *
C51 COMPILER V7.50   DDS9851                                                               02/11/2009 16:16:26 PAGE 2   

  56          *入口参数:无                                                           *
  57          *返回值:  无                                                           *
  58          *日期:    2009年1月21日                                                *
  59          ************************************************************************/
  60          void Init_DDS(void) 
  61          {
  62   1              SetFreq(1000,0);
  63   1      /*      unsigned long  a ;
  64   1              unsigned char W[5];
  65   1      
  66   1              // 相位初值为0,power up ,6倍频
  67   1              W[0] = 0x01;
  68   1          a = 1000.0;
  69   1              a *= 4294967296.0 ;
  70   1              a = a/MOS;
  71   1      
  72   1              W[1] = a / 0x1000000;
  73   1              W[2] = (a / 0x10000) % 0x100;
  74   1              W[3] = (a / 0x100) % 0x100;
  75   1              W[4] = a % 0x100;
  76   1      
  77   1              outData(&(W[0]));
  78   1      */
  79   1      }
  80          
  81          void outData(unsigned char * w)
  82          {
  83   1              unsigned char i;
  84   1      
  85   1              DDS_FQ_UD = 0;
  86   1      
  87   1              for (i=0; i<5; i++)
  88   1              {
  89   2                      _nop_();
  90   2                  DDS_W_CLK = 0;
  91   2                      _nop_();
  92   2                      _nop_();
  93   2                      DDS_Data = w[i];
  94   2                      _nop_();
  95   2                      _nop_();
  96   2                      DDS_W_CLK = 1;
  97   2                      _nop_();
  98   2                      _nop_();
  99   2              }
 100   1      
 101   1              DDS_FQ_UD = 1;
 102   1              _nop_();
 103   1              _nop_();
 104   1              _nop_();
 105   1              _nop_();
 106   1              DDS_FQ_UD = 0;
 107   1      }
 108          
 109          /*
 110          void SetAM(unsigned char * QUIT)
 111          {
 112                  unsigned char i,tmph,tmpl;
 113          
 114                  SetReg(0,0,0,0x04,COMMAND);
 115                  SetFreq(6500000,FREQ0);
 116                  SelectFreqReg(0);
 117                  while (!(*QUIT))
C51 COMPILER V7.50   DDS9851                                                               02/11/2009 16:16:26 PAGE 3   

 118                  {
 119                          for (i  = 0 ; i< 36; i++)
 120                          {
 121                                  tmph = (AmTable[i]>>8);
 122                                  tmpl = AmTable[i]&0x00FF;
 123                                  SetReg(0,0,tmph,tmpl,IQMOD);
 124                          }
 125                  }
 126          }
 127          */
 128          /************************************************************************
 129          *作者:    杨乐                                                         *
 130          *函数名:  SetFM                                                        *
 131          *功能:    DDS产生FM信号                                                *
 132          *入口参数:unsigned char * QUIT                                         *
 133          *返回值:  无                                                           *
 134          *日期:    2009年1月21日                                                *
 135          ************************************************************************/
 136          void SetFM(unsigned char * QUIT)
 137          {
 138   1              int i;
 139   1              SetFreq(6500000,0);
 140   1      
 141   1              while (!(*QUIT))
 142   1              {
 143   2                      for (i  = 0 ; i< 32; i++)
 144   2                      {
 145   3                              SetFreq(FmTable[i],0);
 146   3                      }
 147   2              }
 148   1      }
 149          /************************************************************************
 150          *作者:    杨乐                                                         *
 151          *函数名:  SetPSK                                                       *
 152          *功能:    DDS产生PSK信号                                               *
 153          *入口参数:unsigned char * QUIT                                         *
 154          *返回值:  无                                                           *
 155          *日期:    2009年1月21日                                                *
 156          ************************************************************************/
 157          void SetPSK(unsigned char * QUIT)
 158          {
 159   1              unsigned char W;
 160   1      
 161   1              SetFreq(200000,0);
 162   1      
 163   1              while (!(*QUIT))
 164   1              {
 165   2                      W = 0x81;
 166   2                      DDS_FQ_UD = 0;
 167   2                      _nop_();
 168   2                  DDS_W_CLK = 0;
 169   2                      _nop_();
 170   2                      _nop_();
 171   2                      DDS_Data = W;
 172   2                      _nop_();
 173   2                      _nop_();
 174   2                      DDS_W_CLK = 1;
 175   2                      _nop_();
 176   2                      _nop_();
 177   2                      DDS_FQ_UD = 1;    
 178   2                      delay1();
 179   2                      W = 0x01;
C51 COMPILER V7.50   DDS9851                                                               02/11/2009 16:16:26 PAGE 4   

 180   2                      DDS_FQ_UD = 0;
 181   2                      _nop_();
 182   2                  DDS_W_CLK = 0;
 183   2                      _nop_();
 184   2                      _nop_();
 185   2                      DDS_Data = W;
 186   2                      _nop_();
 187   2                      _nop_();
 188   2                      DDS_W_CLK = 1;
 189   2                      _nop_();
 190   2                      _nop_();
 191   2                      DDS_FQ_UD = 1;    
 192   2                      delay1();
 193   2              }
 194   1      }
 195          /************************************************************************
 196          *作者:    杨乐                                                         *
 197          *函数名:  SetASK                                                       *
 198          *功能:    DDS产生ASK信号                                               *
 199          *入口参数:unsigned char * QUIT                                         *
 200          *返回值:  无                                                           *
 201          *日期:    2009年1月21日                                                *
 202          ************************************************************************/
 203          void SetASK(unsigned char * QUIT)
 204          {
 205   1      
 206   1              SetFreq(500000,0);
 207   1      
 208   1              while (!(*QUIT))
 209   1              {
 210   2                      SetFreq(000000,0);
 211   2                      delay1();
 212   2                      SetFreq(500000,0);
 213   2                      delay1();
 214   2              }
 215   1      }
 216          /************************************************************************
 217          *作者:    杨乐                                                         *
 218          *函数名:  SetFSK                                                       *
 219          *功能:    DDS产生FSK信号                                               *
 220          *入口参数:unsigned char * QUIT                                         *
 221          *返回值:  无                                                           *
 222          *日期:    2009年1月21日                                                *
 223          ************************************************************************/
 224          void SetFSK(unsigned char * QUIT)
 225          {
 226   1              
 227   1              while (!(*QUIT))
 228   1              {
 229   2                      SetFreq(100000,0);
 230   2                      _nop_();
 231   2                      _nop_();
 232   2                      SetFreq(50000,0);
 233   2                      _nop_();
 234   2                      _nop_();
 235   2              }
 236   1      }
 237          
 238          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.50   DDS9851                                                               02/11/2009 16:16:26 PAGE 5   

   CODE SIZE        =    483    ----
   CONSTANT SIZE    =    136    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      31
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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