📄 pwm.lst
字号:
337 4 if(yic==10)
338 4 {
339 5 yic=0;
340 5 }
341 4 ain1=yic;
342 4 DispT1=DispTab[yic];
343 4 Disp1();
344 4 }
345 3 if(shezhi==3)
346 3 {
347 4 yec++;
348 4 if(yec==10)
349 4 {
350 5 yec=0;
351 5 }
352 4 Abb=yec;
353 4 DispT1=DispTab[Abb];
354 4 Disp1();
355 4 }
356 3 }
357 2 if(keyci==2)
358 2 {
359 3 if(shezhi==1)
360 3 {
361 4 yjc++;
362 4 if(yjc==10)
363 4 {
364 5 yjc=0;
365 5 }
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 7
366 4 aim2=yjc;
367 4 DispT2=DispTab[yjc];
368 4 Disp2();
369 4 }
370 3 if(shezhi==2)
371 3 {
372 4 ykc++;
373 4 if(ykc==10)
374 4 {
375 5 ykc=0;
376 5 }
377 4 ain2=ykc;
378 4 DispT2=DispTab[ykc];
379 4 Disp2();
380 4 }
381 3 if(shezhi==3)
382 3 {
383 4 yfc++;
384 4 if(yfc==8)
385 4 {
386 5 yfc=0;
387 5 }
388 4 Bbb=yfc;
389 4 DispT2=DispTab[Bbb];
390 4 Disp2();
391 4 }
392 3 }
393 2 if(keyci==3)
394 2 {
395 3 if(shezhi==1)
396 3 {
397 4 if(ylc==6)
398 4 {
399 5 ylc=0;
400 5 }
401 4 aim3=ylc;
402 4 DispT3=DispTab[ylc];
403 4 ylc++;
404 4 Disp3();
405 4 }
406 3 if(shezhi==2)
407 3 {
408 4 if(ymc==6)
409 4 {
410 5 ymc=0;
411 5 }
412 4 ain3=ymc;
413 4 DispT3=DispTab[ymc];
414 4 ymc++;
415 4 Disp3();
416 4 }
417 3 if(shezhi==3)
418 3 {
419 4 if(ydc==2)
420 4 {
421 5 ydc=0;
422 5 }
423 4 Cbb=ydc;
424 4 DispT3=DispTab[Cbb];
425 4 Disp3();
426 4 ydc++;
427 4 }
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 8
428 3 }
429 2 }
430 1 if(keyvalue==3)//-键处理程序
431 1 {
432 2 if(keyci==1)
433 2 {
434 3 if(shezhi==1)
435 3 {
436 4 DispT1=DispTab[yhc];
437 4 aim1=yhc;
438 4 if(yhc==0)
439 4 {
440 5 yhc=10;
441 5 }
442 4 yhc--;
443 4 Disp1();
444 4 }
445 3 if(shezhi==2)
446 3 {
447 4 DispT1=DispTab[yic];
448 4 ain1=yic;
449 4 if(yic==0)
450 4 {
451 5 yic=10;
452 5 }
453 4 yic--;
454 4 Disp1();
455 4 }
456 3 if(shezhi==3)
457 3 {
458 4 if(yec==0)
459 4 {
460 5 yec=10;
461 5 }
462 4 yec--;
463 4 Abb=yec;
464 4 DispT1=DispTab[Abb];
465 4 Disp1();
466 4 }
467 3 }
468 2 if(keyci==2)
469 2 {
470 3 if(shezhi==1)
471 3 {
472 4 DispT2=DispTab[yjc];
473 4 aim2=yjc;
474 4 if(yjc==0)
475 4 {
476 5 yjc=10;
477 5 }
478 4 Disp2();
479 4 yjc--;
480 4 }
481 3 if(shezhi==2)
482 3 {
483 4 DispT2=DispTab[ykc];
484 4 ain2=ykc;
485 4 if(ykc==0)
486 4 {
487 5 ykc=10;
488 5 }
489 4 Disp2();
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 9
490 4 ykc--;
491 4 }
492 3 if(shezhi==3)
493 3 {
494 4 Bbb=yfc;
495 4 DispT2=DispTab[Bbb];
496 4 if(yfc==0)
497 4 {
498 5 yfc=8;
499 5 }
500 4 Disp2();
501 4 yfc--;
502 4 }
503 3 }
504 2 if(keyci==3)
505 2 {
506 3 if(shezhi==1)
507 3 {
508 4 if(ylc==0)
509 4 {
510 5 ylc=6;
511 5 }
512 4 ylc--;
513 4 aim3=ylc;
514 4 DispT3=DispTab[ylc];
515 4 Disp3();
516 4 }
517 3 if(shezhi==2)
518 3 {
519 4 if(ymc==0)
520 4 {
521 5 ymc=6;
522 5 }
523 4 ymc--;
524 4 ain3=ymc;
525 4 DispT3=DispTab[ymc];
526 4 Disp3();
527 4 }
528 3 if(shezhi==3)
529 3 {
530 4 if(ydc==0)
531 4 {
532 5 ydc=1;
533 5 }
534 4 ydc--;
535 4 Cbb=ydc;
536 4 DispT3=DispTab[Cbb];
537 4 Disp3();
538 4 }
539 3 }
540 2 }
541 1 if(keyvalue==4)//设置键
542 1 {
543 2 shezhi++;
544 2 if(shezhi==4)
545 2 {
546 3 shezhi=1;
547 3 }
548 2 if(shezhi==3)
549 2 {
550 3 ylc=0;
551 3 ymc=0;
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 10
552 3 }
553 2 switch(shezhi)
554 2 {
555 3 case 1:scanT=0x89; break;
556 3 case 2:scanT=0xcf; break;
557 3 case 3:scanT=0xbf; break;
558 3 default:break;//第四位控制,为H则为高电平设置时间,L为低电平设置时间,-为倒计时时间
559 3 }
560 2 }
561 1 if(keyvalue==5)//启动键
562 1 {
563 2 shezhi=0;//设置状态归0
564 2 keyci=0; //光标位置归0
565 2 timeflag=1;//倒计时位置1
566 2 time=0;
567 2 Hcishu=0;
568 2 Lcishu=0;
569 2 Hpl=aim3*100+aim2*10+aim1;//计算高电平倒计时时间
570 2 Lpl=ain3*100+ain2*10+ain1;//计算低电平倒计时时间
571 2 ET1=1;//开定时器1中断
572 2 Disp4();
573 2 }
574 1 if(keyvalue==6)
575 1 {
576 2 timeflag=0;//倒计时位置0,停止倒计时
577 2 ET1=0; //关定时器1中断
578 2 Disp4();
579 2 }
580 1 }
581 void main()
582 {
583 1 P3M0=0x00;//00000000
584 1 P3M1=0x20;//00100000,设置为3.5受控,从右边数,第6位为P3.5位,设置为01,高电平推挽强上拉模式
585 1 TMOD=0x11;
586 1 ET0=1;
587 1 TH0=(65536-5000)/256;//定时器0设置为5ms
588 1 TL0=(65536-5000)%256;
589 1 TH1=(65536-1000)/256;//定时器1设置为1ms
590 1 TL1=(65536-1000)%256;
591 1 TR0=1;
592 1 TR1=1;
593 1 EA=1;//定时器初始化
594 1 output=0;
595 1 while(1)
596 1 {
597 2 if(scanf==1)//扫描标志位
598 2 {
599 3 scanf=0;
600 3 scan();
601 3 }
602 2
603 2 if(chuli==1)//处理标志位
604 2 {
605 3 chuli=0;
606 3 deal();
607 3 }
608 2 if(keyci==1)
609 2 {Disp1();}
610 2 if(keyci==2)
611 2 {Disp2();}
612 2 if(keyci==3)
613 2 {Disp3();}
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 11
614 2 if(shezhi==0)
615 2 {Disp4();}
616 2 if(timeflag==1)
617 2 {
618 3 if(Hf==1)//Hf=1时,发高电平
619 3 {
620 4 output=1;
621 4 }
622 3 if(Lf==1)//Lf=1时,发低电平
623 3 {
624 4 output=0;
625 4 }
626 3 }
627 2 }
628 1 }
629
630 void Timer0() interrupt 1 using 1
631 {
632 1 TH0=(65536-5000)/256;
633 1 TL0=(65536-5000)%256;
634 1 scanf=1;
635 1 temp1++;
636 1 time++;
637 1 }
638
639 void Time1() interrupt 3 using 2
640 {
641 1 TH1=(65536-1000)/256;
642 1 TL1=(65536-1000)%256;
643 1 Hcishu++;
644 1 if(Hcishu<=Hpl)//高电平时,Hf=1
645 1 {
646 2 Hf=1;
647 2 }
648 1 if(Hcishu>Hpl)
649 1 {
650 2 Hf=0;
651 2 Lcishu++;
652 2 if(Lcishu<=Lpl)//低电平时,Lf=1
653 2 {
654 3 Lf=1;
655 3 }
656 2 if(Lcishu>Lpl)
657 2 {
658 3 Lf=0;
659 3 Hcishu=0;
660 3 Lcishu=0;
661 3 }
662 2 }
663 1 }
664
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1682 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 44 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.06 PWM 11/20/2007 10:10:04 PAGE 12
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -