代碼是用匯編寫的,見下;clock
LEDBUF EQU 7AH
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV 21H,#00H;時鐘清零
MOV 22H,#00H
MOV 23H,#00H
MOV TMOD,#01H;設定定時器工作模式 方式1 16位定時器 GATE=0_軟件控制計數 C/T=0_定時器模式
MOV TL0,#0B0H
MOV TH0,#0F0H
MOV R7,#00H;50ms計數寄存器
SETB TR0
COUNT: ;SETB TR0;開始計時
LCALL DISPLAY
JBC TF0,SECOND
AJMP COUNT
SECOND: ;LCALL DISPLAY
CLR TF0
MOV TL0,#0B0H;重新裝載計數初值
MOV TH0,#0F0H
SETB TR0
INC R7;定時器每溢出1次,50ms計數寄存器+1
CJNE R7,#20,COUNT;50ms計數器計滿20次則為1s,秒計數器+1
MOV R7,#00H
INC 21H
MOV R6,21H
CJNE R6,#12,COUNT
;LCALL DISPLAY
MOV 21H,#00H
INC 22H
MOV R6,22H
CJNE R6,#12,COUNT
;LCALL DISPLAY
MOV 22H,#00H
INC 23H
;LCALL DISPLAY
MOV R6,23H
CJNE R6,#10,COUNT
AJMP MAIN
DISPLAY:
MOV R1,#00000001B
MOV R4,#06H
MOV DPTR,#TABLE;
MOV A,21H
MOV B,#10
DIV AB
MOV 7EH,A
MOV 7FH,B
MOV A,22H
MOV B,#10
DIV AB
MOV 7CH,A
MOV 7DH,B
MOV A,23H
MOV B,#10
DIV AB
MOV 7AH,A
MOV 7BH,B
MOV R0,#LEDBUF
DSPLAYLOOP:
MOV A,@R0
MOVC A,@A+DPTR
MOV P2,R1
MOV P0,A
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R4,DSPLAYLOOP;
RET;
TABLE:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH
DB 07H,7FH,6FH,77H,7CH,39H
DB 5EH,79H,71H,73H,40H,00H
END |