📄 wdott.asm
字号:
; 绘点子程序W_DOT(适应MGLS19264)
; 占用内部资源:O_XL,O_YL,A,B,DPTR
; 内部调用子程序:PR1~PR9
; 程序调用入口: W_DOT
; 程序输入变量: O_XL,O_YL
;-----------------------------------------------------------------------
W_DOT: MOV A,O_YL ; 读行地址寄存器
ANL A,#7FH ; 屏蔽点标志位
MOV B,#08H ; 8点行/页
DIV AB ; A为页地址,B为点位置
ORL A,#0B8H ; 设置页面地址
MOV COM,A
LCALL PR1
LCALL PR4
LCALL PR7
INC B ; B作为循环量加1
SETB C ; 设置点数据
CLR A ; A=0
W_DOT1: RLC A ; 数据带进位左移位
DJNZ B,W_DOT1 ; 循环将点数据移到位
PUSH ACC ; 点数据入栈
MOV A,O_XL ; 读列寄存器
CLR C
SUBB A,#40H ; 列地址-64
JC W_DOT3 ; 〈0为左屏显示区域
MOV O_XL,A ;
SUBB A,#40H ; 列地址-64
JC W_DOT2 ; <0为中屏显示区域
MOV O_XL,A ; ≥0为右屏显示区域
MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR7
LCALL PR9 ; "空读"
LCALL PR9
MOV A,O_YL ; 取点标志位置入进位位C
MOV C,ACC.7
POP ACC ; 取点数据
JNC W_DOT11 ; 判点标志为"0"?
ORL A,DAT1 ; 将点数据"1"写入当前显示数据
LJMP W_DOT12
W_DOT11: CPL A ; 点数据取反
ANL A,DAT1 ; 将点数据"0"写入当前显示数据
W_DOT12: MOV DAT1,A ; 存入数据
MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR7
LCALL PR8 ; 写入数据
RET
W_DOT2: MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR4
LCALL PR6 ; "空读"
LCALL PR6
MOV A,O_YL ; 取点标志位置入进位位C
MOV C,ACC.7
POP ACC ; 取点数据
JNC W_DOT21 ; 判点标志为"0"?
ORL A,DAT1 ; 将点数据"1"写入当前显示数据
LJMP W_DOT22
W_DOT21: CPL A ; 点数据取反
ANL A,DAT1 ; 将点数据"0"写入当前显示数据
W_DOT22: MOV DAT1,A ; 存入数据
MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR4
LCALL PR5 ; 写入数据
RET
W_DOT3: MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR1
LCALL PR3 ; "空读"
LCALL PR3
MOV A,O_YL ; 取点标志位置入进位位C
MOV C,ACC.7
POP ACC ; 取点数据
JNC W_DOT31 ; 判点标志为"0"?
ORL A,DAT1 ; 将点数据"1"写入当前显示数据
LJMP W_DOT32
W_DOT31: CPL A ; 点数据取反
ANL A,DAT1 ; 将点数据"0"写入当前显示数据
W_DOT32: MOV DAT1,A ; 存入数据
MOV COM,O_XL ; 设置列地址值
ORL COM,#40H ; "或"列地址指令标志位
LCALL PR1
LCALL PR2 ; 写入数据
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -