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

📄 driver9954.lst

📁 AD9954控制C51以及产生ASK、PSK等信号
💻 LST
📖 第 1 页 / 共 2 页
字号:
 203   1        UPDATE();  
 204   1      }
 205          
 206          
 207          void DirectSwitchPSK(float f,float phase1,float phase2,float phase3,float phase4)
 208          {
 209   1      union 
 210   1        {
 211   1         unsigned  int det1;
 212   1         struct{uchar dh;uchar dl; }det2;
 213   1        }dat;
 214   1      
 215   1       AD9954_SENDBYTE(0x00);//地址0写操作
 216   1       AD9954_SENDBYTE(0x00);//打开RAM控制位驱动FTW
 217   1       AD9954_SENDBYTE(0x00);
 218   1       AD9954_SENDBYTE(0x00);
 219   1       AD9954_SENDBYTE(0x40);
 220   1      //
 221   1       AD9954_SENDBYTE(0x01);//地址1写操作
 222   1       AD9954_SENDBYTE(0x00);//
 223   1       AD9954_SENDBYTE(0x00);
 224   1       AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
 225   1       AD9954_SETFRE(f);//载波频率
 226   1       PS0=0;
 227   1       PS1=0;
 228   1       AD9954_SENDBYTE(0x07);
 229   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 230   1       AD9954_SENDBYTE(0x00);
 231   1       AD9954_SENDBYTE(0x00);//final address:0x000
 232   1       AD9954_SENDBYTE(0x00);//start address:0x000;
 233   1       AD9954_SENDBYTE(0x00);//RAM0工作于模式0,不停留位没有激活
 234   1       UPDATE();
 235   1       dat.det1=45.51*phase1;
 236   1       dat.det1=dat.det1<<2;
 237   1       AD9954_SENDBYTE(0x0b);
 238   1       AD9954_SENDBYTE(dat.det2.dh);//频率控制字
 239   1       AD9954_SENDBYTE(dat.det2.dl);
 240   1       AD9954_SENDBYTE(0x00);
 241   1       AD9954_SENDBYTE(0x00);
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 5   

 242   1      
 243   1       PS0=1;//ram1
 244   1       PS1=0;
 245   1      
 246   1       AD9954_SENDBYTE(0x08);
 247   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 248   1       AD9954_SENDBYTE(0x00);
 249   1       AD9954_SENDBYTE(0x01);//final address:0x0001
 250   1       AD9954_SENDBYTE(0x04);//start address:0x0001
 251   1       AD9954_SENDBYTE(0x00);//RAM1工作于模式0,不停留位没有激活
 252   1      UPDATE();
 253   1      dat.det1=45.51*phase2;
 254   1       dat.det1=dat.det1<<2;
 255   1       AD9954_SENDBYTE(0x0b);
 256   1       AD9954_SENDBYTE(dat.det2.dh);//频率控制字
 257   1       AD9954_SENDBYTE(dat.det2.dl);
 258   1       AD9954_SENDBYTE(0x00);
 259   1       AD9954_SENDBYTE(0x00);
 260   1      
 261   1      PS0=0;//ram2
 262   1       PS1=1;
 263   1      
 264   1       AD9954_SENDBYTE(0x09);
 265   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 266   1       AD9954_SENDBYTE(0x00);
 267   1       AD9954_SENDBYTE(0x02);//final address:0x0002
 268   1       AD9954_SENDBYTE(0x08);//start address:0x0002
 269   1       AD9954_SENDBYTE(0x00);
 270   1       UPDATE();
 271   1      dat.det1=45.51*phase3;
 272   1       dat.det1=dat.det1<<2;
 273   1       AD9954_SENDBYTE(0x0b);
 274   1       AD9954_SENDBYTE(dat.det2.dh);//频率控制字
 275   1       AD9954_SENDBYTE(dat.det2.dl);
 276   1       AD9954_SENDBYTE(0x00);
 277   1       AD9954_SENDBYTE(0x00);
 278   1       PS0=1;//ram3
 279   1       PS1=1;
 280   1       AD9954_SENDBYTE(0x0a);
 281   1       AD9954_SENDBYTE(0x01);//ramp rate=0x0010
 282   1       AD9954_SENDBYTE(0x00);
 283   1       AD9954_SENDBYTE(0x03);//final address:0x0003
 284   1       AD9954_SENDBYTE(0x0c);//start address:0x0003
 285   1       AD9954_SENDBYTE(0x00);  
 286   1       UPDATE();
 287   1       dat.det1=45.51*phase4;
 288   1       dat.det1=dat.det1<<2;
 289   1       AD9954_SENDBYTE(0x0b);
 290   1       AD9954_SENDBYTE(dat.det2.dh);//频率控制字
 291   1       AD9954_SENDBYTE(dat.det2.dl);
 292   1       AD9954_SENDBYTE(0x00);
 293   1       AD9954_SENDBYTE(0x00);
 294   1      
 295   1       AD9954_SENDBYTE(0x00);//地址0写操作
 296   1       AD9954_SENDBYTE(0xc0);//打开RAM控制位驱动FTW
 297   1       AD9954_SENDBYTE(0x00);
 298   1       AD9954_SENDBYTE(0x00);
 299   1       AD9954_SENDBYTE(0x40);
 300   1        UPDATE();  
 301   1      }
 302          void ManualAM(uchar amp)
 303          {
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 6   

 304   1      
 305   1       AD9954_SENDBYTE(0x00);//地址0写操作
 306   1       AD9954_SENDBYTE(0x02);//手动打开OSK打开
 307   1       AD9954_SENDBYTE(0x00);
 308   1       AD9954_SENDBYTE(0x00);
 309   1       AD9954_SENDBYTE(0x40);
 310   1       AD9954_SENDBYTE(0x02);//幅度
 311   1       if(amp==0)
 312   1       {
 313   2        AD9954_SENDBYTE(0x00);
 314   2        AD9954_SENDBYTE(0x00);
 315   2       }
 316   1       else
 317   1       {
 318   2        AD9954_SENDBYTE(0xff);
 319   2        AD9954_SENDBYTE(0xff);
 320   2       }
 321   1      UPDATE(); 
 322   1      
 323   1      }
 324          void ContinuousRecirculation(void)
 325          {
 326   1      union 
 327   1        {
 328   1         unsigned long int det1;
 329   1         struct{uchar dhh;uchar dhl;uchar dlh;uchar dll; }det2;
 330   1        }dat;
 331   1       uchar i;
 332   1       float f;
 333   1       AD9954_SENDBYTE(0x00);//地址0写操作
 334   1       AD9954_SENDBYTE(0x00);//打开RAM控制位驱动FTW
 335   1       AD9954_SENDBYTE(0x00);
 336   1       AD9954_SENDBYTE(0x00);
 337   1       AD9954_SENDBYTE(0x40);
 338   1      //
 339   1       AD9954_SENDBYTE(0x01);//地址1写操作
 340   1       AD9954_SENDBYTE(0x00);//
 341   1       AD9954_SENDBYTE(0x00);
 342   1       AD9954_SENDBYTE(0x44);//8倍频,打开VCO控制高位,系统时钟倍频后为400M
 343   1       PS0=0;
 344   1       PS1=0;
 345   1       AD9954_SENDBYTE(0x07);
 346   1       AD9954_SENDBYTE(0x00);//ramp rate=0x0001
 347   1       AD9954_SENDBYTE(0x10);
 348   1       AD9954_SENDBYTE(0x31);//final address:0x031
 349   1       AD9954_SENDBYTE(0x00);//start address:0x000;
 350   1       AD9954_SENDBYTE(0x80);//RAM0工作于模式4,不停留位没有激活
 351   1       UPDATE();
 352   1       f=100000;
 353   1        AD9954_SENDBYTE(0x0b);  
 354   1       for(i=0;i<50;i++)
 355   1       { 
 356   2       dat.det1=10.7374*f;
 357   2      
 358   2       AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 359   2       AD9954_SENDBYTE(dat.det2.dhl);
 360   2       AD9954_SENDBYTE(dat.det2.dlh);
 361   2       AD9954_SENDBYTE(dat.det2.dll);
 362   2      //  UPDATE();
 363   2        f=f+1000;
 364   2       }
 365   1      
C51 COMPILER V7.20   DRIVER9954                                                            08/16/2007 11:03:46 PAGE 7   

 366   1      
 367   1       PS0=1;
 368   1       PS1=0;
 369   1       AD9954_SENDBYTE(0x08);
 370   1       AD9954_SENDBYTE(0x00);//ramp rate=0x0001
 371   1       AD9954_SENDBYTE(0x10);
 372   1       AD9954_SENDBYTE(0x63);//final address:0x063
 373   1       AD9954_SENDBYTE(0xc8);//start address:0x032;
 374   1       AD9954_SENDBYTE(0x80);//RAM0工作于模式4,不停留位没有激活
 375   1       UPDATE();
 376   1       f=2000;
 377   1        AD9954_SENDBYTE(0x0b) ; 
 378   1       for(i=0;i<50;i++)
 379   1       { 
 380   2       dat.det1=10.7374*f;
 381   2      
 382   2       AD9954_SENDBYTE(dat.det2.dhh);//频率控制字
 383   2       AD9954_SENDBYTE(dat.det2.dhl);
 384   2       AD9954_SENDBYTE(dat.det2.dlh);
 385   2       AD9954_SENDBYTE(dat.det2.dll);
 386   2       // UPDATE();
 387   2        f=f+100;
 388   2       }
 389   1      
 390   1      
 391   1       UPDATE();
 392   1       AD9954_SENDBYTE(0x00);//地址0写操作
 393   1       AD9954_SENDBYTE(0x80);//打开RAM控制位驱动FTW
 394   1       AD9954_SENDBYTE(0x00);
 395   1       AD9954_SENDBYTE(0x00);
 396   1       AD9954_SENDBYTE(0x40);
 397   1       UPDATE(); 
 398   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1750    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      71
   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 + -