📄 display.lst
字号:
338 3 if(++out>41) out=0;
339 3 }
340 2 }
341 1 scanh++;
342 1 if(scanh>1)
343 1 {
344 2 scanh=0;
345 2 if(!auto_scanh)
346 2 {
347 3 dataout=(out&0x3f)|(dataout&0xc0);
348 3 freholder.tho=bcdmap[out][0];
349 3 freholder.hun=bcdmap[out][1];
350 3 freholder.dec=bcdmap[out][2];
351 3 freholder.num=bcdmap[out][3];
352 3 led_buf_auto_flush();
353 3 if(++out>41) out=0;
354 3 }
355 2 }
356 1 }
357
358 /*********************************************************************
359 函数原型:void timer1(void)
360 功 能:中断服务程序
361 *********************************************************************/
362 void timer1(void) interrupt 3 using 3
363 {
364 1 TH1=reload_high1;
365 1 TL1=reload_low1;
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 7
366 1 D4=!D4;
367 1 D5=!D5;
368 1 }
369
370 /*********************************************************************
371 函数原型:void swtich_power(void)
372 功 能: 开关RF12伏电源
373 *********************************************************************/
374 void switch_power(void)
375 {
376 1 if(RF)
377 1 {
378 2 RFOUT=dataout&0x3f;
379 2 if(message_disp)
380 2 {
381 3 dispdata=0x0f;
382 3 message_disp=!message_disp;
383 3 };
384 2 dataout=(RFOUT&0x00)|(dataout&0xc0);
385 2 }
386 1 else
387 1 {
388 2 dataout=(dataout&0xc0)|RFOUT;
389 2 if(!message_disp)
390 2 message_disp=!message_disp;
391 2 };
392 1 RF=!RF;
393 1 EA=!EA;
394 1 }
395
396 //主菡数
397 main()
398 {
399 1 init_sys();
400 1 TMOD=0x11;
401 1 TCON=0x10;
402 1 TH0=reload_high;
403 1 TL0=reload_low;
404 1 TH1=reload_high1;
405 1 TL1=reload_low1;
406 1 IE=0x82;
407 1 TR1=0;
408 1 ET1=1;
409 1 pulse_control=0;
410 1 auto_scanl=1;
411 1 auto_scanh=1;
412 1 message_disp=1;
413 1 dataout=dataout&0xc0;
414 1 freholder.tho=bcdmap[0][0];
415 1 freholder.hun=bcdmap[0][1];
416 1 freholder.dec=bcdmap[0][2];
417 1 freholder.num=bcdmap[0][3];
418 1 monitor();
419 1 }
420
421 /***************************************************************************
422 菡数原型:void error_message(void)
423 功 能:显示错误信息"0000"
424 ****************************************************************************/
425 void error_message(void)
426 {
427 1 auto_flush=0;
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 8
428 1 set_led_buf('8',0,1);
429 1 set_led_buf('8',1,1);
430 1 set_led_buf('8',2,1);
431 1 set_led_buf('8',3,1);
432 1 message_time=5;
433 1 message_flag=1;
434 1 }
435
436 /***************************************************************************
437 函数原型:void set_led_buf(uchar c,uchar pos,uchr cnt)
438 功 能:从显示缓冲区的pos位置开始,用字符c填充cnt个字节
439 ****************************************************************************/
440 void set_led_buf(uchar c,uchar pos,uchar cnt)
441 {
442 1 uchar ledbuf_pos;
443 1 auto_flush=0;
444 1 for(ledbuf_pos=pos;cnt>0;cnt--)
445 1 {
446 2 led_buf[ledbuf_pos]=((islower(c))?(toupper(c)):(c));
447 2 ledbuf_pos++;
448 2 if(ledbuf_pos>=4) ledbuf_pos=0;
449 2 }
450 1 }
451
452 /****************************************************************************
453 函数原型:void led_buf_auto_flush(void)
454 功 能:自动刷新显示缓冲区
455 *****************************************************************************/
456 void led_buf_auto_flush(void) reentrant
457 {
458 1 if(isdigit(freholder.tho))
459 1 led_buf[0]=freholder.tho;
460 1 else led_buf[0]=0x0f;
461 1 if(isdigit(freholder.hun))
462 1 led_buf[1]=freholder.hun;
463 1 else led_buf[1]=0x0f;
464 1 if(isdigit(freholder.dec))
465 1 led_buf[2]=freholder.dec;
466 1 else led_buf[2]=0x0f;
467 1 if(isdigit(freholder.num))
468 1 led_buf[3]=freholder.num;
469 1 else led_buf[3]=0x0f;
470 1 }
471
472 /*****************************************************************************
473 函数:void set_auto_disp(void)
474 设置频率
475 *****************************************************************************/
476 void set_fre_disp(void)
477 {
478 1 uchar ccommand;
479 1 uchar data str[4];
480 1 auto_flush=0;
481 1 curfre.tho=freholder.tho;
482 1 curfre.hun=freholder.hun;
483 1 curfre.dec=freholder.dec;
484 1 curfre.num=freholder.num;
485 1 get_str(str,4);
486 1 while(1)
487 1 {
488 2 curfre.tho=str[0];
489 2 curfre.hun=str[1];
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 9
490 2 curfre.dec=str[2];
491 2 curfre.num=str[3];
492 2 ccommand=get_ch();
493 2 if(isupper(ccommand))
494 2 switch(ccommand)
495 2 {
496 3 case 'M':if(!compare_fre_disp())
497 3 {
498 4 error_message();
499 4 auto_flush=1;
500 4 }
501 3 else auto_flush=1; break;
502 3 case 'F':break;
503 3 }
504 2 if(auto_flush) break;
505 2 }
506 1 led_buf_auto_flush();
507 1 }
508
509 /****************************************************************************
510 函数原型:void scan_fre_bufL(void)
511 功 能:自动刷新显示缓冲区
512 *****************************************************************************/
513 void scan_fre_bufL(void)
514 {
515 1 if(auto_scanh)
516 1 auto_scanl=!auto_scanl;
517 1 else
518 1 {
519 2 auto_scanh=!auto_scanh;
520 2 auto_scanl=!auto_scanl;
521 2 }
522 1 FLASH=0;
523 1 }
524
525 /****************************************************************************
526 函数原型:void scan_fre_bufL(void)
527 功 能:自动刷新显示缓冲区
528 *****************************************************************************/
529 void scan_fre_bufH(void)
530 {
531 1 if(auto_scanl)
532 1 auto_scanh=!auto_scanh;
533 1 else
534 1 {
535 2 auto_scanl=!auto_scanl;
536 2 auto_scanh=!auto_scanh;
537 2 }
538 1 FLASH=0;
539 1 }
540
541 /****************************************************************************
542 函数原型:void fre_outl(void)
543 功 能:
544 *****************************************************************************/
545 void fre_outl(void)
546 {
547 1 uchar out=0x00;
548 1 dataout=(dataout&0xc0)|(out&0x3f); //LEDS 999
549 1 freholder.tho=0x0f;
550 1 freholder.hun=bcdmap[0][1];
551 1 freholder.dec=bcdmap[0][2];
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 10
552 1 freholder.num=bcdmap[0][3];
553 1 led_buf_auto_flush();
554 1 F=!F;
555 1 }
556
557 /****************************************************************************
558 函数原型:void frr_outm(void)
559 功 能:
560 *****************************************************************************/
561 void fre_outm(void)
562 {
563 1 uchar out=0x13;
564 1 dataout=(dataout&0xc0)|(out&0x3f); //LEDS 1060
565 1 freholder.tho=bcdmap[19][0];
566 1 freholder.hun=bcdmap[19][1];
567 1 freholder.dec=bcdmap[19][2];
568 1 freholder.num=bcdmap[19][3];
569 1 led_buf_auto_flush();
570 1 F=!F;
571 1 }
572
573 /****************************************************************************
574 函数原型:fre_outh(void)
575 功 能:
576 *****************************************************************************/
577 void fre_outh(void)
578 {
579 1 uchar out=0x26;
580 1 dataout=(dataout&0xc0)|(out&0x3f); //LEDS 1121
581 1 freholder.tho=bcdmap[38][0];
582 1 freholder.hun=bcdmap[38][1];
583 1 freholder.dec=bcdmap[38][2];
584 1 freholder.num=bcdmap[38][3];
585 1 led_buf_auto_flush();
586 1 F=!F;
587 1 }
588
589 /****************************************************************************
590 函数原型:void pulse_switch(void)
591 功 能:
592 *****************************************************************************/
593 void pulse_switch(void)
594 {
595 1 pulse_control=!pulse_control;
596 1 D0=0;
597 1 D1=0;
598 1 D2=0;
599 1 D3=0;
600 1 D4=D5;
601 1 TR1=!TR1;
602 1 }
603
604 /****************************************************************************
605 函数原型:void fre_uph(void)
606 功 能:
607 *****************************************************************************/
608 void fre_up(void)
609 {
610 1 uchar outup;
611 1 outup=dataout&0x3f;
612 1 if(++outup>41) outup=0;
613 1 dataout=outup|(dataout&0xc0);
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 11
614 1 freholder.tho=bcdmap[outup][0];
615 1 freholder.hun=bcdmap[outup][1];
616 1 freholder.dec=bcdmap[outup][2];
617 1 freholder.num=bcdmap[outup][3];
618 1 led_buf_auto_flush();
619 1 }
620
621 /****************************************************************************
622 函数原型:void fre_uph(void)
623 功 能:
624 *****************************************************************************/
625 void fre_down(void)
626 {
627 1 uchar outdown;
628 1 outdown=dataout&0x3f;
629 1 if(outdown--<=0) outdown=41;
630 1 dataout=outdown|(dataout&0xc0);
631 1 freholder.tho=bcdmap[outdown][0];
632 1 freholder.hun=bcdmap[outdown][1];
633 1 freholder.dec=bcdmap[outdown][2];
634 1 freholder.num=bcdmap[outdown][3];
635 1 led_buf_auto_flush();
636 1 }
637
638 /****************************************************************************
639 函数原型:bit compare_fre_disp(void)
640 功 能:
641 *****************************************************************************/
642 bit compare_fre_disp(void)
643 {
644 1 uchar compare;
645 1 for(compare=0;compare<41;compare++)
646 1 {
647 2 if((bcdmap[compare][0]==curfre.tho)&&(bcdmap[compare][1]==curfre.hun)&&\
648 2 (bcdmap[compare][2]==curfre.dec)&&(bcdmap[compare][3]==curfre.num))
649 2 {
650 3 freholder.tho=curfre.tho;
651 3 freholder.hun=curfre.hun;
652 3 freholder.dec=curfre.dec;
653 3 freholder.num=curfre.num;
654 3 //TR0=1;
655 3 auto_flush=1;
656 3 led_buf_auto_flush();
657 3 message_flag=0;
658 3 dataout=(dataout&0xc0)|(compare&0x3f);
659 3 return((bit) 1);
660 3 }
661 2 }
662 1 message_flag=1;
663 1 return((bit) 0);
664 1 }
665
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1781 ----
CONSTANT SIZE = 168 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 28
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
C51 COMPILER V7.06 DISPLAY 02/21/2006 10:19:59 PAGE 12
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -