⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdott.asm

📁 基于61202控制芯片的LCD液晶显示驱动程序。
💻 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 + -