📄 naozhong .asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
;************ MAIN PROGRAM ***************
ORG 0100H
MAIN:MOV SP,#50H
MOV 20H,#00H ;BIN SECOND
MOV 21H,#00H ;BIN MINUTE
MOV 22H,#00H ;BIN HOUR
MOV 23H,#01H
MOV 24H,#01H
MOV 25H,#00H
MOV 30H,#00H ;BCD SECOND
MOV 31H,#00H ;
MOV 32H,#00H ;BCD MINUTE
MOV 33H,#00H ;
MOV 34H,#00H ;BCD HOUR
MOV 35H,#00H
MOV 36H,#01H
MOV 37H,#00H
MOV 38H,#01H
MOV 39H,#00H
MOV TMOD,#01H ;16位计数器
MOV TH0,#03CH
MOV TL0,#0B0H
MOV IE,#10000111B
SETB TR0 ;T0启动计数
MOV R2,#14H
MOV P2,#0FFH
LOOP:LCALL TIMEPRO
LCALL DISPLAY1
JB p1.0,M1
LCALL SETTIME
LJMP LOOP
M1:JB p1.1,M2
LCALL SETATIME
LJMP LOOP
M2:JB p1.3,M4
LCALL LOOKATIME
M4:LJMP LOOP
DELAY:MOV R4,#030H
DL00:MOV R5,#0FFH
DL11:MOV R6,#9H
DL12:DJNZ R6,DL12
DJNZ R5,DL11
DJNZ R4,DL00
RET
SETTIME:
L0:LCALL DISPLAY1
MM1: JB p1.1,L1
MOV C,P1.1
JC MM1
LCALL DELAY1
JC MM1
MSTOP1: MOV C,P1.1
JNC MSTOP1
LCALL DELAY1
MOV C,P1.1
JNC MSTOP1
INC 22H
MOV A,22H
CJNE A,#18H,GO12
MOV 22H,#00H
MOV 34H,#00H
MOV 35H,#00H
LJMP L0
L1:JB p1.2,L2
MOV C,P1.2
JC L1
LCALL DELAY1
JC L1
MSTOP2: MOV C,P1.2
JNC MSTOP2
LCALL DELAY1
MOV C,P1.2
JNC MSTOP2
INC 21H
MOV A,21H
CJNE A,#3CH,GO11
MOV 21H,#00H
MOV 32H,#00H
MOV 33H,#00H
LJMP L0
GO11:MOV B,#0AH
DIV AB
MOV 32H,B
MOV 33H,A
LJMP L0
GO12: MOV B,#0AH
DIV AB
MOV 34H,B
MOV 35H,A
LJMP L0
L2:JB p1.3,L0
MOV C,p1.3
JC L2
LCALL DELAY1
MOV C,P1.3
JC L2
STOP1: MOV C,P1.3
JNC STOP1
LCALL DELAY1
MOV C,P1.3
JNC STOP1
LJMP LOOP
SETATIME:LCALL DISPLAY2
N0:LCALL DISPLAY2
MM2: JB P1.2,N1
MOV C,P1.2
JC MM2
LCALL DELAY1
JC MM2
MSTOP3: MOV C,P1.2
JNC MSTOP3
LCALL DELAY1
MOV C,P1.3
JNC MSTOP3
INC 24H
MOV A,24H
CJNE A,#24,GO22
MOV 24H,#00H
MOV 38H,#00H
MOV 39H,#00H
LJMP N0
N1:JB P1.0,N2
MOV C,P1.0
JC N1
LCALL DELAY1
JC N1
MSTOP4: MOV C,P1.0
JNC MSTOP4
LCALL DELAY1
MOV C,P1.0
JNC MSTOP4
INC 23H
MOV A,23H
CJNE A,#60,GO21
MOV 23H,#00H
MOV 36H,#00H
MOV 37H,#00H
LJMP N0
GO21:MOV B,#0AH
DIV AB
MOV 36H,B
MOV 37H,A
LJMP N0
GO22: MOV B,#0AH
DIV AB
MOV 38H,B
MOV 39H,A
LJMP N0
N2:JB P1.3 ,N0
MOV C,P1.3
JC N2
LCALL DELAY1
MOV C,P1.3
JC N2
STOP2: MOV C,P1.3
JNC STOP2
LCALL DELAY1
MOV C,P1.3
JNC STOP2
LJMP LOOP
TIMEPRO:MOV A,21H
MOV B,23H
CJNE A,B,BK
MOV A,22H
MOV B,24H
CJNE A,B,BK
SETB 25H.0
MOV C,25H.0
JC XX
XX: LCALL TIMEOUT
BK:RET
TIMEOUT:
X1:LCALL BZ
LCALL DISPLAY2
CLR 25H.0
JB P1.3, X1
LCALL DELAY
CLR 25H.0
LJMP DISPLAY1
BZ:
CLR P3.7
MOV R7,#250
T2: MOV R6,#124
T3: DJNZ R6,T3
DJNZ R7,T2
SETB P3.7
RET
LOOKATIME:LCALL DISPLAY2
MM: JB P1.3,LOOKATIME
MOV C,P1.3
JC MM
LCALL DELAY1
MOV C,P1.3
JC MM
STOP3: MOV C,P1.3
JNC STOP3
LCALL DELAY1
MOV C,P1.3
JNC STOP3
LJMP LOOP
DELAY1: MOV R4,#14H
DL001: MOV R5,#0FFH
DL111: DJNZ R5,DL111
DJNZ R4,DL001
RET
;*********** TIME PROCESS **************
TIME: PUSH ACC
PUSH PSW
MOV TH0,#03CH
MOV TL0,#0B0H
DJNZ R2,RET0
MOV R2,#14H
MOV A,20H
CLR C
INC A
CJNE A,#3CH,GO1
MOV 20H,#0
MOV 30H,#0
MOV 31H,#0
MOV A,21H
INC A
CJNE A,#3CH,GO2
MOV 21H,#0H
MOV 32H,#0
MOV 33H,#0
MOV A,22H
INC A
CJNE A,#18H,GO3
MOV 22H,#00H
MOV 34H,#0
MOV 35H,#0
AJMP RET0
GO1: MOV 20H,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
AJMP RET0
GO2: MOV 21H,A
MOV B,#0AH
DIV AB
MOV 33H,A
MOV 32H,B
AJMP RET0
GO3: MOV 22H,A
MOV B,#0AH
DIV AB
MOV 35H,A
MOV 34H,B
AJMP RET0
RET0: POP PSW
POP ACC
RETI
;;;////*******--DISPLAY PART---+++++
DISPLAY1: MOV R0,#30H
MOV R3,#0FEH
MOV A,R3
PLAY1: MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD1
INC R0
MOV R3,A
LJMP PLAY1
LD1: RET
DISPLAY2: PUSH ACC
PUSH PSW
MOV R0,#36H
MOV R3,#0FBH
MOV A,R3
PLAY2: MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD2
INC R0
MOV R3,A
LJMP PLAY2
LD2: POP PSW
POP ACC
RET
;;;;;;;;;;;;;;;DELAY
DL1: MOV R7,#02H
DL: MOV R6,#0200H
DL6: DJNZ R6,$
DJNZ R7,DL
RET
DSEG1:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -