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

📄 ad9954.lst

📁 基于AD9954的扫频仪程序设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #include "AD9954.h"
   3          
   4          unsigned long CFR1 =0;                          
   5          unsigned long CFR1SLAVE = 0x00800000;            
   6          unsigned long CFR2 = 0;                    
   7          unsigned long ASF;
   8          unsigned long ARR;  
   9          unsigned long FTW0;                           
  10          unsigned long POW0;                              
  11          unsigned long FTW1;
  12          unsigned long NLSCW=0xFF000053E2;
  13          unsigned long PLSCW=0xFF000053E2;
  14          unsigned long multfreq = 0xFFFFFFFF; //计算频率控制字的系数
  15          
  16          
  17          /***********************************************************************
  18          ** 函数名称:    端口操作
  19          ** 功能描述:    AD9954端口基本操作
  20          ** 输 入:          无     
  21          ** 输 出:      无
  22          ** 全局变量:    无
  23          ** 调用模块:    无
  24          ***********************************************************************/
  25          void SCLK_0(void)
  26          { 
  27   1        SCLK = 0;
  28   1      }
  29          
  30          
  31          void SCLK_1(void)
  32          {
  33   1        SCLK = 1;
  34   1      }
  35          
  36          
  37          void SDIO_0(void)
  38          {
  39   1        SDIO = 0;
  40   1      }
  41          
  42          
  43          void SDIO_1(void)
  44          {
  45   1        SDIO = 1;
  46   1      }
  47          
  48          
  49          void CS_Enable(void)
  50          {
  51   1        CS = 0;
  52   1      }
  53          
  54          
  55          void CS_Disable(void)
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 2   

  56          {
  57   1        CS = 1;
  58   1      }
  59          
  60          void CS2_Enable(void)
  61          {
  62   1        CS2 = 0;
  63   1      }
  64          
  65          void CS2_Disable(void)
  66          {
  67   1        CS2 = 1;
  68   1      }
  69          
  70          void IO_UPDATE_0(void)
  71          {
  72   1        IO_UPDATE = 0;
  73   1      }
  74          
  75          void IO_UPDATE_1(void)
  76          {
  77   1        IO_UPDATE = 1;
  78   1      }
  79          
  80          void IO_SYNC_1(void)
  81          {
  82   1        IO_SYNC = 1;
  83   1      }
  84          
  85          void IO_SYNC_0(void)
  86          {
  87   1        IO_SYNC = 0;
  88   1      }
  89          
  90          void PS0_Set_High(void)
  91          {
  92   1        PS0 = 1;
  93   1      }
  94          
  95          void PS0_Set_Low(void)
  96          {
  97   1        PS0 = 0;
  98   1      }
  99          
 100          void PS1_Set_High(void)
 101          {
 102   1        PS1 = 1;
 103   1      }
 104          
 105          void PS1_Set_Low(void)
 106          {
 107   1        PS1 = 0;
 108   1      }
 109          
 110          
 111          /***********************************************************************
 112          ** 函数名称:    IO9954_Init
 113          ** 功能描述:    IO_Init
 114          ** 输 入:          无      
 115          ** 输 出:      无
 116          ** 全局变量:    无
 117          ** 调用模块:    无
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 3   

 118          ***********************************************************************/
 119          void IO9954_Init()
 120          {       
 121   1      
 122   1        PWR=0;
 123   1        RET=0;
 124   1        CS2  = 0;
 125   1        CLKMS=0;
 126   1        
 127   1        IO_UPDATE = 0;
 128   1        IO_SYNC       = 0;
 129   1        SDIO          = 0;
 130   1        SCLK          = 0;
 131   1        CS            = 0;
 132   1        SDO           = 0;
 133   1      }
 134          
 135          /***********************************************************************
 136          ** 函数名称:    nNop
 137          ** 功能描述:    US级软件延时(不精确)
 138          ** 输 入:          延时参数,值越大时延时越久      
 139          ** 输 出:      无
 140          ** 全局变量:    无
 141          ** 调用模块:    无
 142          ***********************************************************************/
 143          void nNop(unsigned long nValue)
 144          {
 145   1        unsigned long i;
 146   1        for(i=nValue;i>0;i--);
 147   1      }
 148          
 149          /***********************************************************************
 150          ** 函数名称:    WriteByte
 151          ** 功能描述:    向AD9954发送一字节数据 MSB FIRST
 152          ** 输 入:          unsigned char data   发送的数据     
 153          ** 输 出:      无
 154          ** 全局变量:    无
 155          ** 调用模块:    端口操作 nNop
 156          ***********************************************************************/
 157          void WriteByte(unsigned char Data)
 158          {
 159   1        unsigned char k;
 160   1        for(k=0;k<8;k++) 
 161   1        { 
 162   2         SCLK_0();
 163   2         nNop(4);         //延时很重要
 164   2         if((Data&0x80) == 0x80)
 165   2           SDIO_1();
 166   2         else
 167   2           SDIO_0();
 168   2         Data = Data << 1;
 169   2         nNop(2);        //延时很重要
 170   2         SCLK_1();
 171   2         nNop(4);        //延时很重要
 172   2        }
 173   1      }
 174          
 175          
 176          /***********************************************************************
 177          ** 函数名称:    ReadByte
 178          ** 功能描述:    从AD9954读取一字节数据 MSB FIRST
 179          ** 输 入:          无   
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 4   

 180          ** 输 出:      unsigned char 读回的数据
 181          ** 全局变量:    无
 182          ** 调用模块:    端口操作 
 183          ***********************************************************************/
 184          unsigned char ReadByte(void)
 185          {
 186   1       unsigned char Data=0;
 187   1       unsigned char k;
 188   1       SDIO = 0;
 189   1       for(k=0;k<8;k++)
 190   1         { 
 191   2          SCLK_0();
 192   2          nNop(1);
 193   2          nNop(1);
 194   2          SCLK_1();
 195   2          nNop(1);
 196   2          nNop(1);
 197   2          Data = Data << 1;
 198   2          if(SDIO)
 199   2                {
 200   3                  Data |= 0x01;
 201   3                } 
 202   2         }
 203   1        SDIO = 1;
 204   1        return Data;
 205   1      }
 206          
 207          
 208          
 209          /***********************************************************************
 210          ** 函数名称:    RW_Reg
 211          ** 功能描述:    AD9954读写寄存器操作
 212          ** 输 入:          unsigned char addr  寄存器地址
 213          **              unsigned char *buf  写寄存器: 指向发送数据的指针
 214          **                                  读寄存器: 指向读回数据的指针
 215          **              unsigned char num   发送或读回的数据长度 num Byte
 216          **              unsigned char rw    读写选择 1 读  0 写
 217          ** 输 出:      无
 218          ** 全局变量:    无
 219          ** 调用模块:    ReadByte  WriteByte
 220          ***********************************************************************/
 221          void RW_Reg(unsigned char addr,unsigned char *buf,unsigned char num,
 222                      unsigned char rw)
 223          {
 224   1       unsigned char ins;      
 225   1       if(rw == 1)
 226   1         {
 227   2          ins = addr | 0x80;
 228   2          WriteByte(ins);
 229   2           do{
 230   3                 buf[num-1] = ReadByte();
 231   3                 num--;
 232   3                 nNop(5);
 233   3            }
 234   2          while(num);
 235   2         }
 236   1       else

⌨️ 快捷键说明

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