📄 ds1302-dsy.lst
字号:
0524 798E 686 MOV R1,#8EH ;写保护寄存器
0526 7880 687 MOV R0,#80H ;禁止写入
0528 1201C2 688 LCALL WRITE
689
052B D1CB 690 CALL DATE_DELAY
052D C20A 691 CLR 0AH
052F C28C 692 CLR TR0
0531 D1DC 693 CALL BEEP_BL
0533 22 694 RET
695 ;===================================================
696 ;定时时间设定子程序
697 ;K1为加键、K2为减键、K3为选择键
698 ;===================================================
0534 699 DSSET:
0534 D28C 700 SETB TR0
0536 1206A8 701 DS01: LCALL DS_DELAY ;定时分设定
0539 3097FD 702 JNB K4,$
703
053C D130 704 DS010: CALL DS_CHULI
053E 300A08 705 JNB 0AH,DS01_1
0541 857F58 706 MOV 58H,7FH ;送入熄灭符
0544 857F59 707 MOV 59H,7FH
0547 8006 708 JMP DS01_2
709
0549 857058 710 DS01_1: MOV 58H,70H ;送实时值
054C 857159 711 MOV 59H,71H ;送实时值
054F 7858 712 DS01_2: MOV R0,#58H
0551 12065B 713 LCALL DS_SP
0554 7858 714 MOV R0,#58H
0556 120667 715 LCALL DS_DISPLAY
0559 309408 716 JNB K1,DS01A ;加键
055C 309518 717 JNB K2,DS01B ;减键
055F 309631 718 JNB K3,DS02
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 12
0562 80D8 719 JMP DS010
720
0564 721 DS01A: ;加
0564 E548 722 MOV A,48H
0566 2401 723 ADD A,#01H
0568 D4 724 DA A
0569 F548 725 MOV 48H,A
056B 6460 726 XRL A,#60H
056D 7003 727 JNZ DS011
056F 754800 728 MOV 48H,#00H
0572 1206A8 729 DS011: LCALL DS_DELAY
0575 80C5 730 JMP DS010
731
0577 E548 732 DS01B: MOV A,48H ;判48H是否为0
0579 6400 733 XRL A,#00H
057B 600F 734 JZ DS012
057D D3 735 SETB C ;减
057E E4 736 CLR A ;求补运算
057F 3499 737 ADDC A,#99H ;加99
0581 9401 738 SUBB A,#01H ;减去减数
0583 2548 739 ADD A,48H ;加被减数
0585 D4 740 DA A ;十进制调整
0586 F548 741 MOV 48H,A ;
0588 6400 742 XRL A,#00H
058A 7003 743 JNZ DS013
058C 754859 744 DS012: MOV 48H,#59H
058F D1A8 745 DS013: CALL DS_DELAY
0591 80A9 746 JMP DS010
747 ;----------------------------------------------
0593 1206A8 748 DS02: LCALL DS_DELAY ;定时时设定
0596 3096FD 749 JNB K3,$
0599 750 DS020:
0599 D130 751 CALL DS_CHULI
059B 300A08 752 JNB 0AH,DS02_1
753
059E 857F5A 754 MOV 5AH,7FH ;送入熄灭符
05A1 857F5B 755 MOV 5BH,7FH
05A4 8006 756 JMP DS02_2
757
05A6 85725A 758 DS02_1: MOV 5AH,72H ;送实时值
05A9 85735B 759 MOV 5BH,73H ;送实时值
05AC 7858 760 DS02_2: MOV R0,#58H
05AE 12065B 761 LCALL DS_SP
05B1 7858 762 MOV R0,#58H
05B3 120667 763 LCALL DS_DISPLAY
05B6 309408 764 JNB K1,DS02A
05B9 309518 765 JNB K2,DS02B
05BC 309631 766 JNB K3,DS03
05BF 80D8 767 JMP DS020
768
05C1 E549 769 DS02A: MOV A,49H ;加
05C3 2401 770 ADD A,#01H
05C5 D4 771 DA A
05C6 F549 772 MOV 49H,A
05C8 6424 773 XRL A,#24H
05CA 7003 774 JNZ DS021
05CC 754900 775 MOV 49H,#00H
05CF 1206A8 776 DS021: LCALL DS_DELAY
05D2 80C5 777 JMP DS020
778
05D4 E549 779 DS02B: MOV A,49H ;判49H是否为0
05D6 6400 780 XRL A,#00H
05D8 600F 781 JZ DS022
05DA D3 782 SETB C ;减
05DB E4 783 CLR A ;求补运算
05DC 3499 784 ADDC A,#99H ;加99
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 13
05DE 9401 785 SUBB A,#01H ;减去减数
05E0 2549 786 ADD A,49H ;加被减数
05E2 D4 787 DA A ;十进制调整
05E3 F549 788 MOV 49H,A ;
05E5 6400 789 XRL A,#00H
05E7 7003 790 JNZ DS023
05E9 754923 791 DS022: MOV 49H,#23H
05EC D1A8 792 DS023: CALL DS_DELAY
05EE 80A9 793 JMP DS020
794 ;-------------------------------------------
05F0 D1A8 795 DS03: CALL DS_DELAY
05F2 3096FD 796 JNB K3,$
797
05F5 D130 798 DS030: CALL DS_CHULI
05F7 300A05 799 JNB 0AH,DS03_1
05FA 857F5C 800 MOV 5CH,7FH ;送入熄灭符
05FD 8003 801 JMP DS03_2
05FF 85745C 802 DS03_1: MOV 5CH,74H ;送实时值
0602 7858 803 DS03_2: MOV R0,#58H
0604 12065B 804 LCALL DS_SP
0607 7858 805 MOV R0,#58H
0609 120667 806 LCALL DS_DISPLAY
060C 309617 807 JNB K3,DS04
060F 309402 808 JNB K1,DS03A
0612 80E1 809 JMP DS030
810
0614 B201 811 DS03A: CPL 20H.1 ;报警标记取反
0616 300105 812 JNB 20H.1,DS031
0619 754A01 813 MOV 4AH,#01H ;报警标记=1,允许报警
061C C121 814 AJMP DS032
061E 754A00 815 DS031: MOV 4AH,#00H ;报警标记=0,禁止报警
0621 1206A8 816 DS032: LCALL DS_DELAY
0624 80CF 817 JMP DS030
818 ;--------------------------------------------
0626 C28C 819 DS04: CLR TR0
0628 C20A 820 CLR 0AH
062A D1DC 821 CALL BEEP_BL
062C 1206A8 822 LCALL DS_DELAY
062F 22 823 RET
824
825 ;=============================================
826 ;定时时间数据处理子程序
827 ;=============================================
0630 828 DS_CHULI:
0630 E548 829 MOV A,48H ;处理分数据
0632 540F 830 ANL A,#0FH
0634 F558 831 MOV 58H,A
0636 F570 832 MOV 70H,A
0638 E548 833 MOV A,48H
063A 54F0 834 ANL A,#0F0H
063C C4 835 SWAP A
063D F559 836 MOV 59H,A
063F F571 837 MOV 71H,A
838
0641 E549 839 MOV A,49H ;处理时数据
0643 540F 840 ANL A,#0FH
0645 F55A 841 MOV 5AH,A
0647 F572 842 MOV 72H,A
0649 E549 843 MOV A,49H
064B 54F0 844 ANL A,#0F0H
064D C4 845 SWAP A
064E F55B 846 MOV 5BH,A
0650 F573 847 MOV 73H,A
848
0652 E54A 849 MOV A,4AH ;处理定时标记
0654 5401 850 ANL A,#01H
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 14
0656 F55C 851 MOV 5CH,A
0658 F574 852 MOV 74H,A
065A 22 853 RET
854 ;==================================================
855 ;定时时间查表取数子程序
856 ;==================================================
065B 857 DS_SP: ;MOV R0,#58H
065B 7B05 858 MOV R3,#05H
065D E6 859 DS_SP1: MOV A,@R0
065E 9006FA 860 MOV DPTR,#TAB_NU
0661 93 861 MOVC A,@A+DPTR
0662 F6 862 MOV @R0,A
0663 08 863 INC R0
0664 DBF7 864 DJNZ R3,DS_SP1
0666 22 865 RET
866 ;==================================================
867 ;定时时间显示子程序
868 ;==================================================
0667 869 DS_DISPLAY:
870 ;MOV R0,#58H ;取得设定显示单元首地址
0667 797F 871 MOV R1,#07FH ;从第一个数码管开始
0669 7A07 872 MOV R2,#07H ;共7个数码管
066B 8680 873 DSPLAY: MOV P0,@R0 ;获得当前单元数据
066D E9 874 MOV A,R1
066E F5A0 875 MOV P2,A ;数码显示
0670 20E505 876 JB ACC.5,DSLP1 ;第三位数码管显示“-”
0673 7580BF 877 MOV P0,#0BFH
0676 8009 878 JMP DSLP3
0678 20E205 879 DSLP1: JB ACC.2,DSLP2 ;第六位数码管显示“-”
067B 7580BF 880 MOV P0,#0BFH
067E 8001 881 JMP DSLP3
0680 08 882 DSLP2: INC R0
0681 E9 883 DSLP3: MOV A,R1 ;为下一个数准备
0682 03 884 RR A ;下一个单元
0683 F9 885 MOV R1,A ;保存
0684 1202D1 886 LCALL DELAY
0687 DAE2 887 DJNZ R2,DSPLAY ;重复显示,直到全部数据刷新过
0689 22 888 RET ;返回
889 ;====================================================
890 ;实时时间与设定时间比较子程序
891
892 ;20H.0 止闹标记,=0,允许,=1,禁止。
893 ;20H.1 报警标记,=1,允许,=0,禁止。
894 ;====================================================
068A 300116 895 COMP: JNB 20H.1,COMP1
068D 7850 896 MOV R0,#TIME_DATA
068F 1202AE 897 LCALL TIME_DISPLAY
0692 E542 898 MOV A,42H ;实时时间与设定时间比较
0694 B5490C 899 CJNE A,49H,COMP1 ;先比较时后比较分
0697 E541 900 MOV A,41H
0699 B54807 901 CJNE A,48H,COMP1
069C 200006 902 JB 20H.0,COMP2 ;20H.0=1,止闹开关,关
903 ;LCALL BEEP_BL
069F C293 904 CLR RELAY ;继电器吸合1分钟
06A1 8004 905 JMP COMP3
06A3 C200 906 COMP1: CLR 20H.0
06A5 D293 907 COMP2: SETB RELAY
06A7 22 908 COMP3: RET
909
910 ;====================================================
911 ;键延时子程序
912 ;多次调用显示程序做键延时
913 ;====================================================
06A8 914 DS_DELAY:
06A8 7E0A 915 MOV R6,#0AH ;设定定时时间,键延时用
06AA 916 DS_KK:
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -