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

📄 ad9854.lst

📁 AD9854的C51控制程序
💻 LST
字号:
C51 COMPILER V8.02   AD9854                                                                07/31/2007 11:02:36 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include <string.h>
   4          
   5          #define uchar unsigned char
   6          #define uint  unsigned int
   7          
   8          sbit reset=P3^4;
   9          sbit SPSET=P3^5;
  10          sbit WR_LOW=P3^6;
  11          sbit RD_LOW=P3^7;
  12          sbit RAMP=P2^6;
  13          sbit FDATA=P2^7;
  14          
  15          uchar data0;
  16          //延时程序
  17          void AD9854_delay(int time)
  18          {
  19   1          int i;
  20   1          for(i = 0; i < time; i++)
  21   1          {
  22   2              _nop_();
  23   2              _nop_();
  24   2              _nop_();
  25   2              _nop_();
  26   2          }
  27   1      }
  28          
  29          //复位
  30          void AD9854_reset(void)
  31          {
  32   1          reset=1;
  33   1              AD9854_delay(5000);
  34   1              reset=0;
  35   1      }
  36          
  37          
  38          
  39          
  40          //写一个字节
  41          void AD9854_ParallelSendByte(uchar addr,uchar data1)
  42          {
  43   1              P2=addr;
  44   1              P0=data1;
  45   1              WR_LOW=0;
  46   1              WR_LOW=1;
  47   1              
  48   1      }
  49          
  50          
  51          uchar AD9854_ParallelReadByte(uchar addr)
  52          {
  53   1          uchar result;
  54   1          RD_LOW=1;
  55   1              P1=0xff;
C51 COMPILER V8.02   AD9854                                                                07/31/2007 11:02:36 PAGE 2   

  56   1          P1 = (addr & 0x3f);
  57   1          RD_LOW=0;
  58   1          result = P2;
  59   1          RD_LOW=1;
  60   1          return result;
  61   1      }
  62          
  63          
  64          //相位寄存器1控制字
  65          void AD9854_ParallelSetPhase1(uchar *phase)
  66          { 
  67   1              data0=*phase;
  68   1          AD9854_ParallelSendByte(0x00,data0);
  69   1              AD9854_delay(5);
  70   1              data0=*(phase+1);
  71   1              AD9854_ParallelSendByte(0x01,data0);
  72   1              AD9854_delay(5);
  73   1      
  74   1      }
  75          
  76          
  77          //相位寄存器2控制字
  78          void AD9854_ParallelSetPhase2(uchar *phase)
  79          { 
  80   1              data0=*phase;
  81   1          AD9854_ParallelSendByte(0x02, data0);
  82   1              AD9854_delay(5);
  83   1              data0=*(phase+1);
  84   1          AD9854_ParallelSendByte(0x03, data0);
  85   1              AD9854_delay(5);
  86   1      }
  87          
  88          
  89          //频率寄存器1控制字
  90          void AD9854_ParallelSetFreq1(uchar *freq)
  91          {
  92   1          uchar i,freq_addr;
  93   1              freq_addr=0x04;
  94   1              for(i=0;i<6;i++)
  95   1              {
  96   2                  data0=*(freq+i);
  97   2                  AD9854_ParallelSendByte(freq_addr+i,data0);
  98   2                      AD9854_delay(5);
  99   2              }
 100   1      }
 101          
 102          
 103          //频率寄存器2控制字
 104          void AD9854_ParallelSetFreq2(uchar *freq)
 105          {
 106   1          uchar i,freq_addr,data0;
 107   1              freq_addr=0x0A;
 108   1              for(i=0;i<6;i++)
 109   1              {
 110   2                  data0=*(freq+i);
 111   2                  AD9854_ParallelSendByte(freq_addr+i, data0);
 112   2                      AD9854_delay(5);
 113   2              }
 114   1      }
 115          
 116          
 117          //DELTA Frequency Word
C51 COMPILER V8.02   AD9854                                                                07/31/2007 11:02:36 PAGE 3   

 118          void AD9854_ParallelSetDFW(uchar *delta)
 119          {
 120   1          uchar i,delta_addr;
 121   1              delta_addr=0x10;
 122   1              for(i=0;i<6;i++)
 123   1              {
 124   2                  data0=*(delta+i);
 125   2                  AD9854_ParallelSendByte(delta_addr, data0);
 126   2                      AD9854_delay(5);
 127   2              }
 128   1      }
 129          
 130          
 131          //内部时钟寄存器控制字
 132          void AD9854_ParallelSetUDClk(uchar *uclk)
 133          {
 134   1          uchar i,uclk_addr;
 135   1          uclk_addr=0x16;
 136   1          for(i=0;i<4;i++)
 137   1              {
 138   2                  data0=*(uclk+i);
 139   2                  AD9854_ParallelSendByte(uclk_addr,data0);
 140   2                      AD9854_delay(5);
 141   2              }
 142   1      }
 143          
 144          
 145          //斜率寄存器控制字
 146          void AD9854_ParallelSetRamp(uchar *ramp)
 147          {
 148   1          uchar i,ramp_addr;
 149   1              ramp_addr=0x1A;
 150   1              for(i=0;i<3;i++)
 151   1              {
 152   2                  data0=*(ramp+i); 
 153   2                  AD9854_ParallelSendByte(ramp_addr,data0);
 154   2                      AD9854_delay(5);
 155   2              }
 156   1      }
 157          
 158          
 159          //特殊功能寄存器
 160          void AD9854_ParallelSetSpecialWord(uchar *SWord)
 161          {
 162   1          uchar i,Special_addr;
 163   1              Special_addr=0x1D;
 164   1              for(i=0;i<4;i++)
 165   1              {
 166   2                  data0=*(SWord+i); 
 167   2                  AD9854_ParallelSendByte(Special_addr,data0);
 168   2                      AD9854_delay(5);
 169   2              }
 170   1      }
 171          
 172          
 173          //输出振幅寄存器控制字 
 174          void AD9854_ParallelSetOutkey(bit mark,uchar *key)
 175          {
 176   1          uchar i,Outkey_addr;
 177   1              if(mark==0)
 178   1                Outkey_addr=0x21;             //输出I振幅寄存器地址
 179   1              else
C51 COMPILER V8.02   AD9854                                                                07/31/2007 11:02:36 PAGE 4   

 180   1                Outkey_addr=0x23;         //输出Q振幅寄存器地址
 181   1              for(i=0;i<2;i++)
 182   1              {
 183   2                  data0=*(key+i); 
 184   2                  AD9854_ParallelSendByte(Outkey_addr,data0);
 185   2                      AD9854_delay(5);
 186   2              }
 187   1      }
 188          
 189          
 190          //输出振幅斜率寄存器控制字
 191          void ParallelSetOutkeyRamp(uchar Key_ramp)
 192          {
 193   1          AD9854_ParallelSendByte(0x25, Key_ramp);
 194   1              AD9854_delay(5);
 195   1      }
 196          
 197          
 198          //QDAC
 199          void AD9854_ParallelSetQDAC(uchar *QDAC)
 200          {
 201   1          uchar i,QDAC_addr;
 202   1              QDAC_addr=0x26;
 203   1              for(i=0;i<2;i++)
 204   1              {
 205   2                  data0=*(QDAC+i); 
 206   2                  AD9854_ParallelSendByte(QDAC_addr, data0);
 207   2                      AD9854_delay(5);
 208   2              }
 209   1      }
 210          
 211          //初始化
 212          void Init9854(void)
 213          {
 214   1          AD9854_reset();
 215   1              WR_LOW=1;
 216   1              RD_LOW=1;
 217   1      }
 218          
 219          
 220          void main(void) 
 221          {
 222   1         uchar udclk[4]={0x00,0x00,0x09,0xc3};
 223   1         uchar mode1[4]={0x10,0x44,0x01,0x00};   
 224   1         uchar frequency[6]={0x05,0x1E,0xB8,0x51,0xEB,0x85};
 225   1         uchar shape_key[2]={0x06,0x00};
 226   1         uchar *data4;  
 227   1         Init9854();
 228   1        /* uchar i;
 229   1         P0=0x00;
 230   1         Init9854();
 231   1         AD9854_ParallelSendByte(0x04,0xAA);
 232   1         AD9854_IOUpdate();
 233   1         P0=AD9854_ParallelReadByte(0x04);  */
 234   1         while(1)
 235   1         {
 236   2         data4=udclk;
 237   2         AD9854_ParallelSetUDClk(data4);
 238   2         data4=mode1;
 239   2         AD9854_ParallelSetSpecialWord(data4);
 240   2         data4=frequency;
 241   2         AD9854_ParallelSetFreq1(data4);
C51 COMPILER V8.02   AD9854                                                                07/31/2007 11:02:36 PAGE 5   

 242   2         AD9854_delay(500);
 243   2         }
 244   1         
 245   1      }       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    662    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      59
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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