📄 新建 文本文档.txt
字号:
ZISHU EQU 30H ;取码偏移量
DIS_BUFL EQU 40H ;显示缓冲低字节区(40H~60H攻32字节)
DIS_BUFH EQU 60H ;显示缓冲高字节区(60H~80H攻32字节)
LOD_BUFL EQU 80H ;加载缓冲低字节区(80H~90H)
LOD_BUFH EQU 90H ;加载缓冲高字节区(90H~A0H)
ORG 0000H
LJMP START
ORG 0100H
START:
SETB EA ;开启总中断开关
MOV SCON,#00H ;串行口初始化为方式0
MOV ZISHU,#6
LCALL CLRBUF ;把显示缓冲区清零
MOV DPTR,#TABLE
MOV R0,#LOD_BUFL
MOV R1,#LOD_BUFH
MOV R2,ZISHU
NEXT: LCALL LOADING ;把字型码加载到加载缓冲区
MOV R7,16
LOOP3: LCALL SHIFT ;把显示缓冲区内的字型移位
MOV R6,#255
LOOP2: MOV R5,#16
MOV R3,#0 ;扫描指针清零
MOV R4,#0 ;取码指针清零
LOOP1: MOV A,R3
MOV P1,A ;扫描指针送P1,选中一行
MOV R0,DIS_BUFL
MOV A,R0
ADD A,R4
MOV R0,A
MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI ;清发送完标志
MOV R0,DIS_BUFH
MOV A,R0
ADD A,R4
MOV R0,A
MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI ;清发送完标志
MOV R0,DIS_BUFL
MOV A,R0
ADD A,R4
ADD A,#16 ;取下一个字需要加16的偏移量
MOV R0,A
MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI ;清发送完标志
MOV R0,DIS_BUFH
MOV A,R0
ADD A,R4
ADD A,#16 ;取下一个字需要加16的偏移量
MOV R0,A
MOV A,@R0
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI ;清发送完标志
LCALL DELAY
INC R3 ;扫描指针+1
INC R4 ;取码指针+1
DJNZ R5,LOOP1 ;一个字需要扫描的16次是否完成?
; DJNZ R6,LOOP2 ;一个字的显示时间是否完成?
DJNZ R7,LOOP3 ;这个字是否每一行都移动了?
DJNZ R2,NEXT ;要显示的6个字是否都移动完成了?
LJMP $
;**********************************************************************************
;把显示缓冲区清零
CLRBUF:
MOV R0,#DIS_BUFL
L1: MOV @R0,#0
INC R0
CJNE R0,#80H,L1
RET
;**********************************************************************************
;把字型码加载到加载缓冲区
LOADING:
PUSH 02h ;push r2
MOV R2,#16
L2:
MOV A,#0
MOVC A,@A+DPTR
MOV @R0,A ;把偶数个数字码存放在R0开始的缓冲区,共可以存放16个字码
INC R0
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV @R1,A ;把奇数个数字码存放在R1开始的缓冲区,共可以存放16个字码
INC R1
INC DPTR
DJNZ R2,L2
POP 02h ;pop r2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHIFT:
PUSH ACC
SETB RS1 ;选择另外一组工作寄存器
MOV R3,#00H ;偏移量
MOV R4,#16
LOOPS:
CLR C ;清进位标志C
MOV A,#LOD_BUFH
ADD A,R3
MOV R0,A
MOV A,@R0
RLC A ;带进位左移,高字节的最高位移进Cy
MOV @R0,A ;移位后放回缓冲区
MOV A,#LOD_BUFL
PUSH PSW ;保护Cy,避免ADD进位影响
ADD A,R3
MOV R0,A
MOV A,@R0
POP PSW
RLC A ;高字节最高位移进低字节最低位 低字节高位进入Cy
MOV @R0,A
MOV A,#DIS_BUFH ;显示缓冲区地址送A
PUSH PSW
ADD A,R3
MOV R0,A
MOV A,@R0
POP PSW
RLC A ;上缓冲区低字节的高位进入 这个缓冲区高字节低位,
MOV @R0,A
MOV A,#DIS_BUFL
PUSH PSW
ADD A,R3
MOV R0,A
MOV A,@R0
POP PSW
RLC A
MOV @R0,A
MOV A,#DIS_BUFH
PUSH PSW
ADD A,R3
ADD A,#16 ;取下一个字的高字节需要+16的偏移量
MOV R0,A
MOV A,@R0
POP PSW
RLC A
MOV @R0,A
MOV A,#DIS_BUFL
PUSH PSW
ADD A,R3
ADD A,#16
MOV R0,A
MOV A,@R0
POP PSW
RLC A
MOV @R0,A
INC R3 ;偏移量+1,准备移下一对字节(下一列)
DJNZ R4,LOOPS ;一个字的16列是否都移动了?
CLR RS1
POP ACC
RET
;***********************************************************************************
DELAY:
SETB RS0
MOV R2,#100
J: DJNZ R2,J
CLR RS0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TABLE :
/*
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
*/
;四
DB 00H,00H,00H,04H,7FH,0FEH,44H,44H
DB 44H,44H,44H,44H,44H,44H,44H,44H
DB 44H,44H,44H,44H,48H,3CH,50H,04H
DB 40H,04H,7FH,0FCH,40H,04H,00H,00H
;川
DB 00H,04H,10H,04H,10H,84H,10H,84H
DB 10H,84H,10H,84H,10H,84H,10H,84H
DB 10H,84H,10H,84H,10H,84H,10H,84H
DB 10H,84H,20H,04H,40H,04H,00H,04H
;师
DB 08H,04H,0BH,0FEH,48H,20H,48H,20H
DB 48H,24H,49H,0FEH,49H,24H,49H,24H
DB 49H,24H,49H,24H,49H,24H,49H,24H
DB 11H,34H,11H,28H,20H,20H,40H,20H
;范
DB 08H,20H,08H,20H,7FH,0FCH,08H,20H
DB 20H,00H,13H,0F0H,4AH,10H,22H,10H
DB 22H,10H,0AH,50H,0F2H,20H,22H,00H
DB 22H,02H,22H,02H,21H,0FEH,20H,00H
;大
DB 01H,00H,01H,00H,01H,00H,01H,00H
DB 01H,04H,0FFH,0FEH,01H,00H,02H,80H
DB 02H,80H,02H,40H,04H,40H,04H,20H
DB 08H,10H,10H,0EH,60H,04H,00H,00H
;学
DB 22H,10H,11H,10H,11H,20H,00H,44H
DB 7FH,0FEH,40H,04H,80H,08H,1FH,0E0H
DB 00H,40H,01H,84H,0FFH,0FEH,01H,00H
DB 01H,00H,01H,00H,05H,00H,02H,00H
;!
DB 00H,00H,18H,00H,18H,00H,18H,00H
DB 18H,00H,18H,00H,18H,00H,18H,00H
DB 18H,00H,18H,00H,18H,00H,00H,00H
DB 18H,00H,18H,00H,00H,00H,00H,00H
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -