📄 led_a51.asm
字号:
;*********LED 点阵显示示例程序***********************
;** 该程序显示 ASC16字符 **
;** 为了简单起见,程序只显示一个字符 **
;** 该程序针对EAT598实验机 **
;****************************************************
CSLED EQU 0F200H
CSC1 EQU CSLED ;列1~8 273
CSC2 EQU CSLED+1H ;列9~16 273
CSR1 EQU CSLED+2H ;行1~8 374
CSR2 EQU CSLED+3H ;行9~`6 374
ORG 0000H
SJMP MAIN
ORG 0040H
MAIN:
MOV SP,#60H
INIT:
MOV A,#00H ;关闭LED列显示
MOV DPTR,#CSC1
MOVX @DPTR,A
MOV DPTR,#CSC2
MOVX @DPTR,A
MOV A,#0FFH ;关闭LED行显示
MOV DPTR,#CSR1
MOVX @DPTR,A
MOV DPTR,#CSR2
MOVX @DPTR,A
D: MOV R5,#00H
MOV R4,#01H ;设定列扫描初始值,从第一列开始
DISP:
MOV A,R5
MOV DPTR,#ASCK ;此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC ;代码取反,决定显示的阴阳
MOV DPTR,#CSR1
MOVX @DPTR,A
MOV DPTR,#CSC1
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H ;清上次显示值
MOVX @DPTR,A ;关闭行、列
MOV DPTR,#CSR1
MOV A,#0FFH
MOVX @DPTR,A
CJNE R5,#8H,DISP ;判是否显示到第八列
MOV R5,#08H
MOV R4,#01H
DISP2:
MOV A,R5
MOV DPTR,#ASCK
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSR2
MOVX @DPTR,A
MOV DPTR,#CSC1
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H ;清上次显示值
MOVX @DPTR,A ;关闭行、列
MOV A,#0FFH
MOV DPTR,#CSR2
MOVX @DPTR,A
CJNE R5,#10H,DISP2 ;判是否扫描到第十六列
SJMP D
;******** 延时子程序,协调字符显示速度 *************
DELAY: MOV R7,#01H
DL1: MOV R6,#00H
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
;******** 字符点阵字库 ***************
; 请注意编码的排列次序和实际显示点阵分布的关系
;运行ZIMO.EXE程序,在参数设置里选择“纵向取模”,16*16点阵,宋体、小四号(12)
;取模方式为A51格式。
;*****************************************************
ASCA:DB 00H,00H,03H,1CH,07H,00H,00H,00H,04H,3CH,0C4H,40H,40H,0E4H,1CH,04H
ASCE:DB 10H,1FH,11H,11H,17H,10H,08H,00H,04H,0FCH,04H,04H,0C4H,04H,18H,00H
ASCD:DB 10H,1FH,10H,10H,10H,08H,07H,00H,04H,0FCH,04H,04H,04H,08H,0F0H,00H
ASCK:DB 10H,1FH,11H,03H,14H,18H,10H,00H,04H,0FCH,04H,80H,64H,1CH,04H,00H
;****************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -