📄 7279time.asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PT_T0
TM BIT 00H ;一秒定时标志
BF_P4 EQU 4FH ;40H开始的为扫描缓冲区
BF_P9 EQU 3FH ;设置指针指向40H,97H开始的单元
ORG 0010H
MAIN:MOV TMOD,#01H ;系统初始化
MOV IE,#82H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV SP,#67H
MOV R6,#20H
MOV R0,#30H
MOV A,#00H
L0: MOV @R0,A
INC R0 ;30H开始的为显示缓冲区
DJNZ R6,L0
MOV BF_P4,#40H
MOV BF_P9,#97H
MOV 50H,#14H
CLR TM
SETB TR0
L6: JNB TM,L5 ;主循环,等待刷新
ACALL XS
L5: SJMP L6
XS:CLR TM ;刷新值装入显示缓冲区
MOV R0,#32H
MOV R1,#40H
MOV R6,#03H
S4:MOV A,@R0
MOV B,A
SWAP A
ANL A,#0FH
MOV @R1,A
MOV A,B
ANL A,#0FH
INC R1
MOV @R1,A
DEC R0
INC R1
DJNZ R6,S4
RET
DT:
MOV R0,BF_P4
MOV R1,BF_P9
ST:
CLR P1.0 ;扫描一位子程序
MOV R6,#0CH
L2:DJNZ R6,L2
MOV A,R1
ACALL STFS
MOV R6,#04H
L3:DJNZ R6,L3
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
S1:ACALL STFS
MOV R6,#02H
L4:DJNZ R6,L4
SETB P1.0
INC BF_P4
DEC BF_P9
MOV A,R0
CJNE A,#47H,L7
L7:JC L8
MOV BF_P4,#40H
MOV BF_P9,#97H
L8: RET
TAB: DB 7EH,30H,6DH,79H,33H ;段数据表
DB 5BH,5FH,70H,7FH,7BH
STFS:
MOV R7,#08H
L_1: RLC A
MOV P1.2,C
SETB P1.1
MOV R6,#02H
L_2: DJNZ R6,L_2
CLR P1.1
MOV R6,#02H
L_3: DJNZ R6,L_3
DJNZ R7,L_1
RET
PT_T0: ;中断子程序
MOV TH0,#3CH ;定时50MS
MOV TL0,#0B0H
PUSH PSW
PUSH ACC
MOV PSW,#08H
LCALL DT
DJNZ 50H,PT_R
MOV 50H,#14H
SETB TM ;一秒时间到,置位00H,显示刷新
MOV R0,#30H ;秒加一
MOV A,@R0
ADD A,#01H
DA A
MOV @R0,A
CJNE A,#60H,PT_R
MOV @R0,#00H
INC R0
MOV A,@R0
ADD A,#01H ;分加一
DA A
MOV @R0,A
CJNE A,#60H,PT_R
MOV @R0,#00H
INC R0
MOV A,@R0
ADD A,#01H ;时加一
DA A
MOV @R0,A
CJNE A,#24H,PT_R
MOV @R0,00H
PT_R:POP ACC
POP PSW
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -