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

📄 ad9833.lst

📁 基于51单片机的DDS正弦波发生程序
💻 LST
字号:
C51 COMPILER V8.05a   AD9833                                                               08/26/2007 05:51:29 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE AD9833
OBJECT MODULE PLACED IN ad9833.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad9833.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          sbit    dds_en=P1^5;
   3          sbit    dds_clk=P1^6;
   4          sbit    dds_dat=P1^7;
   5          unsigned        char    control;
   6          void delay(unsigned     int     T)
   7          {
   8   1              while(T){
   9   2              T--;
  10   2              }
  11   1      }
  12          void    write_2byte(unsigned    int a){         //write 2 byte to dds
  13   1              unsigned char   i       ;
  14   1              dds_clk=1;
  15   1              dds_dat=1;
  16   1              dds_en=1;
  17   1              control=0;
  18   1              delay(1000);
  19   1              dds_clk=1;
  20   1              delay(2);
  21   1              dds_en=0;
  22   1              for(i=0;i<16;i++){
  23   2                      if(a&0x8000){dds_dat=1;}
  24   2                      else    dds_dat=0;
  25   2                      dds_clk=0;
  26   2                      delay(5);
  27   2                      dds_clk=1;
  28   2                      a=a<<1;
  29   2              }
  30   1              delay(2);
  31   1              dds_en=1;
  32   1              dds_clk=0;
  33   1              delay(1000);
  34   1              control=1;
  35   1              }
  36          
  37                  void    init_dds(void){
  38   1                      write_2byte(0x2100);
  39   1                      write_2byte(0x2000);
  40   1                      write_2byte(0x4000);
  41   1                      write_2byte(0x403F);
  42   1                      write_2byte(0x8000);
  43   1                      write_2byte(0x803F);
  44   1                      write_2byte(0xC000);
  45   1                      write_2byte(0xF000);
  46   1                      write_2byte(0x2000);
  47   1                      }
  48                  void    output(unsigned long freq_value){                       
  49   1                      unsigned long dds;
  50   1                      unsigned int dds1,dds2;
  51   1                      dds=freq_value*11.18481067;
  52   1                      dds=dds<<2;
  53   1                      dds1=dds;
  54   1                      dds2=dds>>16;
  55   1                      dds1=dds1>>2;
C51 COMPILER V8.05a   AD9833                                                               08/26/2007 05:51:29 PAGE 2   

  56   1                      dds2=dds2&0x7FFF;
  57   1                      dds2=dds2|0x4000;
  58   1                      dds1=dds1&0x7FFF;
  59   1                      dds1=dds1|0x4000;
  60   1                      write_2byte(0x2000);
  61   1                      write_2byte(dds1);
  62   1                      write_2byte(dds2);
  63   1                      }
  64                          void    scan(unsigned   long    first,unsigned  long    step,unsigned   long    end){
  65   1                              unsigned        long    temp,jj;
  66   1                              for(temp=first;temp<end;temp=temp+step){
  67   2                                      output(temp);
  68   2                                              for(jj=0;jj<100;jj++){ 
  69   3                                                      delay(1000);
  70   3                                      }
  71   2                      }
  72   1      }                       
  73                  void main(){
  74   1                                                                                                                                                                                                       //
  75   1                      init_dds();
  76   1              //      output(50) ;
  77   1                      while(1){
  78   2                      scan(1000,10000,1000000);
  79   2                      
  80   2                      
  81   2              }       
  82   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    419    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      26
   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 + -