📄 temp.asm
字号:
ORG 0000H
LJMP 0100H ;开机或者复位后,跳转到INIT初始化程序
ORG 0100H
INIT: MOV A,#0
MOV DPTR,#0FD00H ;初始化行复位端口,置全零
MOVX @DPTR,A
MOV DPTR,#0FE00H ;初始化行置位端口,置全零
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,#0FB00H
MOVX @DPTR,A ;初始化列选择1端口,送无效字
MOV DPTR,#0F700H
MOVX @DPTR,A ;初始化列选择2端口,送无效字
MOV DPTR,#0EF00H
MOVX @DPTR,A ;初始化列选择3端口,送无效字
LOGO: MOV R0,#40H ;LOAD DISPLAY BUFFER ADDRESS
MOV R1,#0
MOV R2,#20 ;40 Bytes Logo Buffer
LOG1: MOV A,R1
MOV DPTR,#300H ;LOAD LOGO Buffer ADDRESS
MOVC A,@A+DPTR ;
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOG1
LCALL FIRST
SJMP $
FIRST: MOV R5,#1
FIR1: MOV R0,#40H ;加载显示缓存区起始地址指针
MOV R1,#0 ;列选择线指针置零,从第0列开始刷新
FIR2: MOV A,@R0 ;取一列的行点阵显示数据
PUSH A ;保护行置位数据
CPL A ;对A取反,得到行复位数据
ANL A,R5
MOV DPTR,#0FD00H ;加载行复位端口地址
MOVX @DPTR,A ;行置位数据送行置位口
MOV DPTR,#0FB00H ;加载第1块列驱动板地址
MOV A,R1 ;列指针内容送A
MOVX @DPTR,A ;选中相应的列选择线
LCALL DELAY ;延时5ms
MOV A,#0FFH ;送无效字
MOVX @DPTR,A ;以关闭列译码器
MOV A,#0
MOV DPTR,#0FD00H ;加载行复位端口地址
MOVX @DPTR,A ;行复位口清零
INC R1 ;列选择数据加1
POP A ;恢复行置位数据
ANL A,R5
MOV DPTR,#0FE00H ;加载行置位端口地址
MOVX @DPTR,A ;送行复位数据
MOV DPTR,#0FB00H ;加载第1块列驱动板地址
MOV A,R1
MOVX @DPTR,A ;选中列置位驱动线
LCALL DELAY ;延时5ms
MOV A,#0FFH ;送无效字
MOVX @DPTR,A ;关闭列译码器
MOV A,#0
MOV DPTR,#0FE00H ;加载行置位端口地址
MOVX @DPTR,A ;行置位口清零
INC R1 ;修改列驱动选择指针
INC R0 ;修改显示缓存指针
CJNE R1,#40,FIR2 ;不满二十列则继续刷新
MOV A,R5
RL A
MOV R5,A
CJNE R5,#80H,FIR1
RET ;返回主程序
DELAY: MOV R7,#20 ;5ms延时子程序(12MHz)
DEL1: MOV R6,#125
DEL2: DJNZ R6,DEL2
DJNZ R7,DEL1
RET
ORG 0300H
DB 7FH,7FH,7FH,7FH,7FH
DB 7FH,7FH,7FH,7FH,7FH
DB 7FH,7FH,7FH,7FH,7FH
DB 7FH,7FH,7FH,7FH,7FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -