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

📄 ad9954.lst

📁 基于AD9954的扫频仪程序设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 237   1         {
 238   2           ins = addr;
 239   2           WriteByte(ins);
 240   2              do{
 241   3                 WriteByte(buf[num-1]);
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 5   

 242   3                 num--;
 243   3                 nNop(5);
 244   3                }
 245   2              while(num);   
 246   2         }
 247   1      }
 248          
 249          
 250          /***********************************************************************
 251          ** 函数名称:    AD9954_Write_Reg
 252          ** 功能描述:    AD9954写寄存器操作
 253          ** 输 入:          unsigned long command  写入寄存器的指令
 254          **              unsigned char num      发送或读回的数据长度 num Byte
 255          **              unsigned char addr     寄存器地址
 256          ** 输 出:      无
 257          ** 全局变量:    无
 258          ** 调用模块:    RW_Reg
 259          ***********************************************************************/
 260          void AD9954_Write_Reg(unsigned long command,unsigned char num,unsigned char addr)
 261          {
 262   1        unsigned char temp_com[5] = {0,0,0,0,0};
 263   1        unsigned char i;
 264   1        unsigned long temp;
 265   1        temp = command;
 266   1        for(i = 0;i < num;i++)
 267   1        {
 268   2          temp_com[i] = (temp & 0xff);
 269   2          temp = temp >> 8;
 270   2        } 
 271   1        RW_Reg(addr,temp_com,num,0);
 272   1      }
 273          
 274          
 275          /***********************************************************************
 276          ** 函数名称:    FTW_Float
 277          ** 功能描述:    将浮点型频率值MHZ 转换成频率控制字
 278          ** 输 入:          float freqfloat    浮点型频率值MHZ        
 279          ** 输 出:      unsigned long      4 byte 频率控制字
 280          ** 全局变量:    无
 281          ** 调用模块:    无
 282          ***********************************************************************/
 283          unsigned long FTW_Float(float freqfloat)
 284          {
 285   1        unsigned long temp = 0;
 286   1        float freqf = 0;
 287   1        freqf = freqfloat/20;    //AD9954主频20MHZ
 288   1        temp = (freqf * multfreq);
 289   1        return(temp);
 290   1      }
 291          
 292          /***********************************************************************
 293          ** 函数名称:    更新数据操作
 294          ** 功能描述:    每次更新寄存器的固定操作
 295          ** 输 入:          无      
 296          ** 输 出:      无
 297          ** 全局变量:    无
 298          ** 调用模块:    无
 299          ***********************************************************************/
 300          void AD9954_Updata_First(void)
 301          {
 302   1      
 303   1       CS_Enable();
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 6   

 304   1       IO_SYNC_1();
 305   1       nNop(40);
 306   1       IO_SYNC_0();
 307   1       IO_UPDATE_0();
 308   1      }
 309          
 310          void AD9954_Updata_Final(void)
 311          {
 312   1       CS_Disable();
 313   1       nNop(20);
 314   1       IO_UPDATE_1(); 
 315   1      }
 316          
 317          
 318          /*****************************************************************************
 319          *                     Single-Tone Mode
 320          ******************************************************************************/
 321          /***********************************************************************
 322          ** 函数名称:    AD9954_SingleTone_Init
 323          ** 功能描述:    AD9954 Single-Tone Mode  初始化 
 324          ** 输 入:          无       
 325          ** 输 出:      无
 326          ** 全局变量:    CFR1 CFR2   AD9954 功能控制寄存器
 327          ** 调用模块:    AD9954_Write_Reg
 328          ***********************************************************************/
 329          void AD9954_SingleTone_Init(void)
 330          { 
 331   1       CFR1 = 0x00000000;
 332   1       AD9954_Updata_First();
 333   1       AD9954_Write_Reg(CFR1,4,0x00);//控制寄存器1
 334   1       AD9954_Write_Reg(CFR2,3,0x01);//控制寄存器2
 335   1       AD9954_Updata_Final();
 336   1      }
 337          
 338          /***********************************************************************
 339          ** 函数名称:    AD9954_SingleTone_Freq
 340          ** 功能描述:    更新频率控制
 341          ** 输 入:          无       
 342          ** 输 出:      无
 343          ** 全局变量:    FTW0
 344          ** 调用模块:    AD9954_Write_Reg   更新寄存器操作
 345          ***********************************************************************/
 346          void AD9954_SingleTone_Freq(float freq)
 347          { 
 348   1       FTW0 = FTW_Float(freq);
 349   1       AD9954_Updata_First();
 350   1       AD9954_Write_Reg(FTW0,4,0x04);//设置全局输出频率
 351   1       AD9954_Updata_Final();
 352   1       }
 353          
 354          
 355          
 356          
 357          /***********************************************************************
 358          ** 函数名称:    更新寄存器操作
 359          ** 功能描述:    每次更新寄存器的固定操作
 360          ** 输 入:          无      
 361          ** 输 出:      无
 362          ** 全局变量:    无
 363          ** 调用模块:    无
 364          ***********************************************************************/
 365          
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 7   

 366          void AD9954_Update(void)
 367          {
 368   1      
 369   1       IO_UPDATE_0();
 370   1       nNop(40);
 371   1       IO_UPDATE_1(); 
 372   1      }
 373          
 374          /*****************************************************************************
 375          *                     Linear_Sweep  Mode
 376          ******************************************************************************/
 377          /***********************************************************************
 378          ** 函数名称:    AD9954_Linear_Sweep_Init
 379          ** 功能描述:    AD9954  Linear_Sweep Mode  初始化 
 380          ** 输 入:          无       
 381          ** 输 出:      无
 382          ** 全局变量:    CFR1 CFR2   AD9954 功能控制寄存器
 383          ** 调用模块:    AD9954_Write_Reg
 384          ***********************************************************************/
 385          void  AD9954_LinearSweep_Init(void)
 386          {
 387   1      
 388   1      WriteByte(0x00);
 389   1      WriteByte(0x00);
 390   1      WriteByte(0x20);
 391   1      WriteByte(0x00);
 392   1      WriteByte(0x44);
 393   1      AD9954_Update();
 394   1      
 395   1      }
 396          
 397          
 398          /***********************************************************************
 399          ** 函数名称:    AD9954_Linear_Sweep_Freq
 400          ** 功能描述:    更新频率控制
 401          ** 输 入:          无       
 402          ** 输 出:      无
 403          ** 全局变量:    FTW0  FTW1  PLSCW   NLSCW
 404          ** 调用模块:    AD9954_Write_Reg   更新寄存器操作
 405          ***********************************************************************/
 406          
 407          
 408          void  AD9954_LinearSweep_Freq(void)
 409           {
 410   1      
 411   1       
 412   1       
 413   1        WriteByte(0x04);
 414   1        
 415   1        WriteByte(0x00);
 416   1        WriteByte(0x09);
 417   1        WriteByte(0xD4);
 418   1        WriteByte(0x95);
 419   1      
 420   1        WriteByte(0x06);
 421   1        
 422   1        WriteByte(0x00);
 423   1        WriteByte(0x16);
 424   1        WriteByte(0xF0);
 425   1        WriteByte(0x06);
 426   1      
 427   1      
C51 COMPILER V8.02   AD9954                                                                04/01/2008 17:39:41 PAGE 8   

 428   1      
 429   1        WriteByte(0x07);
 430   1        
 431   1        WriteByte(0xFF);
 432   1        WriteByte(0x00);
 433   1        WriteByte(0x00);
 434   1        WriteByte(0x00);
 435   1        WriteByte(0x0B);
 436   1      
 437   1      
 438   1        WriteByte(0x08);
 439   1        
 440   1        WriteByte(0xFF);
 441   1        WriteByte(0x00);
 442   1        WriteByte(0x00);
 443   1        WriteByte(0x00);
 444   1        WriteByte(0x0B);
 445   1        AD9954_Update();
 446   1        //NLSCW=0xFF0000000B;
 447   1        //PLSCW=0xFF0000000B;
 448   1       // FTW0=FTW_Float(f1);
 449   1       // FTW1=FTW_Float(f2);
 450   1       // AD9954_Write_Reg(FTW0,4,0x04);
 451   1       // AD9954_Write_Reg(FTW1,4,0x06);
 452   1        //AD9954_Write_Reg(NLSCW,5,0x07);
 453   1       // AD9954_Write_Reg(PLSCW,5,0x08);
 454   1       // AD9954_Update();
 455   1      }
 456          
 457          
 458          
 459          
 460          
 461          
 462          
 463          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    778    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44      38
   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 + -