📄 timer.asm
字号:
HOUR EQU 40H
MINUTE EQU 41H
SECOND EQU 42H
FLASH BIT 00H
BDPLY BIT 01H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIMER0
;============================================
ORG 0100H
MAIN: MOV SP, #100
;-------------------------------------------
MOV R0, #30H ;初始化显示存储区首地址
MOV R2, #01H ;初始化LED位选变量
;-------------------------------------------
MOV TMOD, #01H
MOV TL0, #60H
MOV TH0, #0F0H
SETB EA
SETB ET0
SETB TR0
;-------------------------------------------
MOV R3, #250
MOV HOUR, #18
MOV MINUTE, #35
MOV SECOND, #35
;--------------------------------------------
LOOP: LCALL DELAY
LCALL Transform
LCALL Display ;调用LED扫描程序
LJMP LOOP
;============================================
;T0 中断服务程序
TIMER0: MOV TL0, #62H
MOV TH0, #0F0H
;-------------------------------------------
DJNZ R3, TEND
MOV R3, #250
;-------------------------------------------
CPL FLASH
INC SECOND ;秒+1,并判断
MOV R4, SECOND
CJNE R4, #60, TEND
MOV SECOND, #0
;-------------------------------------------
INC MINUTE
MOV R4, MINUTE
CJNE R4, #60, TEND
MOV MINUTE, #0
;-------------------------------------------
INC HOUR
MOV R4, HOUR
CJNE R4, #24, TEND
MOV HOUR, #0
;-------------------------------------------
TEND: RETI
;====================================================
;====================================================
Transform:
MOV A, SECOND
MOV B, #10
DIV AB
MOV 30H, B
MOV 31H, A
;-------------------------------------------
MOV A, MINUTE
MOV B, #10
DIV AB
MOV 32H, B
MOV 33H, A
;-------------------------------------------
MOV A, HOUR
MOV B, #10
DIV AB
MOV 34H, B
MOV 35H, A
RET
;============================================
;************ 动态扫描显示程序 **************
; P0 LED段码接口
; P1 LED位选接口
; R2 记录当前要显示的LED位置
; R0 指向显示存储区(即存储要显示的数的地址)
;============================================
Display:
MOV A, @R0
MOV DPTR, #GTAB
MOVC A, @A+DPTR
;-------------------------------------------
MOV P1, #0
JNB FLASH, L1
CJNE R2, #00000100B, L0
ORL A, #80H
L0: CJNE R2, #00010000B, L1
ORL A, #80H
L1: MOV P0, A
MOV P1, R2
;-------------------------------------------
INC R0
MOV A, R2
RL A
MOV R2, A
CJNE A, #40H, RETURN
MOV R2, #01H
MOV R0, #30H
RETURN: RET
;==========================================
DELAY: MOV R6, #5
LD1: MOV R7, #50
DJNZ R7, $
DJNZ R6, LD1
RET
;LED段码表
GTAB: DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,B
DB 58H,5EH,7BH,71H,00H,40H ;C,D,E,F, ,-
;==========================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -