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

📄 driver9954.lst

📁 AD9954控制C51以及产生ASK、PSK等信号
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE DRIVER9954
OBJECT MODULE PLACED IN driver9954.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE driver9954.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "includes.h"
   2          //sbit  OSK=
   3          //sbit  IOSYNC=
   4          
   5          
   6          void delay(uint i)
   7          {
   8   1       while(i--);
   9   1      }
  10          void AD9954_RESET(void)
  11          {
  12   1       RESET=0;
  13   1       RESET=1;
  14   1       delay(100);
  15   1       RESET=0;
  16   1       CS=0;
  17   1       SCLK=1;
  18   1      }
  19          void AD9954_SENDBYTE(uchar dat)//发送一个字节的内容
  20          {
  21   1       uchar i=8;
  22   1       while(i--)
  23   1       {
  24   2        SCLK=0;
  25   2        
  26   2        if(dat&0x80)
  27   2        {
  28   3         SDIO=1;
  29   3        }
  30   2        else
  31   2        {
  32   3         SDIO=0;
  33   3        }
  34   2        SCLK=1;
  35   2        dat<<= 1;
  36   2       }
  37   1      }
  38          void UPDATE(void)
  39          {
  40   1       IOUPDATE=0;
  41   1       IOUPDATE=1;
  42   1       delay(10);
  43   1       IOUPDATE=0;
  44   1      }
  45          void AD9954_Initial(void)
  46          {
  47   1      //single tone
  48   1      AD9954_SENDBYTE(0x00);//地址0写操作
  49   1       AD9954_SENDBYTE(0x00);//
  50   1       AD9954_SENDBYTE(0x00);
  51   1       AD9954_SENDBYTE(0x00);
  52   1       AD9954_SENDBYTE(0x40);
  53   1       //linear sweep mode
  54   1       /*AD9954_SENDBYTE(0x00);//地址0写操作
  55   1       AD9954_SENDBYTE(0x00);//
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 2   

  56   1       AD9954_SENDBYTE(0x20);
  57   1       AD9954_SENDBYTE(0x00);
  58   1       AD9954_SENDBYTE(0x40);*/
  59   1      //
  60   1       AD9954_SENDBYTE(0x01);//地址1写操作
  61   1       AD9954_SENDBYTE(0x00);//
  62   1       AD9954_SENDBYTE(0x00);
  63   1       AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
  64   1      
  65   1      }
  66          void AD9954_SETFRE(float f)//single tone
  67          {
  68   1       union 
  69   1        {
  70   1         unsigned long int det1;
  71   1         struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
  72   1        }dat;  
  73   1        dat.det1=10.7374*f;//det=(f/fclk)x2^32=10.7374xf
  74   1        AD9954_SENDBYTE(0x04);//FTW0地址
  75   1        AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
  76   1        AD9954_SENDBYTE(dat.det2.dhl);
  77   1        AD9954_SENDBYTE(dat.det2.dlh);
  78   1        AD9954_SENDBYTE(dat.det2.dll);
  79   1        UPDATE();
  80   1      }
  81          void LINEARSWEEP(float f1,float f2)//linear sweep mode
  82          {
  83   1       union 
  84   1        {
  85   1         unsigned long int det1;
  86   1         struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
  87   1        }dat;
  88   1        dat.det1=10.7374*f1;
  89   1        AD9954_SENDBYTE(0x04);//FTW0地址
  90   1        AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
  91   1        AD9954_SENDBYTE(dat.det2.dhl);
  92   1        AD9954_SENDBYTE(dat.det2.dlh);
  93   1        AD9954_SENDBYTE(dat.det2.dll);
  94   1        dat.det1=10.7374*f2;
  95   1        AD9954_SENDBYTE(0x06);//FTW1地址
  96   1        AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
  97   1        AD9954_SENDBYTE(dat.det2.dhl);
  98   1        AD9954_SENDBYTE(dat.det2.dlh);
  99   1        AD9954_SENDBYTE(dat.det2.dll);
 100   1        AD9954_SENDBYTE(0x07);//NLSCW
 101   1        AD9954_SENDBYTE(0x01);
 102   1        AD9954_SENDBYTE(0x00);
 103   1        AD9954_SENDBYTE(0x00);
 104   1        AD9954_SENDBYTE(0x1b);
 105   1        AD9954_SENDBYTE(0xf4);
 106   1        AD9954_SENDBYTE(0x08);//RLSCW
 107   1        AD9954_SENDBYTE(0x01);
 108   1        AD9954_SENDBYTE(0x00);
 109   1        AD9954_SENDBYTE(0x01);
 110   1        AD9954_SENDBYTE(0xa3);
 111   1        AD9954_SENDBYTE(0x6f);
 112   1        UPDATE();
 113   1      }
 114          //实现4相的FSK
 115          void DirectSwitchFSK(float f1,float f2,float f3,float f4)
 116          {
 117   1      union 
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 3   

 118   1        {
 119   1         unsigned long int det1;
 120   1         struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
 121   1        }dat;
 122   1      
 123   1       AD9954_SENDBYTE(0x00);//地址0写操作
 124   1       AD9954_SENDBYTE(0x00);//打开RAM控制位驱动FTW
 125   1       AD9954_SENDBYTE(0x00);
 126   1       AD9954_SENDBYTE(0x00);
 127   1       AD9954_SENDBYTE(0x40);
 128   1      //
 129   1       AD9954_SENDBYTE(0x01);//地址1写操作
 130   1       AD9954_SENDBYTE(0x00);//
 131   1       AD9954_SENDBYTE(0x00);
 132   1       AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
 133   1       PS0=0;
 134   1       PS1=0;
 135   1       AD9954_SENDBYTE(0x07);
 136   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 137   1       AD9954_SENDBYTE(0x00);
 138   1       AD9954_SENDBYTE(0x00);//final address:0x000
 139   1       AD9954_SENDBYTE(0x00);//start address:0x000;
 140   1       AD9954_SENDBYTE(0x00);//RAM0工作于模式0,不停留位没有激活
 141   1       UPDATE();
 142   1       dat.det1=10.7374*f1;
 143   1       AD9954_SENDBYTE(0x0b);
 144   1       AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 145   1       AD9954_SENDBYTE(dat.det2.dhl);
 146   1       AD9954_SENDBYTE(dat.det2.dlh);
 147   1       AD9954_SENDBYTE(dat.det2.dll);
 148   1      
 149   1       PS0=1;//ram1
 150   1       PS1=0;
 151   1      
 152   1       AD9954_SENDBYTE(0x08);
 153   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 154   1       AD9954_SENDBYTE(0x00);
 155   1       AD9954_SENDBYTE(0x01);//final address:0x0001
 156   1       AD9954_SENDBYTE(0x04);//start address:0x0001
 157   1       AD9954_SENDBYTE(0x00);//RAM1工作于模式0,不停留位没有激活
 158   1      UPDATE();
 159   1       dat.det1=10.7374*f2;
 160   1       AD9954_SENDBYTE(0x0b);
 161   1       AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 162   1       AD9954_SENDBYTE(dat.det2.dhl);
 163   1       AD9954_SENDBYTE(dat.det2.dlh);
 164   1       AD9954_SENDBYTE(dat.det2.dll);
 165   1      
 166   1      PS0=0;//ram2
 167   1       PS1=1;
 168   1      
 169   1       AD9954_SENDBYTE(0x09);
 170   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 171   1       AD9954_SENDBYTE(0x00);
 172   1       AD9954_SENDBYTE(0x02);//final address:0x0002
 173   1       AD9954_SENDBYTE(0x08);//start address:0x0002
 174   1       AD9954_SENDBYTE(0x00);
 175   1       UPDATE();
 176   1      dat.det1=10.7374*f3;
 177   1        AD9954_SENDBYTE(0x0b);
 178   1        AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 179   1        AD9954_SENDBYTE(dat.det2.dhl);
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 4   

 180   1        AD9954_SENDBYTE(dat.det2.dlh);
 181   1        AD9954_SENDBYTE(dat.det2.dll);
 182   1       PS0=1;//ram3
 183   1       PS1=1;
 184   1       AD9954_SENDBYTE(0x0a);
 185   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 186   1       AD9954_SENDBYTE(0x00);
 187   1       AD9954_SENDBYTE(0x03);//final address:0x0003
 188   1       AD9954_SENDBYTE(0x0c);//start address:0x0003
 189   1       AD9954_SENDBYTE(0x00);  
 190   1       UPDATE();
 191   1       dat.det1=10.7374*f4;
 192   1        AD9954_SENDBYTE(0x0b);
 193   1        AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 194   1        AD9954_SENDBYTE(dat.det2.dhl);
 195   1        AD9954_SENDBYTE(dat.det2.dlh);
 196   1        AD9954_SENDBYTE(dat.det2.dll);
 197   1      
 198   1       AD9954_SENDBYTE(0x00);//地址0写操作
 199   1       AD9954_SENDBYTE(0x80);//打开RAM控制位驱动FTW
 200   1       AD9954_SENDBYTE(0x00);
 201   1       AD9954_SENDBYTE(0x00);
 202   1       AD9954_SENDBYTE(0x40);

⌨️ 快捷键说明

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