📄 ad9954.lst
字号:
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 + -