ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0P
ORG 00BH
LJMP IT0P
ORG 0013H
LJMP INT1P
ORG 0100H
MAIN:
MOV TMOD,#01H ;定时器T0设为方式一
MOV R5,#0AH ;十次中断产生一秒
MOV R3,#00H ;利用外部中断0对时、分、秒进行切换
MOV R4,#00H ;当倒计时开始(R3=5)时对倒计时的初值不能再进行设置MOV 31H,#00H ;时
MOV 32H,#00H ;分
MOV 33H,#00H ;秒
SETB EX0
SETB EX1
SETB IT0 ;外部中断0为边沿触发
SETB IT1 ;外部中断1为边沿触发
SETB ET0
SETB EA
MOV TH0,#3CH ;定时器T0置初值
MOV TL0,#0B0H
LOOP:
MOV DPTR,#DMB ;段码表首地址放进DPTR
MOV A,33H ;对秒进行拆分
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 46H,A ;秒的十位对应的段码放进缓冲区46H
MOV A,B
MOVC A,@A+DPTR
MOV 47H,A ;秒的个位对应的段码放进缓冲区47H
MOV A,32H ;对分进行拆分
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 44H,A ;分的十位对应的段码放进缓冲区44H
MOV A,B
MOVC A,@A+DPTR
MOV 45H,A ;分的个位对应的段码放进缓冲区45H
MOV A,31H ;对时进行拆分
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 42H,A ;时的十位对应的段码放进缓冲区42H MOV A,B
MOVC A,@A+DPTR
MOV 43H,A ;时的个位对应的段码放进缓冲区43H DISPLAY:
CLR P2.7
CJNE R2,#00H,S7
MOV A,47H
SJMP S77
S7: MOV A,4FH
S77: MOV P1,A
LCALL DL1ms
SETB P2.7
CLR P2.6
CJNE R2,#00H,S6
MOV A,46H
SJMP S66
S6: MOV A,4EH
S66: MOV P1,A
LCALL DL1ms
SETB P2.6
CLR P2.5
CJNE R2,#00H,S5
MOV A,45H
SJMP S55
S5: MOV A,4DH
S55: MOV P1,A
LCALL DL1ms
SETB P2.5
CLR P2.4
CJNE R2,#00H,S4
MOV A,44H
SJMP S44
S4: MOV A,4CH
S44: MOV P1,A
LCALL DL1ms
SETB P2.4
CLR P2.3
CJNE R2,#00H,S3
MOV A,43H
SJMP S33
S3: MOV A,4BH
S33: MOV P1,A
LCALL DL1ms
SETB P2.3
CLR P2.2
CJNE R2,#00H,S2
MOV A,42H
S2: MOV A,4AH
IT0P:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R5,RETURN
MOV R5,#0AH
MOV A,33H
DEC A
MOV 33H,A
CJNE A,#0FFH,RETURN
MOV 33H,#3BH
MOV A,32H
DEC A
MOV 32H,A
CJNE A,#0FFH,RETURN
MOV 32H,#3BH
MOV A,31H
DEC A
MOV 31H,A
CJNE A,#0FFH,RETURN
MOV 31H,#17H
MOV A,30H
DEC A
MOV 30H,A
PUSH ACC
MOV A,37H
INC A
INC R1
MOV 37H,A
CJNE R1,#31,GO1
MOV 36H,#07H
MOV 37H,#01H
GO1: CJNE R1,#62,GO2
MOV 36H,#08H
MOV 37H,#01H
GO2: CJNE R1,#93,GO3
MOV 36H,#09H
MOV 37H,#01H
GO3: CJNE R1,#123,GO4
MOV R1,#17
MOV 36H,#06H
MOV 37H,#17
GO4: POP ACC
CJNE A,#0FFH,RETURN
CLR TR0
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,#00H RETURN:RETI
DL1ms:MOV R7,#02H
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
INT0P:PUSH PSW
INC R3
CJNE R3,#05H,RETURN1
SETB TR0
MOV R3,#00H
MOV R4,#01H RETURN1:POP PSW
RETI
INT1P:PUSH PSW
PUSH ACC
CJNE R4,#00H,NEXT
CJNE R3,#00H,ADD0
SJMP RETURN2
ADD0:
CJNE R3,#01H,MM
INC 33H
MOV A,33H
CJNE A,#60,RETURN2
MOV 33H,#00H
SJMP RETURN2
MM: CJNE R3,#02H,HH
INC 32H
MOV A,32H
CJNE A,#60,RETURN2
MOV 32H,#00H
SJMP RETURN2
HH: CJNE R3,#03H,DD
INC 31H
MOV A,31H
CJNE A,#24,RETURN2
MOV 31H,#00H
SJMP RETURN2
DD: CJNE R3,#04,RETURN2
INC 30H
MOV A,30H
CJNE A,#100,RETURN2
MOV 30H,#00H
SJMP RETURN2
NEXT: INC R2
CJNE R2,#02H,RETURN2
MOV R2,#00H
RETURN2:
POP ACC
POP PSW
RETI
DMB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END