?? 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 + -