汇编实现单片机电子钟编程
晶振频率为11.0592M,代码仅供参考
ORG 0000H
AJMP START
ORG 001BH
AJMP T1_INT
ORG 0100H
START:
MOV 40H,#23;小时
MOV 41H,#59;分钟
MOV 39H,#50;秒
MOV TMOD, #10H
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
SETB TR1
SETB ET1
SETB EA
LOOP:
ACALL WAITBUF
ACALL DISPLAY
AJMP LOOP
T1_INT:
PUSH ACC
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
;PSW F0 ;特殊寄存器
INC R4
CJNE R4,#10,T0L1
CPL F0
T0L1:CJNE R4,#20,T0OUT
CPL F0
MOV R4,#0
INC 39H
MOV A,39H
CJNE A,#60,T0OUT
MOV 39H,#0
INC 41H
MOV A,41H
CJNE A,#60,T0OUT
MOV 41H,#0
INC 40H
MOV A,40H
CJNE A,#24,T0OUT
MOV 40H,#0
T0OUT:
POP ACC
RETI
WAITBUF:
MOV A,40H
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
MOV A,41H
MOV B,#10
DIV AB
MOV 32H,A
MOV 33H,B
RET
DISPLAY:
MOV DPTR,#TABLE
MOV R0,#30H
MOV R1,#0FEH
MOV R3,#4
DLOOP:
MOV A,@R0
MOVC A,@A+DPTR
CJNE R3,#3,L1
JB F0,L1
ORL A,#80H
L1: MOV P0,A
MOV P2,R1
ACALL DELAY
MOV P2,#0FFH
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R3,DLOOP
RET
DELAY:
MOV R7,#250
DJNZ R7,$
RET
TABLE:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END