📄 led.asm
字号:
ORG 0000H ;程序执行开始地址
LJMP START ;跳至START执行
ORG 0003H ;外中断0中断入口地址
RETI ;中断返回(不开中断)
ORG 000BH ;定时器T0中断入口地址
LJMP INTT0 ;进入定时器中断程序
ORG 0013H ;外中断1中断入口地址
RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
LJMP INTT1 ;中断返回(不开中断)
ORG 0023H ;串行口中断入口地址
RETI ;中断返回(不开中断)
ORG 002BH ;定时器T2中断入口地址
RETI ;中断返回(不开中断)
ORG 0100H
START: MOV TMOD,#21H
MOV TL1,#3CH
MOV TH1,#0B0H
MOV TH0,#0B1H
MOV TL0,#0E0H
;MOV SP,#70H
SETB EA
SETB ET0
SETB TR0
;SETB ET1
;SETB TR1
START0: LCALL XSKJ ;调显示控制
;LCALL TIMEXS
SJMP START0
;进入定时器0中断程序
INTT0: MOV TH0,#0B1H
MOV TL0,#0E0H
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
SETB RS0 ;选择工作寄存器1
LCALL DSP ;扫描显示
;时间计数器
POP DPH
POP DPL
POP PSW
POP ACC
RETI
INTT1: MOV TH1,#3CH
MOV TL1,#0B0H
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
SETB RS1
DJNZ 6EH,INTT10
;LCALL GET1302
MOV 6EH,#10
INTT10:
CLR RS1
POP DPH
POP DPL
POP PSW
POP ACC
RETI
;显示控制
XSKJ: MOV R0,#0A0H ;直接显示"欢迎"
MOV DPTR,#TAB1
LCALL ZJXS
MOV R0,#0A2H
MOV DPTR,#TAB2
LCALL ZJXS
;LJMP $
XSKJ0: MOV 60H,#2
LCALL DELY ;延时1S
MOV R7,#10H ;计数
XSKJ1: LCALL ZBPZY ;左半屏左移
LCALL YBPYY ;右半屏右移
MOV 60H,#1
LCALL DELY
DJNZ R7,XSKJ1
;MOV 60H,#1
;LCALL DELY
;MOV 6EH,#10H
XSKJ2: ;LCALL ZPSY ;整屏上移
;MOV 60H,#1
;LCALL DELY
;DJNZ 6EH,XSKJ2
LCALL TIMEXS
MOV R7,#0AH ;左移显示 郑州加工业学院欢迎您
MOV DPTR,#TAB6
LCALL ZYXSDZ
MOV R7,#10H
XSKJ3: LCALL ZPSY
MOV 60H,#1
LCALL DELY
DJNZ R7,XSKJ3
RET
;=====================================================
TIMEXS: LCALL Get1302
LCALL FLBCD
LCALL FLBCD
MOV SHUHC,41H
LCALL SHUXJ
MOV R0,#0A2H
LCALL ZJXS8
MOV SHUHC,40H
LCALL SHUXJ
MOV R0,#0A3H
LCALL ZJXS8
MOV SHUHC,43H
LCALL SHUXJ
MOV R0,#0A0H
LCALL ZJXS8
MOV SHUHC,42H
LCALL SHUXJ
MOV R0,#0A1H
LCALL ZJXS8
RET
;扫描显示
DSP:
MOV R0,#0A0H
MOV R1,#0FEH
DSP0: MOV DPTR,#7FFFH
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#0BFFFH
MOV A,#0FFH
MOVX @DPTR,A
MOV DPTR,#0DFFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0EFFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0F7FFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0FBFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
LCALL DELAY
MOV A,R1
RL A
MOV R1,A
CJNE R0,#0C0H,DSP0
MOV R1,#0FEH
DSP1: MOV DPTR,#7FFFH
MOV A,#0FFH
MOVX @DPTR,A
MOV DPTR,#0BFFFH
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#0DFFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0EFFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0F7FFH
MOV A,@R0
MOVX @DPTR,A
INC R0
MOV DPTR,#0FBFFH
MOV A,@R0
MOVX @DPTR,A
INC R0
LCALL DELAY
MOV A,R1
RL A
MOV R1,A
CJNE R0,#0E0H,DSP1
RET
;送数右缓冲
;调用前先给R3,DPTR赋值
XSYHC: MOV R1,#70H
XSYHC0: MOV A,R3
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC R3
INC R3
CJNE R1,#80H,XSYHC0
RET
;送数左缓冲
;调用前先给R3,DPTR赋值
XSZHC: MOV R1,#80H
XSZHC0: MOV A,R3
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC R3
INC R3
CJNE R1,#90H,XSZHC0
RET
;直接显示
;调用前先给R0,DPTR赋值
ZJXS: MOV R3,#00H
ZJXS0: MOV A,R3
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R3
MOV A,R3
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R0
INC R0
INC R3
CJNE R3,#20H,ZJXS0
RET
;整屏左移
ZPZY: MOV R0,#0DFH
MOV R1,#7FH
MOV R2,#04H
ZPZY1: CLR C
MOV A,@R1
RLC A
MOV @R1,A
ZPZY0: MOV A,@R0
RLC A
MOV @R0,A
DEC R0
DJNZ R2,ZPZY0
DEC R1
MOV R2,#04H
CJNE R0,#9FH,ZPZY1
RET
;整屏右移
ZPYY: MOV R0,#0A0H
MOV R1,#80H
MOV R2,#04H
ZPYY1: CLR C
MOV A,@R1
RRC A
MOV @R1,A
ZPYY0: MOV A,@R0
RRC A
MOV @R0,A
INC R0
DJNZ R2,ZPYY0
INC R1
MOV R2,#04H
CJNE R0,#0E0H,ZPYY1
RET
;整屏上移
ZPSY: MOV R0,#0A0H
MOV R1,#0A4H
ZPSY0: MOV A,@R1
MOV @R0,A
INC R0
INC R1
CJNE R0,#0E0H,ZPSY0
RET
;整屏下移
ZPXY: MOV R0,#0DFH
MOV R1,#0DBH
ZPXY0: MOV A,@R1
MOV @R0,A
INC R0
INC R1
CJNE R0,#9FH,ZPXY0
RET
;半屏上移
;调用前先给R0,R1赋值
BPSY: MOV R3,#10H
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
MOV @R0,A
INC R0
INC R1
INC R0
INC R1
INC R0
INC R1
DJNZ R3,BPSY
RET
;半屏下移
;调用前先给R0,R1赋值
BPXY: MOV R3,#10H
MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
DEC R0
DEC R1
DEC R0
DEC R1
DJNZ R3,BPXY
RET
;半半屏上移
;调用前先给R0,R1赋值
BBPSY: MOV R3,#10H
MOV A,@R1
MOV @R0,A
INC R0
INC R1
INC R0
INC R1
INC R0
INC R1
INC R0
INC R1
DJNZ R3,BBPSY
RET
;半半屏下移
;调用前先给R0,R1赋值
BBPXY: MOV R3,#10H
MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
DEC R0
DEC R1
DEC R0
DEC R1
DEC R0
DEC R1
DJNZ R3,BBPXY
RET
;半屏左移
;调用前先给R0,R1赋值
BPZY: MOV R3,#08H
MOV R2,#04H
BPZY1: CLR C
MOV A,@R1
RLC A
MOV @R1,A
BPZY0: MOV A,@R0
RLC A
MOV @R0,A
DEC R0
DJNZ R2,BPZY0
DEC R1
MOV R2,#04H
DJNZ R3,BPZY1
RET
;半屏右移
;调用前先给R0,R1赋值
BPYY: MOV R3,#08H
MOV R2,#04H
BPYY1: CLR C
MOV A,@R1
RRC A
MOV @R1,A
BPYY0: MOV A,@R0
RRC A
MOV @R0,A
INC R0
DJNZ R2,BPYY0
INC R1
MOV R2,#04H
DJNZ R3,BPYY1
RET
;送数下缓冲一
;调用前先给R0,R2,DPTR 赋值
XSSXHCY: MOV A,R2
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC R2
MOVC A,@A+DPTR
MOV @R0,A
RET
;送数下缓冲二
;调用前先给R1,R3,DPTR 赋值
XSSXHCE: MOV A,R3
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC R3
MOVC A,@A+DPTR
MOV @R1,A
RET
;左半屏左移
ZBPZY: MOV R0,#0DDH
MOV R1,#8FH
ZBPZY0: MOV A,@R1
CLR C
RLC A
MOV @R1,A
MOV A,@R0
RLC A
MOV @R0,A
DEC R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -