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

📄 ad9851.lst

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 LST
字号:
C51 COMPILER V8.02   AD9851                                                                04/04/2008 19:55:14 PAGE 1   


C51 COMPILER V8.02, 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          /*函数名称: ad9851.c                                            */
   3          /*函数功能: 发送1hz--100khz的正弦波                             */ 
   4          /*参数说明: ctr_word[0]---------------------------------相位控制字
   5                           ctr_word[1,2,3,4]------------------------频率控制字
   6                                   D7------------------------------------------------P6.7
   7                                   D6------------------------------------------------P6.6
   8                                   D5------------------------------------------------P6.5
   9                                   D4------------------------------------------------P6.4
  10                                   D3------------------------------------------------P6.3
  11                                   D2------------------------------------------------P6.2
  12                                   D1------------------------------------------------P6.1
  13                                   D0------------------------------------------------P6.0
  14                                   W_CLK---------------------------------------------P3.5
  15                                        ------------------------------------字装入控制信号
  16                                   FQ_UD---------------------------------------------P3.6
  17                                        ----------------------------------频率更新控制信号
  18                                   RESET---------------------------------------------P3.7
  19                                            ------------------------------软件复位,高电平有效
  20                                                                               */    
  21          /*有无返回: 有                                                  */
  22          /*修改记录: 无修改记录                                          */
  23          /*编写作者: t483-4-19chenY_Absong                               */
  24          /*编写日期: 2007-4-06                                           */
  25          /*===============================================================*/
  26          #include  "common.h"
  27          #include  "ad9851.h"
  28          #include  "delay.h"
  29          #include  "TS12864A.h"
  30          #include  "show.h" 
  31          
  32          
  33          extern unsigned long  FrequencyLong_HZ; 
  34          void ad9851(void)
  35          {        
  36   1           unsigned char  key_code;
  37   1      //   show_frequncy();
  38   1               key_code=P7&0xff;
  39   1               switch(key_code)
  40   1               {
  41   2                          case 0xfe:  
  42   2                              if(FrequencyLong_HZ>=10)
  43   2                                          {
  44   3                                                   FrequencyLong_HZ=FrequencyLong_HZ-10;
  45   3                                                               sin_send(FrequencyLong_HZ);
  46   3      //                                                       Show_FloatData(FrequencyLong_HZ,5,3);    
  47   3                                                   delay_nms(10);
  48   3                                          }
  49   2                                                      break;                             //步进为10自减
  50   2                          case 0xfd:  
  51   2                              if(FrequencyLong_HZ<=10000)
  52   2                                          {
  53   3                                                   FrequencyLong_HZ=FrequencyLong_HZ+10;
  54   3                                                               sin_send(FrequencyLong_HZ);
  55   3      //                                                       Show_FloatData(FrequencyLong_HZ,5,3);  
C51 COMPILER V8.02   AD9851                                                                04/04/2008 19:55:14 PAGE 2   

  56   3                                                   delay_nms(10);
  57   3                                          }
  58   2                                                      break;                                         //步进为10自加
  59   2                              case 0xfb:      
  60   2                                              FrequencyLong_HZ=0;                        //10--100000自动加扫频                                   
  61   2                                          while(FrequencyLong_HZ<=10000)
  62   2                                          {
  63   3                                                   FrequencyLong_HZ=FrequencyLong_HZ+10;
  64   3                                                               sin_send(FrequencyLong_HZ);
  65   3      //                                                       Show_FloatData(FrequencyLong_HZ,5,3);  
  66   3                                                   delay_nms(500);
  67   3                                          }                                           
  68   2                                          break;              
  69   2                              case 0xf7:      
  70   2                                              FrequencyLong_HZ=10000;     //10--100000自动减扫频                                  
  71   2                                          while(FrequencyLong_HZ>=10)
  72   2                                          {
  73   3                                                   FrequencyLong_HZ=FrequencyLong_HZ-10;
  74   3                                                               sin_send(FrequencyLong_HZ);
  75   3      //                                                       Show_FloatData(FrequencyLong_HZ,5,3);  
  76   3                                                   delay_nms(500);
  77   3                                          }                                           
  78   2                                          break;                                                                              
  79   2                              default:    break;                   
  80   2                } 
  81   1              
  82   1      }
  83          
  84          void sin_send(unsigned long freqword)
  85          {
  86   1      
  87   1          unsigned int ctr_word[5];
  88   1          unsigned long  f_value;
  89   1      
  90   1                                                                                        //提取控制字
  91   1              freqword = (long)(freqword*1073.741824);          //2^32/4000000
  92   1              f_value = (long)freqword;
  93   1              ctr_word[4] = f_value;
  94   1              ctr_word[4] &= 0x00ff;
  95   1              f_value >>= 8;
  96   1              ctr_word[3] = f_value;
  97   1              ctr_word[3] &= 0x00ff;
  98   1              f_value >>= 8;
  99   1              ctr_word[2] = f_value;
 100   1              ctr_word[2] &= 0x00ff;
 101   1              f_value >>= 8;
 102   1              ctr_word[1] = f_value;
 103   1              ctr_word[1] &= 0x00ff;
 104   1              wr_word();
 105   1      }
 106          
 107          void wr_word(void)                          //写控制字
 108          {
 109   1              unsigned int i;
 110   1              unsigned int ctr_word[5];
 111   1          
 112   1              AD9851_W_CLK=0;                             //清控制字
 113   1              AD9851_FQ_UD=0;     
 114   1                                                                              
 115   1          AD9851_W_CLK=0;  
 116   1      //  DATA_PORT=0x09;                                     //6倍频控制
 117   1          DATA_PORT=0x00;                                 //不进行6倍频
C51 COMPILER V8.02   AD9851                                                                04/04/2008 19:55:14 PAGE 3   

 118   1              delay_nus(10);
 119   1          AD9851_W_CLK=1;
 120   1              delay_nus(10); 
 121   1      
 122   1              for (i=1;i<5;i++)                       //写频率控制字
 123   1              {
 124   2                    AD9851_W_CLK=0;  
 125   2                    DATA_PORT=ctr_word[i];
 126   2                        delay_nus(10);
 127   2                AD9851_W_CLK=1;
 128   2                        delay_nus(10);                        
 129   2              }
 130   1              AD9851_W_CLK=0;
 131   1          AD9851_FQ_UD=1;                //根据控制字更改输出的频率和相位
 132   1              AD9851_FQ_UD=1; 
 133   1              delay_nms(10);
 134   1          AD9851_FQ_UD=0;
 135   1      }
 136          
 137          void Initial_AD9851(void)          //对 RESET端进行复位
 138          {                                                         
 139   1              AD9851_RESET=0;
 140   1          AD9851_RESET=1;             
 141   1          delay_nms(100);
 142   1          AD9851_RESET=0;
 143   1              AD9851_FQ_UD=0;       
 144   1          AD9851_W_CLK=0; 
 145   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    465    ----
   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 + -