📄 程序.txt
字号:
MARKT0 EQU 00H ;t0中断标志
MARKT0T EQU 01H ;t0中断时间
MARKT1T EQU 02H
DIGTL0 EQU 40H ;数码管地址个
DIGTH0 EQU 41H ;数码管地址十
DIGTL1 EQU 42H ;数码管地址百
DIGTH1 EQU 43H ;数码管地址千
HOUR1 EQU 38H ;小时十位
HOUR2 EQU 39H ;小时个位
MINT1 EQU 3AH ;分钟十位
MINT2 EQU 3BH ;分钟个位
ORG 0000H
LJMP INITIAL
ORG 000BH
LJMP PTF0
;*****************************************************************************
ORG 0080H
INITIAL:MOV SP,#5FH ;初始化
MOV MARKT0T,#14H
MOV MARKT1T,#60
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TMOD,#1
MOV IP,#2
MOV IE,#82H
SETB TR0
CLR P1.4
CLR P1.5
CLR P1.6
CLR P1.3
MOV 30H,#0 ;给等待时间0300初值(按RESET键则回初值)
MOV 31H,#0
MOV 32H,#3
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV 36H,#8
MOV 37H,#0
MAIN: LCALL KEY ;处理显示当前时间和等待时间
LCALL DISPLAY
LJMP MAIN
;*****************************************************************************
DISPLAY: PUSH DPL
PUSH DPH
CLR P2.4
CLR P2.5
CLR P2.6
CLR P2.7
MOV A,38H
MOV DPTR,#SEGTAB
MOVC A,@A+DPTR
MOV P0, A
SETB P2.4
LCALL DL10MS
CLR P2.4
MOV A,39H
MOV DPTR,#SEGTAB
MOVC A,@A+DPTR
MOV P0, A
SETB P2.5
LCALL DL10MS
CLR P2.5
MOV A,3AH
MOV DPTR,#SEGTAB
MOVC A,@A+DPTR
MOV P0, A
SETB P2.6
LCALL DL10MS
CLR P2.6
MOV A,3BH
MOV DPTR,#SEGTAB
MOVC A,@A+DPTR
MOV P0, A
SETB P2.7
LCALL DL10MS
CLR P2.7
POP DPH
POP DPL
RET
SEGTAB: DB 03H,9FH,25H,0DH,99H ;0,1,2,3,4
DB 49H,41H,1FH,01H,09H ;5,6,7,8,9
;****************************************************************************** PTF0: PUSH ACC
MOV TL0,#0B0H
MOV TH0,#3CH
PT01: DJNZ MARKT0T,PT0R
MOV MARKT0T,#14H
LCALL WAITDSP
PT02: DJNZ MARKT1T,PT0R
LCALL TIME
MOV MARKT1T,#60
PT0R: POP ACC
MOV TL0,#0B0H
MOV TH0,#03CH
RETI
;******************************************************************************
WAITDSP: MOV A,30H
CJNE A,#0,W2
MOV A,31H
CJNE A,#0,W3
MOV A,32H
CJNE A,#0,W4
CLR P1.6
RESET: LCALL DISPLAY
JB P1.1,RESET
MOV 30H,#0
MOV 31H,#0
MOV 32H,#3
MOV 33H,#0
RET
W2:DEC 30H
LCALL DISPLAY
LCALL COUNT
RET
W3:MOV 30H,#9
DEC 31H
LCALL COUNT
RET
W4:MOV 30H,#9
MOV 31H,#5
DEC 32H
LCALL DISPLAY
LCALL COUNT
RET
;************************************************************************** COUNT: MOV A,32H
CJNE A,#2,C14
C12: MOV A,31H
CJNE A,#0,C25
C13: MOV A,30H
CJNE A,#9,C21
SETB P1.3
C21: MOV A,30H
CJNE A,#0,C25
CLR P1.3
C14: MOV A,32H
CJNE A,#1,C23
C15: MOV A,31H
CJNE A,#0,C25
C16: MOV A,30H
CJNE A,#9,C17
SETB P1.4
C17: MOV A,30H
CJNE A,#0,C25
CLR P1.4
C23: MOV A,32H
CJNE A,#0,C25
MOV A,31H
CJNE A,#0,C25
MOV A,30H
CJNE A,#9,C24
SETB P1.5
C24: MOV A,30H
CJNE A,#1,C25
CLR P1.5
SETB P1.6
C25: RET
;******************************************************************************
TIME:PUSH ACC
MOV A,34H
CJNE A,#9,C2
MOV A,35H
CJNE A,#5,C3
MOV A,37H
CJNE A,#2,C4
MOV A,36H
CJNE A,#3,C5
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV 37H,#0
POP ACC
RET
C2:ADD A,#1
MOV 34H,A
POP ACC
RET
C3:ADD A,#1
MOV 35H,A
MOV 34H,#0
POP ACC
RET
C4:MOV A,36H
CJNE A,#9,C7
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV 37H,#0
ADD A,#1
MOV 36H,A
POP ACC
RET
C7:MOV 34H,#0
MOV 35H,#0
ADD A,#1
MOV 36H,A
POP ACC
RET
C5:MOV 34H,#0
MOV 35H,#0
ADD A,#1
MOV 37H,A
POP ACC
RET
;*****************************************
KEY: JNB P1.0,TIME1
LJMP WAIT
TIME1: MOV 38H,34H
MOV 39H,35H
MOV 3AH,36H
MOV 3BH,37H
RET
WAIT: MOV 38H,30H
MOV 39H,31H
MOV 3AH,32H
MOV 3BH,33H
RET
;***********************************************************************
DL10MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -