单片机学习小组
直播中

马聪

7年用户 204经验值
私信 关注

数字钟程序源程序分享

DISBEG  EQU  30H
CALB    EQU  P1.7
tiMCON  EQU  2FH
ORG  0000H
LJMP  MAIN
ORG  0003H
RETI
ORG  000BH
LJMP  INTT0
ORG  0013H
RETI
ORG  001BH
LJMP  INTT1
ORG  0023H
RETI
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
I_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DLY1M: MOV R6,#14H
DL_LOOP: MOV R7,#19H
DL_LOOP1:DJNZ R7,DL_LOOP1
          DJNZ R6,DL_LOOP
          RET
DLY20M:CLR CALB
        LCALL D_II_PLAY
        LCALL D_II_PLAY
        LCALL D_II_PLAY
        SETB CALB
        RET
DL_LOOPS:LCALL DL05S
          LCALL DL05S
          RET
DL05S:   MOV R3,#20H
DL05S1:  LCALL D_II_PLAY
          DJNZ R3,DL05S1
          RET


CTIME: MOV A,#10H                        
MOV B,79H
MUL AB
ADD A,78H
MOV TIMCON,A
CLOOP:  LCALL DLY20M
         LCALL DL_LOOPS
         LCALL DL_LOOPS
         LCALL DL_LOOPS
         DJNZ  TIMCON,CLOOP
         CLR   08H
MAIN:   MOV   R0,#00H               
         MOV   R7,#80H
MLOOP:  MOV   @R0,#00H
         INC   R0
         DJNZ  R7,MLOOP
         MOV   20H,#00H
         MOV   7AH,#0AH
         MOV   TMOD,#11H
         MOV   TL0,#0B0H
         MOV   TH0,#3CH
         MOV   TL1,#0B0H
         MOV   TH1,#3CH
         SETB  EA
         SETB  ET0
         SETB  TR0
         MOV   R4,#14H
         MOV   DISBEG,#70H
MLOOP1:LCALL D_II_PLAY
         JNB   P1.0,T_SETSC
         JNB   P1.1,DLY5
         JNB   P1.2,FUNBT
         JNB   P1.3,TSET
         JB    08H,CTIME
         AJMP MLOOP1
FUNBT:  LJMP DLY6


TSET: LCALL DLY20M               
         JB P1.3,MLOOP1
TS_LOOP:JNB P1.3,TS_LOOP
                 JB 05H,CLRBELL
                 MOV DISBEG,#50H
                 MOV 50H,#0CH
                 MOV 51H,#0AH
MINCHG:SETB EA
         LCALL D_II_PLAY
         JNB P1.2,DLY1
         JNB P1.0,DLY3
         JNB P1.3,DLY
         AJMP MINCHG
CLRBELL:CLR 05H
         CLR CALB
         AJMP MLOOP1
DLY:LCALL DLY20M
         JB P1.3,MINCHG
         LJMP DLY8
T_SETSC:LJMP R_SETTIM
DLY1:LCALL DLY20M
         JB P1.2,MINCHG
DLY2: LCALL D_II_PLAY
         JNB P1.2,DLY2
         CLR EA
         MOV R0,#53H
         LCALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#60H,ADD_M
ADD_M:JC MINCHG
         ACALL CLR_H
         AJMP MINCHG
DLY3:LCALL DLY20M
         JB P1.0,MINCHG
DLY4:LCALL D_II_PLAY
         JNB P1.0,DLY4

         CLR EA
         MOV R0,#53H
         LCALL SUB_M
         LJMP MINCHG
DLY5:LCALL DLY20M               
         JB P1.1,T_MLOOP1
         JNB P1.1,$
         CPL 03H
         JNB 03H,DIS_SET
         MOV DISBEG,#60H
         MOV 60H,#00H
         MOV 61H,#00H
         MOV 62H,#00H
         MOV 63H,#00H
         MOV 64H,#00H
         MOV 65H,#00H
         MOV TL1,#0F0H
         MOV TH1,#0D8H
         SETB TR1
         SETB ET1
T_MLOOP1:LJMP MLOOP1
DIS_SET:MOV DISBEG,#70H
         CLR ET1
         CLR TR1
T_MLOOP11:LJMP MLOOP1
DLY6:LCALL DLY20M        
JB P1.2,T_MLOOP11        
T_EST11:JNB P1.2,T_EST11
         CLR ET1
         CLR TR1
T_EST22:JNB P1.1,DLY5
         JB P1.2,T_EST21
         LCALL DLY20M
         JB P1.2,T_EST22
T_EST55:JNB P1.2,T_EST51
         MOV 60H,#00H
         MOV 61H,#00H

         MOV 62H,#00H
         MOV 63H,#00H
         MOV 64H,#00H
         MOV 65H,#00H
T_EST33:JNB P1.1,DLY5
         JB P1.2,T_EST31
         LCALL DLY20M
         JB P1.2,T_EST33
T_EST44:JNB P1.2,T_EST41
         SETB ET1
         SETB TR1
         AJMP MLOOP1
T_EST411:LCALL D_II_PLAY               
          AJMP T_EST11
T_EST21:LCALL D_II_PLAY
         AJMP T_EST22
T_EST31:LCALL D_II_PLAY
         AJMP T_EST33
T_EST41:LCALL D_II_PLAY
         AJMP T_EST44
T_EST51:LCALL D_II_PLAY
         AJMP T_EST55
INTT0:PUSH ACC               
         PUSH PSW
         CLR ET0
         CLR TR0
         MOV A,#0B7H
         ADD A,TL0
         MOV TL0,A
         MOV A,#3CH
         ADDC A,TH0
         MOV TH0,A
         SETB TR0
         DJNZ R4,I_INT0
A_DDS:MOV R4,#14H
         CPL 07H
         MOV R0,#71H

         ACALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#60H,A_DDM
A_DDM:JC I_INT0
         ACALL CLR_H
         MOV R0,#77H
         ACALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#60H,A_DDH
A_DDH:JC I_INT0
         ACALL CLR_H
         LCALL DLY20M
         SETB 08H
         MOV R0,#79H
         ACALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#24H,RSTART
RSTART:JC I_INT0
         ACALL CLR_H
I_INT0:MOV 72H,76H
         MOV 73H,77H
         MOV 74H,78H
         MOV 75H,79H
         LCALL BELL
         POP PSW
         POP ACC
         SETB ET0
         RETI
INTT1:PUSH ACC               
       PUSH PSW        
       JB 03H,R_ADDS
       MOV TL1,#0B0H
       MOV TH1,#3CH
       DJNZ R2,I_INT1

       MOV R2,#06H
       CPL 02H
       JB 02H,FLASH0
       MOV 72H,76H
       MOV 73H,77H
       MOV 74H,78H
       MOV 75H,79H
I_INT1:POP PSW
        POP ACC
        RETI
FLASH0:JB 01H,FLASH1
        MOV 72H,7AH
        MOV 73H,7AH
        MOV 74H,78H
        MOV 75H,79H
        AJMP I_INT1
FLASH1:MOV 72H,76H
        MOV 73H,77H
        MOV 74H,7AH
        MOV 75H,7AH
        AJMP I_INT1
R_ADDS:CLR TR1
        MOV A,#0F7H
        ADD A,TL1
        MOV TL1,A
        MOV A,#0D8H
        ADDC A,TH1
        MOV TH1,A
        SETB TR1
        MOV R0,#61H
        ACALL ADD_1
        CLR C
        MOV A,R3
        JZ R_ADDM
        AJMP I_INT01
R_ADDM:ACALL CLR_H
        MOV R0,#63H

        ACALL ADD_1
        MOV A,R3
        CLR C
        CJNE A,#60H,R_ADDH
R_ADDH:JC I_INT01
        LCALL CLR_H
        MOV R0,#65H
        ACALL ADD_1
I_INT01:POP PSW
        POP ACC
        RETI
ADD_1:MOV A,@R0               
         DEC R0
         SWAP A
         ORL A,@R0
         ADD A,#01H
         DA A
         MOV R3,A
         ANL A,#0FH
         MOV @R0,A
         MOV A,R3
         INC R0
         SWAP A
         ANL A,#0FH
         MOV @R0,A
         RET
SUB_M:MOV A,@R0               
         DEC R0
         SWAP A
         ORL A,@R0
         JZ SUB_M1
         DEC A
SUB_M11:MOV R3,A
         ANL A,#0FH
         CLR C
         SUBB A,#0AH
SUB_M111:JC SUB_M110

         MOV @R0,#09H
SUB_M10:MOV A,R3
         INC R0
         SWAP A
         ANL A,#0FH
         MOV @R0,A
         RET
SUB_M1:MOV A,#59H
         AJMP SUB_M11
SUB_M110:MOV A,R3
SUB_H:MOV A,@R0               
         DEC R0
         SWAP A
         ORL A,@R0
         JZ SUB_H1
         DEC A
SUB_H11:MOV R3,A
         ANL A,#0FH
         CLR C
         SUBB A,#0AH
SUB_H111:JC SUB_H110
         MOV @R0,#09H
SUB_H10:MOV A,R3
         INC R0
         SWAP A
         ANL A,#0FH
         MOV @R0,A
         RET
SUB_H1:MOV A,#23H
         AJMP SUB_H11
SUB_H110:MOV A,R3
CLR_H:CLR A                        
         MOV @R0,A
         DEC R0
         MOV @R0,A
         RET


R_SETTIM:CLR ET0               
         CLR TR0
         LCALL DL_LOOPS
         LCALL DLY20M
         JB P1.0,SLEEP
         MOV R2,#06H
         MOV 70H,#00H
         MOV 71H,#00H
         SETB ET1
         SETB TR1
SET_2:JNB P1.0,SET_1
         SETB 00H
SET_4:JB P1.0,SET_3
         LCALL DL05S
         LCALL DLY20M
         JNB P1.0,R_SETHH
         MOV R0,#77H
         LCALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#60H,SET_LOOP
SET_LOOP:JC SET_4
         LCALL CLR_H
         CLR C
         AJMP SET_4
SLEEP:SETB ET0
         SETB TR0
SET_LOOP1:JB P1.0,SET_LOOP1
         LCALL DLY20M
         JB P1.0,SET_LOOP1
SET_LOOP2:JNB P1.0,SET_LOOP2
         LJMP MLOOP1
R_SETHH:CLR 00H
         SETB 01H
SET_LOOP3:JNB P1.0,SET_5
SET_6:JB P1.0,SET_7
         LCALL DL05S

         LCALL DLY20M
         JNB P1.0,STOP
         MOV R0,#79H
         LCALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#24H,C_YHH
C_YHH:JC SET_6
         LCALL CLR_H
         AJMP SET_6
STOP:JNB P1.0,STOP1
         LCALL DLY20M
         JNB P1.0,STOP
         CLR 01H
         CLR 00H
         CLR 02H
         CLR TR1
         CLR ET1
         SETB TR0
         SETB ET0
         LJMP MLOOP1
SET_1:LCALL D_II_PLAY
         AJMP SET_2
SET_3:LCALL D_II_PLAY
         JNB P1.1,DLY7
         AJMP SET_4
SET_5:LCALL D_II_PLAY
         AJMP SET_LOOP3
SET_7:LCALL D_II_PLAY
         JNB P1.1,DLY7B
         AJMP SET_6
STOP1:LCALL D_II_PLAY
         AJMP STOP
DLY7:LCALL DLY20M                        
         JB P1.1,SET_41
DLY7_M:JNB P1.1,DLY7_M
         MOV R0,#77H

         LCALL SUB_M
         LJMP SET_4
SET_41:LJMP SET_4
DLY7B:LCALL DLY20M               
         JB P1.1,SET_61
DLY7_H:JNB P1.1,DLY7_H
         MOV R0,#79H
         LCALL SUB_H
         LJMP SET_6
SET_61:LJMP SET_6
D_II_PLAY:MOV R1,DISBEG               
         MOV R5,#0FEH
PLAY:MOV A,R5
         MOV P2,A
         MOV A,@R1
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P0,A
         MOV A,R5
         JB ACC.2,D_LOOP
         CLR P0.7
D_LOOP:JB ACC.4,D_LOOP1
         CLR P0.7
D_LOOP1:LCALL DLY1M
         INC R1
         MOV A,R5
         JNB ACC.5,CLOSE
         RL A
         MOV R5,A
         MOV P0,#0FFH
         AJMP PLAY
CLOSE:MOV P2,#0FFH
         MOV P0,#0FFH
         RET
SD_II_PLAY:MOV R1,DISBEG               
         MOV R5,#0FEH
I_PLAY:MOV A,R5

         MOV P2,A
         MOV A,@R1
         MOV DPTR,#I_TAB
         MOVC A,@A+DPTR
         MOV P0,A
         MOV A,R5
         LCALL DLY1M
         INC R1
         MOV A,R5
         JNB ACC.5,CLOSES
         RL A
         MOV R5,A
         AJMP I_PLAY
CLOSES:MOV P2,#0FFH
         MOV P0,#0FFH
         RET
DLY8:LCALL D_II_PLAY               
         JNB P1.3,DLY8
         MOV 50H,#0AH
         MOV 51H,#0CH
R_BTIM:SETB EA
         LCALL D_II_PLAY
         JNB P1.2,DLY12
         JNB P1.0,DLY14
         JNB P1.3,DLY9
         JNB P1.1,DLY10
         AJMP R_BTIM
DLY9:LCALL DLY20M
         JB P1.3,R_BTIM
DLY8M:LCALL D_II_PLAY
         JNB P1.3,DLY8M
         MOV DISBEG,#70H
         LJMP MLOOP1
DLY10:LCALL DLY20M
         JB P1.1,R_BTIM
DLY11:LCALL D_II_PLAY
         JNB P1.1,DLY11

         CPL 05H
         JNB 05H,R_BTIM11
         MOV 50H,#00H
         AJMP R_BTIM
R_BTIM11:MOV 50H,#0AH
         AJMP R_BTIM
DLY12:LCALL DLY20M
         JB P1.2,R_BTIM
DLY13:LCALL D_II_PLAY
         JNB P1.2,DLY13
         CLR EA
         MOV R0,#55H
         LCALL ADD_1
         MOV A,R3
         CLR C
         CJNE A,#24H,A_DDH33N
A_DDH33N:JC R_BTIM
         ACALL CLR_H
         AJMP R_BTIM
DLY14:LCALL DLY20M
         JB P1.0,R_BTIM
DLY15:LCALL D_II_PLAY
         JNB P1.0,DLY15
         CLR EA
         MOV R0,#55H
         LCALL SUB_H
         LJMP R_BTIM
BELL:JNB 05H,BBELL               
         MOV A,79H
         CJNE A,55H,BBELL
         MOV A,78H
         CLR C
BELL_1:CJNE A,54H,BBELL
         MOV A,77H
         CLR C
         CJNE A,53H,BBELL
         MOV A,76H

         CLR C
BELL_2:CJNE A,52H,BBELL
         JNB 07H,BBELL
         CLR CALB
         RET
BBELL:SETB CALB
         RET
         END

更多回帖

发帖
×
20
完善资料,
赚取积分