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