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

📄 12864.asm

📁 12864液晶驱动,这个是用C语言写的驱动程序,希望大家都有所帮助
💻 ASM
📖 第 1 页 / 共 4 页
字号:
             rl        a
             add       a,#wave_buf+1
             mov       r0,a
             mov       a,@r0
             cjne      a,#0ffh,w_dba
             sjmp      w_dbend
      w_dba: mov       xstal,a
             inc       r0
             mov       a,@r0
             cjne      a,#0ffh,w_dbb
             sjmp      w_dbend
      w_dbb: mov       ystal,a

             clr       c
             mov       a,#03fh
             subb      a,ystal
             mov       ystal,a

             inc       r0
             mov       a,@r0
             cjne      a,#0ffh,w_dbc
             sjmp      w_dbend
      w_dbc: mov       xendl,a
             inc       r0
             mov       a,@r0
             cjne      a,#0ffh,w_dbd
             sjmp      w_dbend
      w_dbd: mov       yendl,a

             mov       a,#03fh
             clr       c
             subb      a,yendl

             mov       yendl,a
             acall     w_line
             inc       b
             sjmp      w_db
    w_dbend: ret
   w_wave_a: inc       r0
             mov       a,@r0
             mov       count,a             ;启始点暂存
             anl       b,#07fh             ;x增量
             inc       r0
   w_wave_b: mov       a,@r0
             cjne      a,#0ffh,w_wave_c
             sjmp      w_waveend
   w_wave_c: mov       ystal,a

             clr       c
             mov       a,#03fh
             subb      a,ystal
             mov       ystal,a

             mov       xstal,count
             inc       r0
             mov       a,@r0
             cjne      a,#0ffh,w_wave_d
             sjmp      w_waveend
   w_wave_d: mov       yendl,a

             mov       a,#03fh
             clr       c
             subb      a,yendl
             mov       yendl,a

             mov       a,count
             add       a,b
             mov       count,a
             mov       xendl,a
             acall     w_line
             sjmp      w_wave_b
  w_waveend: ret
;占用dptr,a,b,c,a_page,w_code,column,count,r0
;11字节堆栈
;字符串写入子程序(从数据存贮器来)
     w_hz_c: mov       a,@r0
             mov       a_page,a
             inc       r0
             mov       a,@r0
             mov       column,a
             inc       r0
             mov       b,r0
    w_hz_cb: mov       a,@r0
             cjne      a,#0feh,w_hz_cx
             mov       a,a_page
             cpl       acc.3
             mov       a_page,a
             sjmp      w_hz_cy
    w_hz_cx: cjne      a,#0fdh,w_hz_ce
             mov       a,a_page
             cpl       acc.3
             cpl       acc.7
             mov       a_page,a
    w_hz_cy: inc       b
             mov       r0,b
             mov       a,@r0
             cjne      a,#1,w_hz_cf
             mov       a,a_page
             clr       c
             subb      a,#1
             mov       a_page,a
             sjmp      w_hz_cg
    w_hz_cf: cjne      a,#2,w_hz_cg
             mov       a,a_page           ;借用为暂存器
             mov       count,a
             add       a,#1
             mov       a_page,a
    w_hz_cg: inc       b
             mov       r0,b
             mov       a,@r0
    w_hz_ce: cjne      a,#0ffh,w_hz_ca
             ret
    w_hz_ca: mov       w_code,a
             mov       a,a_page
             jb        acc.3,w_hz_cd
             acall     w_asii
             inc       b
             mov       r0,b
             sjmp      w_hz_cb
    w_hz_cd: acall     w_hz
             inc       b
             mov       r0,b
             sjmp      w_hz_cb

;占用dptr,a,b,c,a_page,w_code,column,count
;11字节堆栈
;字符串写入子程序(从程序存贮器来,固定的)
   w_asii_c: mov       dptr,#c_tab
             mov       b,#2
             mul       ab
             add       a,dpl
             mov       dpl,a
             mov       a,b
             addc      a,dph
             mov       dph,a
             clr       a
             movc      a,@a+dptr
             mov       b,a
             mov       a,#1
             movc      a,@a+dptr
             mov       dpl,a
             mov       dph,b
             clr       a
             movc      a,@a+dptr
             inc       dptr
             anl       a,#0f8h
             orl       a,a_page
             mov       a_page,a
             clr       a
             movc      a,@a+dptr
             inc       dptr
             mov       column,a
             mov       b,#0
             mov       a,b
  w_asii_cb: movc      a,@a+dptr
             cjne      a,#0feh,w_asii_cx
             mov       a,a_page
             cpl       acc.3
             mov       a_page,a
             sjmp      w_asii_cy
  w_asii_cx: cjne      a,#0fdh,w_asii_ce
             mov       a,a_page
             cpl       acc.3
             cpl       acc.7
             mov       a_page,a
  w_asii_cy: inc       b
             mov       a,b
             movc      a,@a+dptr
             cjne      a,#1,w_asii_cf
             mov       a,a_page
             clr       c
             subb      a,#1
             mov       a_page,a
             sjmp      w_asii_cg
  w_asii_cf: cjne      a,#2,w_asii_cg
             mov       a,a_page           ;借用为暂存器
             mov       count,a
             add       a,#1
             mov       a_page,a
  w_asii_cg: inc       b
             mov       a,b
             movc      a,@a+dptr
  w_asii_ce: cjne      a,#0ffh,w_asii_ca
             ret
  w_asii_ca: mov       w_code,a
             mov       a,a_page
             jb        acc.3,w_asii_cd
             acall     w_asii
             inc       b
             mov       a,b
             sjmp      w_asii_cb
  w_asii_cd: acall     w_hz
             inc       b
             mov       a,b
             sjmp      w_asii_cb

