📄 cl.asm
字号:
;CL.ASM 数字时钟程序
LO EQU 24
HI EQU 99
CO EQU 200
K2 REG P2.5
BUF EQU 30H
HOUR EQU 34H
MIN EQU 35H
SEC EQU 36H
DEDA EQU 37H
SECO EQU 38H
K1 REG P2.4
K2 REG P2.5
K3 REG P2.6
K4 REG P2.7
WLED REG P3.7
ORG 0H
JMP BEGIN
ORG 0BH
JMP T0_INT
BEGIN:
CALL LED_BL
CALL INIT
CALL INIT_TIMER
MOV A , # 0FFH
MOV P0 , A
CALL LOAD_DATA
LOOP:
CALL TIME_PRO
CALL SCAN1
JB K1 , M1
CALL LED_BL
CALL SET_TIME
JMP LOOP
M1 : JB K2 , M2
JMP LOOP
M2 : JB K3 , M3
JMP LOOP
M3 : JB K4 , M4
JMP LOOP
M4 :
JMP LOOP
TITLE : DB “CL.ASM 8051 CLOCK WITH SEG X 4”
DELAY :
MOV R6 , # 50
D1 : MOV R7 , # 100
DJNZ R7 , ﹩
DJNZ R6 , D1
DJNZ R5 , DELAY
RET
DELAY 1:
MOV R6 , # 1
D2 : MOV R7 , # 100
DJNZ R7 , ﹩
DJNZ R6 , D2
DJNZ R5 , DELAY 1
RET
LED_BL :
MOV R4 , # 6
LE1 : CPL WLED
MOV R5 , # 5
CALL DELAY
DJNZ R4 , LE1
RET
TABLE :
DB 3FH , 06H , 5BH , 4FH , 66H
DB 6DH , 7DH , 07H , 7FH , 6FH
DB 77H , 7CH , 58H , 5EH , 79H
DB 71H
SCAN 1 :
MOV R0 , # BUF
MOV R2 , # 4
MOV ACC , # 0FEH
S1 :
PUSH ACC
MOV A , @R0
MOV P0 , ACC
POP ACC
MOV P2 , ACC
MOV R5 , # 20
CALL DELAY 1
RL A
INC R0
DJNZ R2 , S1
RET
LOAD_DATA :
MOV BUF , # 3FH
MOV BUF+1 , # 3FH
MOV BUF+2 , # 3FH
MOV BUF+3 , # 3FH
RET
INIT :
MOV DEDA , # 0
MOV SEC0 , # 0
MOV SEC , # 0
MOV MIN , # 0
MOV HOUR , # 0
RET
INIT_TIMER :
MOV TMOD , # 00000000B
MOV IE , # 10000010B
MOV TL0 , # LO
MOV TH0 , # HI
SETB TR0
RET
T0_INT :
PUSH ACC
MOV TL0 , # LO
MOV TH0 , # HI
INC DEDA
MOV A , DEDA
CJNE A , # CO , TT1
MOV DEDA , # 0
CPL WLED
IINC SEC
MOV A , SEC
CJNE A , # 60 , TT1
INC HOUR
MOV MIV , # 0
MOV A , HOUR
CJNE A , # 24 ,TT1
MOV SEC , # 0
MOV MIN , # 0
MOV HOUR , # 0
TT1 :
POP ACC
RETI
TIME_PRO :
MOV A , SEC
MOV B , SEC0
CJNE A , B , TI1
JMP TI2
TI1 : CALL CONV
MOV SEC0 , SEC
TI2 : RET
CONV 1 :
MOV A , MIN
MOV B , # 10
DIV AB
MOV DPTR , # TABLE
MOVC A , @A+DPTR
MOV BUF , A
MOV A , B
MOVC A , @A+DPTR
MOV BUF+1 , A
MOV A , SEC
MOV B , # 10
DIV AB
MOV DPTR , # TABLE
MOVC A , @A+DPTR
MOV BUF+2, A
MOV A , B
MOVC A , @A+DPTR
MOV BUF+3 , A
RET
CONV :
MOV A , HOUR
MOV B , # 10
DIV AB
MOV DPTR , # TABLE
MOVC A , @A+DPTR
MOV BUF , A
MOV A , B
MOVC A , @A+DPTR
MOV BUF+1 , A
MOV A , MIN
MOV B , #10
DIV AB
MOV DPTR , # TABLE
MOVC A , @A+DPTR
MOV BUF+2 , A
MOV A , B
MOVC A , @A+DPTR
MOV BUF+3 , A
RET
SET_TIME :
CLR TR0
MOV SEC , # 0
L0 :
CALL SCAN1
JB K2 , L1
INC HOUR
MOV A , HOUR
CJNE A , # 24 , L11
MOV HOUR , # 0
L11 :
CALL CONV
CALL SCANS
JMP L0
L1: JB K3 , L2
INC MIN
MOV A , MIN
CJNE A , # 60 , L21
MOV MN , # 0
L21 :
CALL CONV
CALL SCANS
JMP L0
L2 : JB K4 , L0
JNB K4 , ﹩
CALL LED_BL
SETB TR0
RET
SCANS :
MOV R4 , # 15
SS : CALL SCAN1
DJNZ R4 , SS
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -