单片机时钟程序
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP TT0
ORG 001BH
AJMP TT1
ORG 0030H
S1 BIT P3.7 ;功能键
S2 BIT P3.6 ;,1键
S3 BIT P3.5 ;,1键
MAIN: MOV SP,#2FH
MOV TMOD,#11H ;时钟频率为12MHz
MOV TH0,#4CH
MOV TL0,#00H
MOV TH1,#4CH
MOV TL1,#00H
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
MOV R2,#20
MOV R4,#23H
MOV R5,#59H
MOV R6,#00H
MOV R7,#10
;
LOOP:CLR F0
MOV R3,#00H ;标志位清零
LCALL RIS
JB S1,LOOP
MOV 64H,#250
LOOP1:LCALL RIS ;功能键1.5秒
JB S1,LOOP
LCALL RIS
DJNZ 64H,LOOP1
CLR TR0
INC R3 ;调整时位处理
LOOP2:LCALL RIS
JNB S1,LOOP2;
LCALL RIS
LCALL RIS
JNB S1,LOOP2 ;等功能键释放
LOOP3:LCALL RIS ;调整位处理
JB S1,LOPS
LCALL RIS
LCALL RIS
JB S1,LOPS
;
INC R3 ;调整下一位处理
;
LOOP4:LCALL RIS
JNB S1,LOOP4
LCALL RIS
LCALL RIS
JNB S1,LOOP4
;
LOPS: CJNE R3,#01H,LOPF ;不是调时转
JB S2,LOPS1 ;加1键没有闭合转
LCALL RIS
LCALL RIS
JB S2,LOPS1
MOV A,R4
ADD A,#01H
DA A
MOV R4,A
CJNE R4,#24H,LOPS2
MOV R4,#00H LOPS2: LCALL RIS
JNB S2,LOPS2 ;等加1键释放
LCALL RIS
JNB S2,LOPS2
AJMP LOOP3
;
LOPS1:JB S3,LOOP3
LCALL RIS
LCALL RIS
JB S3,LOOP4
MOV A,#99H ;减1十进制调整
ADD A,R4
DA A
MOV R4,A
CJNE R4,#23H,LOPS3
MOV R4,#23H
LOPS3:LCALL RIS
JNB S3,LOPS3
LCALL RIS
JNB S3,LOPS3
AJMP LOOP3
;
LOPF: CJNE R3,#02H,LOPM ;不是调分转
JB S2,LOPF1
LCALL RIS
LCALL RIS
JB S2,LOPF1
MOV A,R5
ADD A,#01H
DA A
MOV R5,A
CJNE R5,#60H,LOPF2
MOV R5,#00D
LOPF2:LCALL RIS
JNB S2,LOPF2
LCALL RIS
JNB S2,LOPF2
GG1:AJMP LOOP3
;
LOPF1:JB S3,GG1
LCALL RIS
LCALL RIS
JB S3,LOPF1
MOV A,#99H
ADD A,R5
DA A
MOV R5,A
CJNE R5,#99H,LOPF3
MOV R5,#59H
LOPF3:LCALL RIS
JNB S3,LOPF3
LCALL RIS
JNB S3,LOPF3 AJMP LOOP3
;
LOPM: CJNE R3,#03H,LOPK
JB S2,LOPM1
LCALL RIS
LCALL RIS
JB S2,LOPM1
MOV A,R6
ADD A,#01H
DA A
MOV R6,A
CJNE R6,#60D,LOPM2
MOV R6,#00H
LOPM2:LCALL RIS
JNB S2,LOPM2
LCALL RIS
JNB S2,LOPM2
GG:AJMP LOOP3
;
LOPM1:JB S3,GG ;转LOOP3(GG)
LCALL RIS
LCALL RIS
JB S3,GG
MOV A,#99H
ADD A,R6
DA A
MOV R6,A
CJNE R6,#99H,LOPM3
MOV R6,#59H
LOPM3:LCALL RIS
JNB S3,LOPM3
LCALL RIS
JNB S3,LOPM3
AJMP LOOP3
;
LOPK: MOV R3,#00H
SETB TR0
AJMP LOOP
;
;///////////////////////////////////
; 显示子程序
;///////////////////////////////////
RIS: CJNE R3,#01H,MM1 ;显示时位
JNB F0,MM2 MM1: MOV A,R4 ;时的十位
SWAP A
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CLR P2.0
MOV 60H,#250D
DJNZ 60H,$
SETB P2.0
;
MOV A,R4 ;时的个位
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.1
MOV 60H,#250D
DJNZ 60H,$
SETB P2.1
;
MM2: CJNE R3,#02H,MM3 ;显示分位
JNB F0,MM4
MM3: MOV A,R5 ;显示分的十位
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
MOV 60H,#250D
DJNZ 60H,$
SETB P2.2
;
MOV A,R5 ;显示分的个位
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
MOV 60H,#250D
DJNZ 60H,$
SETB P2.3
;
MM4: CJNE R3,#03H,MM5 ;显示秒
JNB F0,MM6
MM5: MOV A,R6 ;显示秒的时位
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
MOV 60H,#250
DJNZ 60H,$
SETB P2.4
;
MOV A,R6 ;显示秒的个位
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
CLR P2.5
MOV 60H,#250
DJNZ 60H,$
SETB P2.5
MM6: RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H
TT0: PUSH ACC
MOV TH0,
MOV TL0,
DJNZ R2,TTT1
MOV R2,
MOV A,R6
ADD A,#01H
DA A
MOV R6,A
CJNE R6,#60H,TTT1
MOV R6,#00H
MOV A,R5
ADD A,#01H
DA A
MOV R5,A
CJNE R5,#60H,TTT1
MOV R5,#00H
MOV A,R4
ADD A,#01H
DA A
MOV R4,A
CJNE R4,#24H,TTT1
MOV R4,#00H
TTT1:POP ACC
RETI
TT1: MOV TH1,
MOV TL1,
DJNZ R7,TT2
MOV R7,#5
CPL F0
TT2: RETI
END