;占用a,b,count,a_page,w_code,c,column,dptr
;9字节堆栈
;字符写入子程序(没有问题)
     w_ASII: push      dph
             push      dpl
             push      b
             mov       a,a_page         ;页地址
             mov       c,acc.7
             mov       acc.4,c
             mov       a_page,a
             jb        acc.7,w_asiia
             mov       dptr,#asii8_tab
             mov       b,#6
             mov       count,#6          ;计数器
             sjmp      w_asiib
    w_asiia: mov       dptr,#asii16_tab
             mov       b,#16
             mov       count,#8
    w_asiib: mov       a,w_code          ;取字符代码
             clr       c
             subb      a,#32
             mul       ab
             add       a,dpl
             mov       dpl,a
             mov       a,b
             addc      a,dph
             mov       dph,a
             mov       w_code,#0
             mov       a,a_page
             anl       a,#07h
             orl       a,#0b8h
             mov       com,a
             lcall     lcd_we_zl
             mov       b,column

   w_asiip:  mov       a,column
             clr       c
             subb      a,#040h
             jc        w_asiic
             mov       column,a
             mov       a,a_page
             setb      acc.6
             mov       a_page,a
    w_asiic: mov       a,a_page
             mov       c,acc.6
             mov       acc.5,c
             mov       a_page,a
             mov       com,column
             orl       com,#040h
             mov       a,a_page
             anl       a,#040h
             jnz       w_asiid
             lcall     lcd_we_zl
             sjmp      w_asiie
    w_asiid: lcall     lcd_we_zl
    w_asiie: mov       a,w_code
             movc      a,@a+dptr
             mov       dat,a
             mov       a,a_page
             anl       a,#040h
             jnz       w_asiif
             lcall     lcd_we_z
             sjmp      w_asiig
    w_asiif: lcall     lcd_we_y
    w_asiig: inc       w_code
             inc       column
             mov       a,column
             cjne      a,#40h,w_asiih
    w_asiih: jc        w_asiii
             mov       column,#0
             mov       a,a_page
             anl       a,#040h
             jnz       w_asiii
             mov       a,a_page
             setb      acc.6
             mov       a_page,a
             mov       com,column
             orl       com,#040h
             lcall     lcd_we_zl
    w_asiii: djnz      count,w_asiie
             mov       a,a_page
             jnb       acc.7,w_end
             mov       c,acc.5
             mov       acc.6,c
             anl       a,#07fh
             mov       a_page,a
             mov       count,#8
             anl       a,#07h
             mov       com,a
             inc       com
             orl       com,#0b8h
             lcall     lcd_we_zl
             mov       column,b
             sjmp      w_asiic
      w_end: mov       c,acc.4
             mov       acc.7,c
             mov       a_page,a
             pop       b
             pop       dpl
             pop       dph
             ret
;占用a,b,c,column,a_page,W_code,count,dptr
;9字节堆栈
;汉字写入子程序
       w_hz: push      dph
             push      dpl
             push      b
             mov       a,a_page         ;页地址
             mov       c,acc.7
             mov       acc.4,c
             mov       a_page,a
             mov       dptr,#hz_tab
             mov       b,#32
             mov       count,#16
             mov       a,w_code          ;取汉字代码
             mul       ab
             add       a,dpl
             mov       dpl,a
             mov       a,b
             addc      a,dph
             mov       dph,a
             mov       w_code,#0
             mov       a,a_page
             anl       a,#07h
             orl       a,#0b8h
             mov       com,a
             lcall     lcd_we_zl
             mov       b,column
     w_hzp:  mov       a,column
             clr       c
             subb      a,#040h
             jc        w_hzc
             mov       column,a
             mov       a,a_page
             setb      acc.6
             mov       a_page,a
      w_hzc: mov       a,a_page
             mov       c,acc.6
             mov       acc.5,c
             mov       a_page,a
             mov       com,column
             orl       com,#040h
             mov       a,a_page
             anl       a,#040h
             jnz       w_hzd
             lcall     lcd_we_zl
             sjmp      w_hze
      w_hzd: lcall     lcd_we_zl
      w_hze: mov       a,w_code
             movc      a,@a+dptr
             mov       dat,a
             mov       a,a_page
             anl       a,#040h
             jnz       w_hzf

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -