TABLE3:
DB 30H,31H,32H,33H DB 34H,35H,36H,37H
;------------------------------------------------------------------- ;播放歌曲程序
;------------------------------------------------------------------- MAIN0: MOV TMOD,#11H MOV IE,#8AH MOV TH1,#3CH MOV TL1,#0B0H LCALL KS
JNZ TTM12 MOV 40H,#00H
;--------------------------------------------------------- NEXT20: MOV A,40H MOV DPH,52H MOV DPL,53H MOVC A,@A+DPTR MOV R2,A JZ STOP ANL A,#0FH MOV R1,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP W1
20
;---------------------------------------------------------- SING: DEC A MOV 22H,A RL A
MOV DPTR,#TABLE00 MOVC A,@A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A
MOVC A,@A+DPTR MOV TL0,A MOV 20H,A SETB TR0 SETB TR1 W1:
LCALL DELAY30 INC 40H
LCALL KS ;------有键跳出 JNZ STOP LJMP NEXT20
;----------------------------------------------------------- STOP: CLR TR0 CLR TR1 LJMP MAIN0
;---------------------------------------------------------- TTM12:
21
LCALL K2 MOV A,37H
CJNE A,#0EH,TTM13 CLR TR1 LCALL DELAY1 TTM120: LCALL KS LCALL DELAY1 JZ TTM120 LCALL K2 MOV A,37H
CJNE A,#0EH,TTM120 SETB TR1 LJMP NEXT20 TTM13:
CJNE A,#0CH,TTM14 MOV A,52H INC A MOV 52H,A MOV A,53H INC A MOV 53H,A MOV A,36H INC A MOV 37H,A LJMP TTM2 TTM14:
CJNE A,#0DH,TTM2 MOV A,52H DEC A
22
MOV 52H,A MOV A,53H DEC A MOV 53H,A MOV A,36H DEC A MOV 37H,A
;------------------------------------------------------ TTM2: RET
;*************************************************** ;定时器中断子程序0
;*************************************************** TT0: PUSH ACC PUSH PSW MOV TL0,20H MOV TH0,21H CPL P3.0 POP PSW POP ACC RETI
;*************************************************** ;定时器中断子程序1
;*************************************************** T1INT: MOV TH1, #3CH MOV TL1, #0B0H DJNZ L50MS,X4 MOV L50MS,#20
23
;****************---每秒种时钟刷新秒显示一次 SECSET: MOV A,SEC MOV B,#10 DIV AB ADD A,#30H
MOV P0,#0CEH ;显示秒十位 LCALL ENABLE LCALL WRITE2 MOV A,B ADD A,#30H
MOV P0,#0CFH ;显示秒个位 LCALL ENABLE LCALL WRITE2 MOV A,SEC INC A MOV SEC,A XRL A,#60 X4: JNZ OUT MINSET:
MOV SEC,#00H
;*************************************每分钟刷新分显示一次 MOV A,MIN INC A MOV MIN,A MOV B,#10 DIV AB ADD A,#30H
MOV P0,#0CBH ;显示分十位
24