📄 可调时钟.asm
字号:
$MOD841
SP0 EQU 50H
CLK81 EQU P3.5
DAT81 EQU P3.3
SHUZHI EQU 30H
KEY EQU P3.2
KEYVAL EQU 31H
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SERVE1
ORG 0053H
LJMP SERVE2
ORG 0060H
MAIN: LJMP INI841
PP: LCALL INI8281
SETB EA
MOV IEIP2,#04H
SETB EX0
SETB PX0
MOV TIMECON,#53H
MOV INTVAL,#01H
HERE: LJMP $
SERVE1:MOV A,#93H
LCALL WTO81
LCALL RDKVAL
MOV A,KEYVAL
CJNE A,#01H,S1
LCALL FUNCTION1
LJMP S5
S1: CJNE A,#02H,S2
LCALL FUNCTION2
LJMP S5
S2: CJNE A,#04H,S3
LCALL FUNCTION3
LJMP S5
S3: CJNE A,#06H,S4
LCALL FUNCTION4
LJMP S5
S4: CJNE A,#00H,S5
LCALL FUNCTION5
S5: RETI
SERVE2:LCALL XIANSHI
RETI
FUNCTION1:MOV IEIP2,#00H
MOV 40H, HOUR
MOV 41H, MIN
MOV 42H, SEC
LJMP S5
RET
FUNCTION2:MOV A,40H
INC A
MOV HOUR,A
MOV 40H,HOUR
CJNE A,#24,JIXU1
CLR A
MOV HOUR,A
JIXU1: LCALL CHULI
MOV R0,#00H
MOV R1,#10H
LCALL ZHU_XIANSHI
RET
FUNCTION3:MOV A,41H
INC A
MOV MIN,A
MOV 41H,MIN
CJNE A,#60,JIXU2
CLR A
MOV MIN,A
JIXU2: LCALL CHULI
MOV R0,#30H
MOV R1,#40H
LCALL ZHU_XIANSHI
RET
FUNCTION4:MOV A,42H
INC A
MOV SEC,A
MOV 42H,SEC
CJNE A,#60,JIXU3
CLR A
MOV SEC,A
JIXU3: LCALL CHULI
MOV R0,#60H
MOV R1,#70H
LCALL ZHU_XIANSHI
RET
FUNCTION5:MOV HOUR,40H
MOV MIN,41H
MOV SEC,42H
MOV IEIP2,#04H
LJMP S5
RET
INI841:MOV R0,#0FH
CLR A
QING: MOV @R0,A
DJNZ R0,QING
MOV SP,#SP0
LCALL YS
LJMP PP
INI8281:SETB CLK81
SETB DAT81
MOV A,#12H
LCALL WTO81
MOV A,#84H
LCALL WTO81
RET
XIANSHI:MOV A,#02H
LCALL WTO81
MOV A,#0BFH
LCALL WTO81
MOV A,#05H
LCALL WTO81
MOV A,#0BFH
LCALL WTO81
;---------------------------------------------
MOV A,SEC
LCALL CHULI
MOV R0,#60H
MOV R1,#70H
LCALL ZHU_XIANSHI
MOV A,MIN
LCALL CHULI
MOV R0,#30H
MOV R1,#40H
LCALL ZHU_XIANSHI
MOV A,HOUR
LCALL CHULI
MOV R0,#00H
MOV R1,#10H
LCALL ZHU_XIANSHI
RET
ZHU_XIANSHI:MOV A,#14H
LCALL WTO81
MOV A,SHUZHI
ANL A,#0F0H
SWAP A
ORL A,R0
LCALL WTO81
MOV A,#14H
LCALL WTO81
MOV A,SHUZHI
ANL A,#0FH
ORL A,R1
LCALL WTO81
RET
CHULI:MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV SHUZHI,A
RET
WTO81: MOV R6,#08H
WAT: CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,WAT
CLR CLK81
LCALL DELAY
SETB CLK81
JNB DAT81,$
WTB81: RLC A
MOV DAT81,C
CLR CLK81
LCALL DELAY
SETB CLK81
LCALL DELAY
LCALL DELAY
DJNZ R6,WTB81
SETB DAT81
RET
RDKVAL: CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,$
CLR CLK81
LCALL DELAY
SETB CLK81
MOV R6,#08H
RD1:
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV C,DAT81
LCALL DELAY
RLC A
CLR CLK81
LCALL DELAY
SETB CLK81
DJNZ R6,RD1
MOV KEYVAL,A
RET
DELAY: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
YS: MOV R5,#00H
MOV R4,#50H
YS1: DJNZ R5,$
DJNZ R4,YS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -