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

📄 ad9850-51

📁 用于安富莱DDS模块的程序AD9850-51
💻
字号:
C51 COMPILER V7.50   AD9851                                                                07/14/2009 20:47:15 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;  //P1.7口接AD9851的D7脚/PIN25
  52          //P1为8位数据口
  53          //***************************************************//
  54          //              ad9851复位(并口模式)                 //
  55          //---------------------------------------------------//
C51 COMPILER V7.50   AD9851                                                                07/14/2009 20:47:15 PAGE 2   

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

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

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


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 + -