?? ss_sweep.lst
字號:
248 1 Mh=0;
249 1 DC=1;
250 1 Cmd_CS=1;
251 1 Cmd_CS=0;
252 1 Cmd_CS=1;
253 1 P0=(div<<3)|((phase&0x0700)>>8);//((unsigned char *)&phase)[0];
254 1 Mh=1;
255 1 DC=1;
256 1 Cmd_CS=1;
257 1 Cmd_CS=0;
258 1 Cmd_CS=1;
259 1 }
260
261 void SetCMD(unsigned char Cmd)
262 {
263 1 P0=Cmd;
264 1 DC=0;
265 1 Cmd_CS=1;
266 1 Cmd_CS=0;
267 1 Cmd_CS=1;
268 1 }
269
270 void refresh_led()
271 {
272 1 led_display(10);
273 1 led_display(value[0]);
274 1 led_display(value[1]);
275 1 led_display(value[2]);
276 1 led_display(value[3]);
277 1 led_display(value[4]);
278 1 }
279
280
281
282 void display_mod(unsigned char mod)
283 {
284 1 Set_Display_Add(768);
285 1 printf("MOD:");
286 1 switch(mod)
287 1 {
288 2 case Wsin: printf("SIN ");
289 2 break;
290 2 case Wtri: printf("TRI ");
291 2 break;
292 2 case Wpul: printf("PULSE");
293 2 break;
294 2 case Wclr: printf("NONE ");
295 2 break;
296 2 }
297 1 }
298 #define Start 0
299 #define Screen 1
300 #define Setup 2
301 #define FreqScan 3
302
303 #define enter_num 0
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 6
304 #define wait_key 1
305 #define exit_setup 2
306
307 unsigned long int Freq,FreqS;
308 unsigned long int Freq_temp;
309 unsigned char MainSM=0;
310 unsigned char SetupSM=0;
311
312 void main(void)
313 {
314 1 unsigned char mod,value_index;
315 1 init_port();
316 1 init_interrupt();
317 1 _nop_();
318 1 _nop_();
319 1 _nop_();
320 1 display_init();
321 1 cls();
322 1 Set_Display_Add(0);
323 1 printf("dds \nPlease press enter key to set Frequency");
324 1 while(1){
325 2 //SetCommand(0xaa,1);
326 2
327 2 switch(MainSM)
328 2 {
329 3 case Start: MainSM=Screen;
330 3 SetPhase(2000);
331 3 SetCMD(mod&0x03);
332 3 display_mod((mod)&0x03);
333 3 Set_Display_Add(560);
334 3 putchar(value[0]+0x30);
335 3 putchar(value[1]+0x30);
336 3 putchar(value[2]+0x30);
337 3 putchar(value[3]+0x30);
338 3 putchar(value[4]+0x30);
339 3 refresh_led();
340 3 break;
341 3 case Screen: if(key_pressed==ON)
342 3 {
343 4 switch(key_no)
344 4 {
345 5 case key_enter: MainSM=Setup;
346 5 break;
347 5 case key_clr: MainSM=FreqScan;
348 5 FreqS=Freq;
349 5 break;
350 5 case key_mod: SetCMD((++mod)&0x03);
351 5 display_mod((mod)&0x03);
352 5 refresh_led();
353 5 break;
354 5 default: break;
355 5 }
356 4 key_pressed=OFF;
357 4 }
358 3 break;
359 3 case FreqScan: //掃頻輸出狀態
360 3 delayMs(10); //延時函數,每隔若干毫秒步進50Hz
361 3 SetPhase(FreqS&0x7fff); //設置頻率,以模32k循環
362 3 FreqS+=50; //頻率步進50hz
363 3 if(key_pressed==ON)
364 3 {
365 4 switch(key_no)
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 7
366 4 {
367 5 case key_enter: MainSM=Setup;
368 5 break;
369 5 case key_clr: MainSM=Screen;
370 5 SetPhase(Freq);
371 5 break;
372 5 case key_mod: SetCMD((++mod)&0x03);
373 5 display_mod((mod)&0x03);
374 5 refresh_led();
375 5 break;
376 5 default: break;
377 5 }
378 4 key_pressed=OFF;
379 4 }
380 3 break;
381 3
382 3 case Setup: Set_Display_Add(428);
383 3 printf("SETUP");
384 3 switch(SetupSM)
385 3 {
386 4 case enter_num: value[0]=0;
387 4 value[1]=0;
388 4 value[2]=0;
389 4 value[3]=0;
390 4 value[4]=0;
391 4 Set_Display_Add(560);
392 4 putchar(value[0]+0x30);
393 4 putchar(value[1]+0x30);
394 4 putchar(value[2]+0x30);
395 4 putchar(value[3]+0x30);
396 4 putchar(value[4]+0x30);
397 4 value_index=0;
398 4 SetupSM=wait_key;
399 4 break;
400 4 case wait_key: if(key_pressed==ON)
401 4 {
402 5 switch(key_no)
403 5 {
404 6 case key0:
405 6 case key1:
406 6 case key2:
407 6 case key3:
408 6 case key4:
409 6 case key5:
410 6 case key6:
411 6 case key7:
412 6 case key8:
413 6 case key9:
414 6 if(value_index<5)
415 6 {
416 7 value[value_index]=key_no;
417 7 value_index++;
418 7 }
419 6
420 6 break;
421 6 case key_enter:SetupSM=exit_setup;
422 6 break;
423 6 case key_mod: SetCMD((++mod)&0x03);
424 6 display_mod((mod)&0x03);
425 6 refresh_led();
426 6 break;
427 6 default: break;
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 8
428 6 }
429 5 Set_Display_Add(560);
430 5 putchar(value[0]+0x30);
431 5 putchar(value[1]+0x30);
432 5 putchar(value[2]+0x30);
433 5 putchar(value[3]+0x30);
434 5 putchar(value[4]+0x30);
435 5 refresh_led();
436 5 key_pressed=OFF;
437 5 }
438 4
439 4 break;
440 4 case exit_setup: Freq_temp=value[0];
441 4 Freq=Freq_temp*10000;
442 4 Freq_temp=value[1];
443 4 Freq=Freq+Freq_temp*1000;
444 4 Freq_temp=value[2];
445 4 Freq=Freq+Freq_temp*100;
446 4 Freq_temp=value[3];
447 4 Freq=Freq+Freq_temp*10;
448 4 Freq=Freq+value[4];
449 4 SetPhase(Freq);
450 4 Set_Display_Add(560);
451 4 putchar(value[0]+0x30);
452 4 putchar(value[1]+0x30);
453 4 putchar(value[2]+0x30);
454 4 putchar(value[3]+0x30);
455 4 putchar(value[4]+0x30);
456 4 refresh_led();
457 4 Set_Display_Add(428);
458 4 printf(" ");
459 4 refresh_led();
460 4 SetupSM=enter_num;
461 4 MainSM=Screen;
462 4 break;
463 4 }
464 3 break;
465 3 default:
466 3 break;
467 3 }
468 2
469 2
470 2
471 2 } //等待中斷
472 1 }
473
474 void interrupt_handle() interrupt 0
475 {
476 1 //uchar disdata;
477 1 DISABLE; //CPU關中斷
478 1 wait(); //鍵盤消抖延時
479 1 if (Int_wire==0)
480 1 {
481 2 key_pressed=ON;
482 2 P2=0xFF;
483 2 key_no=P2&0x0F; //讀取P2口的低四位顯示數據編碼
484 2 }
485 1 ENABLE; //CPU開中斷
486 1 }
487
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 9
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1667 ----
CONSTANT SIZE = 104 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 11
IDATA SIZE = 6 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -