?? 電子鐘完成版.asm
字號:
ORG 0000H
AJMP START
ORG 000BH
AJMP TIMER0
ORG 001BH
AJMP TIMER1PANDUAN
ORG 0100H
START:
MOV SP , #6FH
MOV A, #00H
MOV 20H, #0FFH
MOV 21H , #00H
MOV 22H , #00H
MOV 23H, #00H
MOV 24H, #00H
MOV 25H, #00H
MOV 31H , #00H
MOV 32H , #00H
MOV 33H , #00H
MOV 34H , #00H
MOV 35H , #00H
MOV 36H , #00H
MOV 37H , #04H
MOV 38H , #02H
MOV 39H , #07H
MOV 3AH , #00H
MOV 3BH , #07H
MOV 3CH , #00H
MOV 3DH , #00H
MOV 3EH , #02H
MOV 41H, #00H
MOV 42H, #00H
MOV 43H, #00H
MOV 44H, #00H
MOV 45H, #00H
MOV 46H, #02H ;
MOV 50H , #31H
MOV 51H, #11111110B
MOV 52H, #00H
MOV 53H, #37H
MOV 54H, #11111110B
MOV 55H, #00H
MOV 56H, #41H
MOV 57H, #11111110B
MOV 58H, #00H
MOV 59H, #00H
MOV 5AH, #30
MOV R2, #20
MOV R3 , #200
MOV R4 , #100
MOV R5, #00H
MOV TMOD , #11H
MOV TH0 , #0ECH
MOV TL0 , #78H
MOV TH1,#0FFH
MOV TH1,#69H
MOV IE , #10001010B
SETB TR0
LOOP:
LCALL DISP1
LCALL DISP
LCALL DISP2
LCALL READKEY
AJMP LOOP
TIMER0:
MOV TH0 , #0ECH
MOV TL0 , #78H
PUSH A
PUSH PSW
DJNZ R4,TIMLP1
MOV R4,#100
ACALL CLK_CHANGE
TIMLP1:
POP PSW
POP A
RETI
TIMER1PANDUAN:
JB 1EH,PANDUAN
LJMP TIMER1
PANDUAN:LJMP TIMER12
TIMER1:
MOV TH1,#0ECH
MOV TL1,#78H
PUSH A
PUSH PSW
DJNZ R2,TIMER1001
LJMP TIMER100
TIMER1001:LJMP TIMER1END
TIMER100:
MOV R2,#20
JB 1CH,TIMER11
JB 20H,C0
JB 21H,C1
JB 22H,C2
JB 23H,C3
JB 24H,C4
JB 25H,C5
SJMP TIMER1END
TIMER11:
JB 28H,C6
JB 29H,C7
JB 2AH,C8
JB 2BH,C9
JB 2CH,C10
JB 2DH,C11
SJMP TIMER1END
C0:CPL 08H
SJMP TIMER1END
C1:CPL 09H
SJMP TIMER1END
C2:CPL 0AH
SJMP TIMER1END
C3:CPL 0BH
SJMP TIMER1END
C4:CPL 0CH
SJMP TIMER1END
C5:CPL 0DH
SJMP TIMER1END
C6:CPL 10H
SJMP TIMER1END
C7:CPL 11H
SJMP TIMER1END
C8:CPL 12H
SJMP TIMER1END
C9:CPL 13H
SJMP TIMER1END
C10:CPL 14H
SJMP TIMER1END
C11:CPL 15H
TIMER1END:
POP PSW
POP A
RETI
TIMER12:
MOV TH1 , #0ECH
MOV TL1 , #78H
PUSH A
PUSH PSW
INC R5
CJNE R5,#100 ,TEMPT1
DJNZ 5AH,TEMPT2
SJMP TEMPT3
TEMPT2:MOV R5,#00H
SJMP TEMPT1
TEMPT3:
CLR P2.7
CLR TR1
CLR 1EH
TEMPT1:
POP PSW
POP A
RETI
CLK_CHANGE:
INC 31H
MOV A,31H
CJNE A,#0AH, Z1
Z0:LJMP Z2
Z1: LJMP CLK_CHANGEEND
Z2:MOV 31H,#00H
INC 32H
MOV A,32H
CJNE A,#06H,Z1
MOV 32H,#00H
INC 33H
MOV A,33H
CJNE A,#0AH,Z1
MOV 33H,#00H
INC 34H
MOV A,34H
CJNE A,#06H,Z1
MOV 34H,#00H
;
INC 35H
MOV A,36H
CJNE A,#02H,Z5
LJMP Z3
Z5:MOV A,35H
CJNE A,#0AH,Z1
LJMP Z4
Z3:MOV A,35H
CJNE A,#04H,Z1
Z4:MOV 35H,#00H
INC 36H
MOV A,36H
CJNE A,#03H,CLK_CHANGEEND
MOV 36H,#00H
;后面是年月日
INC 37H
MOV A,38H
CJNE A,#03H,ZYB1
MOV A,37H
CJNE A,#01H,CLK_CHANGEEND
LJMP ZYB2
ZYB1:MOV A,37H
CJNE A,#0AH,CLK_CHANGEEND
ZYB2:MOV 37H,#00H
INC 38H
MOV A,38H
CJNE A,#04H,CLK_CHANGEEND
MOV 37H,#01H
MOV 38H,#00H
INC 39H
MOV A,3AH
CJNE A,#01H ,ZYB3
MOV A,39H
CJNE A,#03H,CLK_CHANGEEND
LJMP ZYB4
ZYB3:MOV A,39H
CJNE A,#0AH,CLK_CHANGEEND
ZYB4:MOV 39H,#00H
INC 3AH
MOV A,3AH
CJNE A,#02H,CLK_CHANGEEND
mov 39h,#01h
MOV 3AH,#00H
INC 3BH
MOV A,3BH
CJNE A,#0AH,CLK_CHANGEEND
MOV 3BH,#00H
INC 3CH
MOV A,3CH
CJNE A,#0AH,CLK_CHANGEEND
MOV 3CH,#00H
CLK_CHANGEEND:
RET
READKEY:
MOV 20H,P0
JNB 00H,K0READ
LJMP READKEY1
K0READ:LJMP K0
READKEY1:JNB 01H,K1READ
LJMP READKEY2
K1READ:LJMP K1
READKEY2:JNB 02H,K2READ
LJMP READKEY3
K2READ:LJMP K2
READKEY3:JNB 03H,K3READ
LJMP READKEY4
K3READ:LJMP K3
READKEY4:JNB 04H,K4READ
LJMP READKEY5
K4READ:LJMP K4
READKEY5:JNB 05H,K5READ
LJMP READEND
K5READ:LJMP K5
READEND:
MOV 20H,#0FFH
RET
K0:
CALL DELAY
JB 00H,K0END
CLR P2.7
CLR TR1
CLR 19H
CLR 1DH
CLR 1EH
MOV 20H,#0FFH
MOV 21H,#00H
MOV 22H,#00H
MOV 24H,#00H
MOV 25H,#00H
MOV 59H,#00H
JB 1CH,K01
CLR 1CH
LJMP K0END
K01:SETB 1CH
K0END:
LJMP READEND
K1:
CALL DELAY
JB 01H,K1END
SETB 19H
JB 1CH,K1K
MOV 21H,#00100000B
MOV 24H,#00100000B
SJMP K1KK
K1K:
MOV 22H,#00100000B
MOV 25H,#00100000B
K1KK:LCALL T10
K1END:
LJMP READEND
K2:
LCALL DELAY
JB 02H,K2END
JNB 19H,K2K
SJMP K2KK
K2K:
JNB 1DH,K2END
K2KK:
CLR TR1
CLR P2.7
JB 1CH,K22
MOV A,24H
RR A
CJNE A,#00000001B,K100
MOV 24H,#00100000B
K100:MOV 24H,A
MOV 21H,24H
SJMP K23
K22:MOV A,25H
RR A
CJNE A,#00000001B,K101
MOV 25H,#00100000B
K101:MOV 25H,A
MOV 22H,25H
K23:
LCALL T10
K2END:
LJMP READEND
K3:
CALL DELAY
JB 03H,K30
LJMP K31
K30:LJMP K3END
K31:JNB 19H,K32
LJMP K33
K32:
JNB 1DH,K30
K33:
LCALL T10
JB 1DH,K5CHANGEK1
LJMP A1
K5CHANGEK1:LJMP K5CHANGE
A1:
JB 1CH,K3CHANGE1
JB 20H,L0
JB 21H,L1
JB 22H,L2
JB 23H,L003
LJMP L04L04
L003:LJMP L3
L04L04:JB 24H,L004
LJMP L05L05
L004:LJMP L4
L05L05:JB 25H,L005
LJMP K3END
L005:LJMP L5
K3CHANGE1:
LL6:JB 28H,LLL6
LJMP LL7
LLL6:LJMP L6
LL7:JB 29H,LLL7
LJMP LL8
LLL7:LJMP L7
LL8:JB 2AH,LLL8
LJMP LL9
LLL8:LJMP L8
LL9:JB 2BH,LLL9
LJMP LL10
LLL9:LJMP L9
LL10:JB 2CH,LLL10
LJMP LL11
LLL10:LJMP L10
LL11:JB 2DH,LLL11
LJMP K3END
LLL11:LJMP L11
L0:
INC 31H
MOV A,31H
CJNE A,#0AH,L00
MOV 31H,#00H
L00:LJMP K3END
L1:
INC 32H
MOV A,32H
CJNE A,#06H,L01
MOV 32H,#00H
L01:LJMP K3END
L2:
INC 33H
MOV A,33H
CJNE A,#0AH,L02
MOV 33H,#00H
L02:LJMP K3END
L3:
INC 34H
MOV A,34H
CJNE A,#06H,L03
MOV 34H,#00H
L03:LJMP K3END
L4:
INC 35H
MOV A,36H
CJNE A,#02H,GOOD1
MOV A,35H
CJNE A,#04H,L04
SJMP GOOD3
GOOD1:MOV A,35H
CJNE A,#0AH,L04
GOOD3:MOV 35H,#00H
L04:LJMP K3END
L5:
INC 36H
MOV A,36H
CJNE A,#03H,L05
MOV 36H,#00H
L05:LJMP K3END
L6:INC 37H
MOV A,38H
CJNE A,#03H,LUCK1
MOV A,37H
CJNE A,#01H,L06
LJMP LUCK2
LUCK1:
MOV A,37H
CJNE A,#0AH,L06
LUCK2:MOV 37H,#00H
L06:LJMP K3END
L7:MOV A,37H
CJNE A,#0,LL1
LJMP LL2
LL1:MOV A,38H
CJNE A,#01H,LL3
SJMP LL2
LL3:CJNE A,#02H,LL2
LJMP L07
LL2:INC 38H
MOV A,38H
CJNE A,#04H,L07
MOV 38H,#00H
L07:LJMP K3END
L8:INC 39H
MOV A,3AH
CJNE A,#1,LUCK3
MOV A,39H
CJNE A,#03H,L08
LJMP LUCK4
LUCK3:MOV A,39H
CJNE A,#0AH,L08
LUCK4:MOV 39H,#00H
L08:LJMP K3END
L9:
MOV A,39H
CJNE A,#00H,ZL1
SJMP MS2
ZL1:CJNE A,#01H,ZL2
SJMP MS2
ZL2:CJNE A,#02H,ZL3
SJMP MS2
ZL3:MOV 3AH,#00H
LJMP L09
MS2:INC 3AH
MOV A,3AH
CJNE A,#02H,L09
MS:MOV 3AH,#00H
L09:LJMP K3END
L10:INC 3BH
MOV A,3BH
CJNE A,#0AH,L010
MOV 3BH,#00H
L010:LJMP K3END
L11:
INC 3CH
MOV A,3CH
CJNE A,#0AH,L011
MOV 3CH,#00H
L011:LJMP K3END
K5CHANGE:
JB 20H,L20
JB 21H,L21
JB 22H,L22
JB 23H,L23
JB 24H,L24
JB 25H,L25
SJMP K3END
L20:INC 41H
MOV A,41H
CJNE A,#0AH,L020
MOV 41H,#00H
L020:LJMP K3END
L21:INC 42H
MOV A,42H
CJNE A,#06H,L021
MOV 42H,#00H
L021:LJMP K3END
L22:INC 43H
MOV A,43H
CJNE A,#0AH,L022
MOV 43H,#00H
L022:LJMP K3END
L23:INC 44H
MOV A,44H
CJNE A,#06H,L023
MOV 44H,#00H
L023:LJMP K3END
L24:INC 45H
MOV A,46H
CJNE A,#02H,FY1
MOV A,45H
CJNE A,#04H,K3END
LJMP FY2
FY1:MOV A,45H
CJNE A,#0AH,K3END
FY2:MOV 45H,#00H
LJMP K3END
L25:
INC 46H
MOV A,46H
CJNE A,#03H,L025
MOV 46H,#00H
L025:
K3END :
LJMP READEND
K4:
LCALL DELAY
JB 04H,K4END
MOV 50H , #31H
MOV 51H, #11111110B
MOV 52H, #00H
MOV 53H, #37H
MOV 54H, #11111110B
MOV 55H, #00H
MOV 21H,#00H
MOV 22H,#00H
CPL 1CH
K4END:
LJMP READEND
K5:
CALL DELAY
JB 05H,K5END
SETB 1DH
MOV 21H,#00100000B
MOV 24H,#00100000B
LCALL T10
K5END:
LJMP READEND
DISP:
JB 1DH,DISPEND
JB 1CH,DISPEND
MOV DPTR,#DISTABLE
MOV R0,50H
MOV a,@R0
MOVC a,@A+DPTR
MOV P1,a
MOV a,51H
JNB P2.7,D0
ORL A,#10000000B
SJMP D1
D0:ANL A, #01111111B
D1:ORL A,21H
MOV P2,a
MOV a,51H
RL A
MOV 51H,A
CALL CAMPARE
CALL ZDBS
INC 50H
INC 52H
MOV A,52H
CJNE A,#06H,DISPEND
MOV 52H,#00H
MOV 51H,#11111110B
MOV 50H,#31H
DISPEND:
RET
DISP1:
JB 1DH,DISP1END
JNB 1CH,DISP1END
MOV DPTR,#DISTABLE
MOV R0,53H
MOV a,@R0
MOVC a,@A+DPTR
MOV P1,a
MOV a,54H
JNB P2.7,D2
ORL A,#10000000B
SJMP D3
D2:ANL A,#01111111B
D3:ORL A,22H
MOV P2,a
MOV a,54H
RL A
MOV 54H,A
CALL CAMPARE
CALL ZDBS
INC 53H
INC 55H
MOV A,55H
CJNE A,#06H,DISP1END
MOV 55H,#00H
MOV 54H,#11111110B
MOV 53H,#37H
DISP1END:
RET
DISP2:
JNB 1DH,DISP2END
MOV DPTR,#DISTABLE
MOV R0,56H
MOV a,@R0
MOVC a,@A+DPTR
MOV P1,a
MOV a,57H
JNB P2.7 , D4
ORL A,#10000000B
SJMP D5
D4:ANL A, #01111111B
D5:ORL A,21H
MOV P2,a
MOV a,57H
RL A
MOV 57H,A
CALL CAMPARE
CALL ZDBS
INC 56H
INC 58H
MOV A,58H
CJNE A,#06H,DISP2END
MOV 58H,#00H
MOV 57H,#11111110B
MOV 56H,#41H
DISP2END:
RET
CAMPARE:
MOV A,36H
CJNE A,46H,CAMPAREEND
MOV A,35H
CJNE A,45H,CAMPAREEND
MOV A,34H
CJNE A,44H,CAMPAREEND
MOV A,33H
CJNE A,43H,CAMPAREEND
MOV A,32H
CJNE A,42H,CAMPAREEND
MOV A,31H
CJNE A,41H,CAMPAREEND
SETB P2.7;需加時間1分鐘
SETB 1EH
CALL T11;掉用定時器1
CAMPAREEND:
RET
ZDBS:
MOV A,34H
CJNE A,#00,ZDBSEND
MOV A,33H
CJNE A,#00H,ZDBSEND
MOV A,32H
CJNE A,#00H,ZDBSEND
MOV A,31H
CJNE A,#00H,ZDBSEND
SETB P2.7
SETB 1EH
LCALL T12
ZDBSEND:
RET
T10:MOV TH1 , #0ECH
MOV TL1 , #78H
MOV R2,#20
SETB TR1
RET
T11:MOV TH1 , #0ECH
MOV TL1 , #78H
MOV R5,#00H
MOV 5AH,#30
SETB TR1
RET
T12:
MOV TH1 , #0ECH
MOV TL1 , #78H
MOV R5,#00H
MOV 5AH,#03H
SETB TR1
RET
DELAY:
MOV 59H,#00H
DELAY1:INC 59H
MOV A,59H
CJNE A,#200,DELAY2
SJMP DELAYEND
DELAY2:MOV R3,#200
DJNZ R3,$
SJMP DELAY1
DELAYEND:
RET
DISTABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -