📄 oscilloscope.lst
字号:
C51 COMPILER V7.09 OSCILLOSCOPE 08/15/2005 19:39:16 PAGE 6
304 3 break;
305 3 default:
306 3 break;
307 3 }
308 2 }
309 1 }
310 //***************************************************************************************
311 void Vertical_GainB()
312 {
313 1 Led_On=0;
314 1 Vertical_Gain_B_Grade++;
315 1 if(Vertical_Gain_B_Grade>2)
316 1 Vertical_Gain_B_Grade=0;
317 1 else
318 1 {
319 2 Vertical_Gain_B=Vertical_Gain_B_Grade;
320 2 lcd_clear();
321 2 lcd_write_sentence(1,0,"当前垂直增益档位");
322 2 lcd_write_sentence(2,3,"B 路");
323 2 switch(Vertical_Gain_B_Grade)
324 2 {
325 3 case 0:
326 3 lcd_write_sentence(3,1,"0.01V/div");
327 3 break;
328 3 case 1:
329 3 lcd_write_sentence(3,1,"0.1V/div");
330 3 break;
331 3 case 2:
332 3 lcd_write_sentence(3,1,"1V/div");
333 3 break;
334 3 default:
335 3 break;
336 3 }
337 2 }
338 1 }
339 //***************************************************************************************
340 void Vertical_MoveA()
341 {
342 1 Shift_Flag=1;
343 1 ledcursor=2;
344 1 Key_Flag=4;
345 1 Led_On=1;
346 1 Glint_Flag=1;
347 1 lcd_clear();
348 1 lcd_write_sentence(1,0,"按加减键上下移动");
349 1 lcd_write_sentence(2,1,"A 路波形");
350 1 distab[0]=0x00;
351 1 distab[1]=0x00;
352 1 distab[2]=0x00;
353 1 distab[3]=0x10;
354 1 distab[4]=0x10;
355 1 distab[5]=0x10;
356 1 distab[6]=0x10;
357 1 distab[7]=0x04;
358 1 }
359 //***************************************************************************************
360 void Vertical_MoveB()
361 {
362 1 Shift_Flag=1;
363 1 ledcursor=2;
364 1 Key_Flag=5;
365 1 lcd_clear();
C51 COMPILER V7.09 OSCILLOSCOPE 08/15/2005 19:39:16 PAGE 7
366 1 Led_On=1;
367 1 Glint_Flag=1;
368 1 lcd_write_sentence(1,0,"按加减键上下移动");
369 1 lcd_write_sentence(2,1,"B 路波形");
370 1 distab[0]=0x00;
371 1 distab[1]=0x00;
372 1 distab[2]=0x00;
373 1 distab[3]=0x10;
374 1 distab[4]=0x10;
375 1 distab[5]=0x10;
376 1 distab[6]=0x10;
377 1 distab[7]=0x05;
378 1 }
379 //***************************************************************************************
380 void enter_down()
381 {
382 1 unint temp;
383 1 Enter=!Enter;
384 1 //Led_On=0;
385 1 Glint_Flag=!Glint_Flag;
386 1 Shift_Flag=0;
387 1 switch(Key_Flag)
388 1 {
389 2 case 1:
390 2 X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
391 2 //Frequence*=5;
392 2 temp=_iror_(X_Frequence,8);
393 2 X_Freq_High=temp;
394 2 temp=X_Frequence%256;
395 2 X_Freq_Low=temp;
396 2 Enter=0;
397 2 lcd_clear();
398 2 lcd_write_sentence(1,0,"频率设置成功!");
399 2 lcd_write_sentence(2,1,"当前频率:");
400 2 lcd_write_command(0x89);
401 2 lcd_write_data(0x30+distab[4]);
402 2 lcd_write_data(0x30+distab[3]);
403 2 lcd_write_data(0x30+distab[2]);
404 2 lcd_write_data(0x30+distab[1]);
405 2 lcd_write_data(0x30+distab[0]);
406 2 lcd_write_sentence(3,4,"HZ");
407 2 break;
408 2 case 2:
409 2 Enter=0;
410 2 lcd_clear();
411 2 X_Pos=distab[2]*100+distab[1]*10+distab[0];
412 2 if(X_Pos>200)
413 2 {
414 3 X_Pos=0;
415 3 lcd_write_sentence(2,0,"输入范围太大!");
416 3 }
417 2 else
418 2 {
419 3 X_Move=X_Pos;
420 3 lcd_write_sentence(1,0,"水平移相成功");
421 3 lcd_write_sentence(2,1,"当前水平偏移:");
422 3 lcd_write_command(0x8a);
423 3 lcd_write_data(0x30+distab[2]);
424 3 lcd_write_data(0x30+distab[1]);
425 3 lcd_write_data(0x30+distab[0]);
426 3 }
427 2 break;
C51 COMPILER V7.09 OSCILLOSCOPE 08/15/2005 19:39:16 PAGE 8
428 2 case 3:
429 2 Enter=0;
430 2 lcd_clear();
431 2 Trigger_V=distab[2]*100+distab[1]*10+distab[0];
432 2 if(Trigger_V>500)
433 2 {
434 3 lcd_write_sentence(1,0,"电平输入太大!");
435 3 lcd_write_sentence(2,0,"请重新输入!");
436 3 Trigger_V=0;
437 3 }
438 2 else
439 2 {
440 3 Trigger_Voltage=Trigger_V/2;
441 3 lcd_write_sentence(1,0,"触发电平设置成功");
442 3 lcd_write_sentence(2,1,"当前触发电平:");
443 3 lcd_write_command(0x89);
444 3 lcd_write_data(0x30+distab[2]);
445 3 lcd_write_sentence(3,2,".");
446 3 lcd_write_data(0x30+distab[1]);
447 3 lcd_write_data(0x30+distab[0]);
448 3 lcd_write_sentence(3,4,"V");
449 3 }
450 2 break;
451 2 case 4:
452 2 Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
453 2 Vertical_Move_A=Vertical_Pos_A;
454 2 lcd_clear();
455 2 lcd_write_sentence(1,1,"当前垂直偏移A:");
456 2 lcd_write_command(0x91);
457 2 lcd_write_data(0x30+distab[2]);
458 2 lcd_write_data(0x30+distab[1]);
459 2 lcd_write_data(0x30+distab[0]);
460 2 break;
461 2 case 5:
462 2 Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
463 2 Vertical_Move_B=Vertical_Pos_B;
464 2 lcd_clear();
465 2 lcd_write_sentence(1,1,"当前垂直偏移B:");
466 2 lcd_write_command(0x91);
467 2 lcd_write_data(0x30+distab[2]);
468 2 lcd_write_data(0x30+distab[1]);
469 2 lcd_write_data(0x30+distab[0]);
470 2 break;
471 2 default:
472 2 break;
473 2 }
474 1
475 1
476 1
477 1 }
478
479
480 //***************************************************************************************
481 void keyprg(unchar key) //键盘键值执行的程序
482 {
483 1 //unchar i;
484 1 if((key<=9)&Shift_Flag)
485 1 {
486 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
487 2 if(ledcursor>0) //光标移位
488 2 ledcursor--;
489 2 else
C51 COMPILER V7.09 OSCILLOSCOPE 08/15/2005 19:39:16 PAGE 9
490 2 ledcursor=0;
491 2 display(0); //显示键值
492 2 }
493 1
494 1 else
495 1 {
496 2 switch(key)
497 2 {
498 3 case 0x00:
499 3 Set_X_Freq();
500 3 break;
501 3 case 0x01:
502 3 Set_X_Pos();
503 3 break;
504 3 case 0x02:
505 3 Set_Trigger_Voltage();
506 3 break;
507 3 case 0x03:
508 3 Lock_Current_Wave();
509 3 break;
510 3 case 0x04:
511 3 Single_Select();
512 3 break;
513 3 case 0x05:
514 3 Vertical_GainA();
515 3 break;
516 3 case 0x06:
517 3 Vertical_GainB();
518 3 break;
519 3 case 0x07:
520 3 Vertical_MoveA();
521 3 break;
522 3 case 0x08:
523 3 Vertical_MoveB();
524 3 break;
525 3 case 0x09:
526 3 Select_AB_Channel();
527 3 break;
528 3 case 0x0A:
529 3 Reset();
530 3 break;
531 3 case 0x0B: //功能键F2
532 3 Shift_Flag=!Shift_Flag;
533 3 break;
534 3 case 0x0C: //KeyprgBack();
535 3 if(ledcursor<7) //光标移位
536 3 ledcursor++;
537 3 else
538 3 ledcursor=0;
539 3 display(0); //显示键值
540 3 break;
541 3 case 0x0D: //加
542 3 if(distab[ledcursor]<0x09)
543 3 distab[ledcursor]++;
544 3 else
545 3 distab[ledcursor]=0;
546 3 display(0); //显示键值
547 3 break;
548 3 case 0x0E: //减
549 3 if(distab[ledcursor]>0)
550 3 distab[ledcursor]--;
551 3
C51 COMPILER V7.09 OSCILLOSCOPE 08/15/2005 19:39:16 PAGE 10
552 3 else
553 3 distab[ledcursor]=9;
554 3 display(0); //显示键值
555 3
556 3 break;
557 3 case 0x0F:
558 3 enter_down();
559 3 break;
560 3 default:
561 3 break;
562 3 }
563 2 }
564 1
565 1 }
566 //**************************************************************************************
567 void intt0() interrupt 0
568 {
569 1
570 1 EX0=0; //关键盘中断,禁止相应其他按键
571 1 keynum=P1; //从p1口读入键盘值
572 1 keynum=keynum&0x0f; //取低四位;
573 1 keyprg(keynum);
574 1 //if(enter) //不是enter键,屏蔽中断
575 1 EX0=1;
576 1 }
577
578 //**************************************************************************************
579
580 void main()
581 {
582 1
583 1 unchar j=0;
584 1 EX0=1;
585 1 EA=1;
586 1 lcd_init();
587 1 display(0);
588 1 lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫-- 简易示波器");
589 1 //lcd_clear();
590 1 //lcd_write_sentence(4,4,"南开大学");
591 1 FpgaInitial();
592 1 while(1)
593 1 {
594 2 if(Glint_Flag)
595 2 glint();
596 2 }
597 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1908 ----
CONSTANT SIZE = 525 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 1
IDATA SIZE = ---- ----
BIT SIZE = 6 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -