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

📄 ad9850-51

📁 用于安富莱DDS模块的程序AD9850-51
💻
字号:
C51 COMPILER V7.50   AD9851                                                                12/19/2008 20:24:16 PAGE 1   


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

line level    source

   1          //***************************************************//
   2          //函数1:           ad9851_reset()                    //
   3          //函数2:           ad9851_reset_serial()             //
   4          //函数3:           ad9851_wr_parrel(unsigned char w0,double frequence)//
   5          //函数4:           ad9851_wr_serial(unsigned char w0,double frequence)//
   6          //版本:              V1.1                            //
   7          //日期:             2008/12/19                      //
   8          //修改日期:         2008/12/19                      //
   9          //编写者:         my_dds(my_dds@163.com)            //
  10          //***************************************************//
  11          //                  子程序说明                       //
  12          //***************************************************//
  13          //函数1:  ad9851_reset()
  14          //        复位ad9851,之后为并口写入模式        
  15          //函数2:  ad9851_reset_serial()
  16          //        复位ad9851,之后为串口写入模式
  17          //函数3:  ad9851_wr_parrel(unsigned char w0,double frequence)
  18          //        并口写ad9851数据,w0为ad9851中w0的数据,frequence
  19          //        为写入的频率  
  20          //函数4:  ad9851_wr_serial(unsigned char w0,double frequence)
  21          //        串口写ad9851数据,w0为ad9851中w0的数据,frequence
  22          //        为写入的频率  
  23          //需定义的位:
  24                   //ad9851_w_clk    ;
  25                   //ad9851_fq_up    ;
  26                   //ad9851_rest     ;
  27                   //ad9851_bit_data ;
  28          //例:
  29                   //sbit ad9851_w_clk    =P2^2;
  30                   //sbit ad9851_fq_up    =P2^1;
  31                   //sbit ad9851_rest     =P2^0;
  32                   //sbit ad9851_bit_data =P1^7;
  33          //***************************************************//
  34          //                 写数据说明                        //
  35          //***************************************************//
  36          //写数据例:
  37          //       ad9851_reset()
  38          //       wr_lcd02_data(unsigned char x)
  39          //       ad9851_wr_parrel(0x01,1000)
  40          //       ad9851_wr_serial(0x01,1000)
  41          //***************************************************//
  42          //---------------------------------------------------//
  43          //                   程序                            //
  44          //---------------------------------------------------//
  45          # include <reg51.h>
  46          # include <stdio.h>
  47          # include <intrins.h>
  48          sbit ad9851_w_clk    =P2^2;  //P2.2口接AD9851的w_clk脚/PIN7
  49          sbit ad9851_fq_up    =P2^1;  //P2.1口接AD9851的fq_up脚/PIN8
  50          sbit ad9851_rest     =P2^0;  //P2.0口接AD9851的rest脚/PIN12
  51          sbit ad9851_bit_data =P1^7;  //P2.2口接AD9851的D7脚/PIN25
  52          //***************************************************//
  53          //              ad9851复位(并口模式)                 //
  54          //---------------------------------------------------//
  55          void ad9851_reset()
C51 COMPILER V7.50   AD9851                                                                12/19/2008 20:24:16 PAGE 2   

  56          {
  57   1      ad9851_w_clk=0;
  58   1      ad9851_fq_up=0;
  59   1      //rest信号
  60   1      ad9851_rest=0;
  61   1      ad9851_rest=1;
  62   1      ad9851_rest=0;
  63   1      }
  64          //***************************************************//
  65          //              ad9851复位(并口模式)                 //
  66          //---------------------------------------------------//
  67          void ad9851_reset_serial()
  68          {
  69   1      ad9851_w_clk=0;
  70   1      ad9851_fq_up=0;
  71   1      //rest信号
  72   1      ad9851_rest=0;
  73   1      ad9851_rest=1;
  74   1      ad9851_rest=0;
  75   1      //w_clk信号
  76   1      ad9851_w_clk=0;
  77   1      ad9851_w_clk=1;
  78   1      ad9851_w_clk=0;
  79   1      //fq_up信号
  80   1      ad9851_fq_up=0;
  81   1      ad9851_fq_up=1;
  82   1      ad9851_fq_up=0;
  83   1      }
  84          //***************************************************//
  85          //          向ad9851中写命令与数据(并口)             //
  86          //---------------------------------------------------//
  87          void ad9851_wr_parrel(unsigned char w0,double frequence)
  88          {
  89   1      unsigned char w;
  90   1      long int y;
  91   1      double x;
  92   1      //计算频率的HEX值
  93   1      x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
  94   1      //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
  95   1      frequence=frequence/1000000;
  96   1      frequence=frequence*x;
  97   1      y=frequence;
  98   1      //写w0数据
  99   1      w=w0;   
 100   1      P1=w;      //w0
 101   1      ad9851_w_clk=1;
 102   1      ad9851_w_clk=0;
 103   1      //写w1数据
 104   1      w=(y>>24);
 105   1      P1=w;      //w1
 106   1      ad9851_w_clk=1;
 107   1      ad9851_w_clk=0;
 108   1      //写w2数据
 109   1      w=(y>>16);
 110   1      P1=w;      //w2
 111   1      ad9851_w_clk=1;
 112   1      ad9851_w_clk=0;
 113   1      //写w3数据
 114   1      w=(y>>8);
 115   1      P1=w;      //w3
 116   1      ad9851_w_clk=1;
 117   1      ad9851_w_clk=0;
C51 COMPILER V7.50   AD9851                                                                12/19/2008 20:24:16 PAGE 3   

 118   1      //写w4数据
 119   1      w=(y>>=0);
 120   1      P1=w;      //w4
 121   1      ad9851_w_clk=1;
 122   1      ad9851_w_clk=0;
 123   1      //移入始能
 124   1      ad9851_fq_up=1;
 125   1      ad9851_fq_up=0;
 126   1      }
 127          //***************************************************//
 128          //          向ad9851中写命令与数据(串口)             //
 129          //---------------------------------------------------//
 130          void ad9851_wr_serial(unsigned char w0,double frequence)
 131          {
 132   1      unsigned char i,w;
 133   1      long int y;
 134   1      double x;
 135   1      //计算频率的HEX值
 136   1      x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
 137   1      //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !!!
 138   1      frequence=frequence/1000000;
 139   1      frequence=frequence*x;
 140   1      y=frequence;
 141   1      //写w4数据
 142   1      w=(y>>=0);
 143   1      for(i=0;i<8;i++)
 144   1      {
 145   2      ad9851_bit_data=(w>>i)&0x01;
 146   2      ad9851_w_clk=1;
 147   2      ad9851_w_clk=0;
 148   2      }
 149   1      //写w3数据
 150   1      w=(y>>8);
 151   1      for(i=0;i<8;i++)
 152   1      {
 153   2      ad9851_bit_data=(w>>i)&0x01;
 154   2      ad9851_w_clk=1;
 155   2      ad9851_w_clk=0;
 156   2      }
 157   1      //写w2数据
 158   1      w=(y>>16);
 159   1      for(i=0;i<8;i++)
 160   1      {
 161   2      ad9851_bit_data=(w>>i)&0x01;
 162   2      ad9851_w_clk=1;
 163   2      ad9851_w_clk=0;
 164   2      }
 165   1      //写w1数据
 166   1      w=(y>>24);
 167   1      for(i=0;i<8;i++)
 168   1      {
 169   2      ad9851_bit_data=(w>>i)&0x01;
 170   2      ad9851_w_clk=1;
 171   2      ad9851_w_clk=0;
 172   2      }
 173   1      //写w0数据
 174   1      w=w0;   
 175   1      for(i=0;i<8;i++)
 176   1      {
 177   2      ad9851_bit_data=(w>>i)&0x01;
 178   2      ad9851_w_clk=1;
 179   2      ad9851_w_clk=0;
C51 COMPILER V7.50   AD9851                                                                12/19/2008 20:24:16 PAGE 4   

 180   2      }
 181   1      //移入始能
 182   1      ad9851_fq_up=1;
 183   1      ad9851_fq_up=0;
 184   1      }
 185          //***************************************************//
 186          //                   测试程序1000Hz                  //
 187          //---------------------------------------------------//
 188          main()
 189          {
 190   1      P0=0x00;
 191   1      P1=0x00;
 192   1      P2=0x00;
 193   1      P3=0x00;
 194   1      //---------------------------------------------------//
 195   1      //并行写1000Hz程序
 196   1      ad9851_reset();
 197   1      ad9851_wr_parrel(0x01,1000);
 198   1      //0X01为开六备频
 199   1      //ad9851_wr_parrel(0x00,1000);
 200   1      //0X00为不开六备频
 201   1      //---------------------------------------------------//
 202   1      //---------------------------------------------------//
 203   1      //串行写1000Hz程序
 204   1      //ad9851_reset_serial();
 205   1      //ad9851_wr_serial(0x01,1000);
 206   1      //0X01为开六备频
 207   1      //ad9851_wr_serial(0x00,1000);
 208   1      //0X00为不开六备频
 209   1      //---------------------------------------------------//
 210   1      while(1)
 211   1      {
 212   2      }
 213   1      }
 214          
 215          
 216          
 217          
 218          


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