📄 lcd_main.lst
字号:
504 1 Delay_110(); //延时110us 等待DS1820回应
505 1 if (!TMPort) //回应信号为低电平
506 1 DS1820ON = 1;
507 1 else
508 1 DS1820ON = 0;
509 1 Delay_110(); //延时
510 1 Delay_110();
511 1 TMPort = 1; //拉高TMPort
512 1 }
513
514 void ROMDS1820(void) //跳过ROM匹配
515 {
516 1 #pragma asm
517 1 MOV A,#0CCH
518 1 MOV R2,#8
519 1 CLR C
520 1 WR1:
521 1 CLR P2_7
522 1 MOV R3,#6
523 1 DJNZ R3,$
524 1 RRC A
525 1 MOV P2_7,C
526 1 MOV R3,#23
527 1 DJNZ R3,$
528 1 SETB P2_7
529 1 NOP
530 1 DJNZ R2,WR1
531 1 SETB P2_7
532 1 #pragma endasm
533 1 }
534
535 void TMVDS1820(void) //温度转换指令
536 {
537 1 #pragma asm
538 1 MOV A,#44H
539 1 MOV R2,#8
540 1 CLR C
541 1 WR2:
542 1 CLR P2_7
543 1 MOV R3,#6
544 1 DJNZ R3,$
545 1 RRC A
546 1 MOV P2_7,C
547 1 MOV R3,#23
548 1 DJNZ R3,$
549 1 SETB P2_7
C51 COMPILER V7.09 LCD_MAIN 08/12/2004 17:38:42 PAGE 10
550 1 NOP
551 1 DJNZ R2,WR2
552 1 SETB P2_7
553 1 #pragma endasm
554 1 }
555
556 void TMRDS1820(void) //读出温度指令
557 {
558 1 #pragma asm
559 1 MOV A,#0BEH
560 1 MOV R2,#8
561 1 CLR C
562 1 WR3:
563 1 CLR P2_7
564 1 MOV R3,#6
565 1 DJNZ R3,$
566 1 RRC A
567 1 MOV P2_7,C
568 1 MOV R3,#23
569 1 DJNZ R3,$
570 1 SETB P2_7
571 1 NOP
572 1 DJNZ R2,WR3
573 1 SETB P2_7
574 1 #pragma endasm
575 1 }
576
577 void TMWDS1820(void) //写入温度限制指令
578 {
579 1 #pragma asm
580 1 MOV A,#04EH
581 1 MOV R2,#8
582 1 CLR C
583 1 WR13:
584 1 CLR P2_7
585 1 MOV R3,#6
586 1 DJNZ R3,$
587 1 RRC A
588 1 MOV P2_7,C
589 1 MOV R3,#23
590 1 DJNZ R3,$
591 1 SETB P2_7
592 1 NOP
593 1 DJNZ R2,WR13
594 1 SETB P2_7
595 1 #pragma endasm
596 1 }
597
598 void TMREDS1820(void) //COPY RAM to E2PRAM
599 {
600 1 #pragma asm
601 1 MOV A,#48H
602 1 MOV R2,#8
603 1 CLR C
604 1 WR33:
605 1 CLR P2_7
606 1 MOV R3,#6
607 1 DJNZ R3,$
608 1 RRC A
609 1 MOV P2_7,C
610 1 MOV R3,#23
611 1 DJNZ R3,$
C51 COMPILER V7.09 LCD_MAIN 08/12/2004 17:38:42 PAGE 11
612 1 SETB P2_7
613 1 NOP
614 1 DJNZ R2,WR33
615 1 SETB P2_7
616 1 #pragma endasm
617 1 }
618
619 void TMERDS1820(void) //COPY E2PRAM to RAM
620 {
621 1 #pragma asm
622 1 MOV A,#0B8H
623 1 MOV R2,#8
624 1 CLR C
625 1 WR43:
626 1 CLR P2_7
627 1 MOV R3,#6
628 1 DJNZ R3,$
629 1 RRC A
630 1 MOV P2_7,C
631 1 MOV R3,#23
632 1 DJNZ R3,$
633 1 SETB P2_7
634 1 NOP
635 1 DJNZ R2,WR43
636 1 SETB P2_7
637 1 #pragma endasm
638 1 }
639
640 void WriteDS1820(void) //写入温度限制值
641 {
642 1 #pragma asm
643 1 MOV A,26H //发出4EH写ROM指令后连发两个字节分别为上下限
644 1 MOV R2,#8
645 1 CLR C
646 1 WR23:
647 1 CLR P2_7
648 1 MOV R3,#6
649 1 DJNZ R3,$
650 1 RRC A
651 1 MOV P2_7,C
652 1 MOV R3,#23
653 1 DJNZ R3,$
654 1 SETB P2_7
655 1 NOP
656 1 DJNZ R2,WR23
657 1 SETB P2_7
658 1 #pragma endasm
659 1 }
660
661 void ReadDS1820(void) //读出温度值
662 {
663 1 #pragma asm
664 1 MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
665 1 MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
666 1 RE00:
667 1 MOV R2,#8
668 1 RE01:
669 1 CLR C
670 1 SETB P2_7
671 1 NOP
672 1 NOP
673 1 CLR P2_7
C51 COMPILER V7.09 LCD_MAIN 08/12/2004 17:38:42 PAGE 12
674 1 NOP
675 1 NOP
676 1 NOP
677 1 SETB P2_7
678 1 MOV R3,#09
679 1 RE10:
680 1 DJNZ R3,RE10
681 1 MOV C,P2_7
682 1 MOV R3,#23
683 1 RE20:
684 1 DJNZ R3,RE20
685 1 RRC A
686 1 DJNZ R2,RE01
687 1 MOV @R1,A
688 1 DEC R1
689 1 DJNZ R4,RE00
690 1 #pragma endasm
691 1 }
692
693 void Delay_510(void) //延时510微秒
694 {
695 1 #pragma asm
696 1 MOV R0,#7DH
697 1 MOV R1,#02H
698 1 TSR1:
699 1 DJNZ R0,TSR1
700 1 MOV R0,#7DH
701 1 DJNZ R1,TSR1
702 1 #pragma endasm
703 1 }
704
705 void Delay_110(void) //延时110微秒
706 {
707 1 #pragma asm
708 1 MOV R0,#19H
709 1 MOV R1,#02H
710 1 TSR2:
711 1 DJNZ R0,TSR2
712 1 MOV R0,#19H
713 1 DJNZ R1,TSR2
714 1 #pragma endasm
715 1 }
716
717 void Delay_10ms(void) //延时10ms
718 {
719 1 #pragma asm
720 1 MOV R0,#19H
721 1 MOV R1,#0C8H
722 1 TSR3:
723 1 DJNZ R0,TSR3
724 1 MOV R0,#19H
725 1 DJNZ R1,TSR3
726 1 #pragma endasm
727 1 }
728
729 void Delay_4s(void) //延时4s
730 {
731 1 #pragma asm
732 1 MOV R2,#28H
733 1 TSR5:
734 1 MOV R0,#0FAH
735 1 MOV R1,#0C8H
C51 COMPILER V7.09 LCD_MAIN 08/12/2004 17:38:42 PAGE 13
736 1 TSR4:
737 1 DJNZ R0,TSR4
738 1 MOV R0,#0FAH
739 1 DJNZ R1,TSR4
740 1 DJNZ R2,TSR5
741 1 #pragma endasm
742 1 }
743
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1737 ----
CONSTANT SIZE = 46 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 52 9
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 + -