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

📄 128641.asm

📁 这是一款当前比较常用和比较实用的一款通信芯片,这笔以前的通信芯片功能更强大!
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;液晶驱动
     lcd_wz_ad     equ    0f3ffh                       ;写指令地址
     lcd_rz_ad     equ    0f8ffh                        ;读状态地址
     lcd_ws_za     equ    0f6ffh                       ;写数据地址(右)
     lcd_ws_ya     equ    0f5ffh                       ;写数据地址(左)
     lcd_rs_za     equ    0feffh                       ;读数据地址(右)
     lcd_rs_ya     equ    0fdffh                       ;读数据地址(左)
     
     jp_clk        bit    p1.4
     jp_data       bit    p1.5

     time_y     equ       070h                        ;定时服务计数器
     jp_key     equ       071h
     count_k    equ       072h
     lcd_on     data      3fh                         ;开显示
     lcd_off    data      3eh                         ;关显示                                                      ;绘图标志
     dot        bit       00h
     radf       equ       020h
     radw       equ       021h
     cd_min     equ       051h                      ;当前菜单层的最小菜单号
     cd_max     equ       052h                      ;当前菜单层的最大菜单号
     cd_js      equ       053h                      ;菜单计数器
     yb_js      equ       054h

     Column     equ       04dh                      ;列地址
     Line       equ       04eh                      ;行地址
     com        equ       04fh                      ;液晶指令寄存
     dat        equ       050h                      ;液晶数据寄存
     a_page     equ       Line                      ;显示的页寄存器
     xstal      equ       040h                      ;以下与绘图相关
     xstah      equ       041h
     ystal      equ       042h
     ystah      equ       043h
     xendl      equ       044h
     xendh      equ       045h
     yendl      equ       046h
     yendh      equ       047h
     d_xl       equ       048h
    ; d_xh       equ       049h
     d_yl       equ       049h
    ; d_yh       equ       04bh
     errl       equ       04ah
     errh       equ       04bh
     rad        equ       04ch
     w_code     equ       xstal
     count      equ       xstah
     arcx1      equ       xendl
     arcy1      equ       xendh
     arcx2      equ       yendl
     arcy2      equ       yendh
     cirxl      equ       d_xl
    ; cirxh      equ       d_xh
     ciryl      equ       d_yl
   ;  ciryh      equ       d_yh
     wave_buf   equ       080h


         org    0000h
         ajmp   main
         org    0013h
         ajmp   jp_int
         org    002bh
         ajmp   time_int             ;去系统定时中断服务
         org    0030h
       main: mov       sp,#0e0h
             mov       tmod,#021h
             mov       tcon,#05h
             mov       th2,0fch
             mov       tl2,065h
             mov       rcap2h,#0fch
             mov       rcap2l,#065h
             setb      tr2
             mov       ie,#0a0h
             mov       com,#lcd_on
             lcall     lcd_we_zl
             lcall     lcd_rst

       tt:   acall     z_dis
       tt1:  acall     jpfw1
             mov       a,jp_key
             cjne      a,#10,tt1
             mov       cd_min,#8
             mov       cd_max,#15
             ajmp      cd_ql

             mov       a,#0
             acall     w_asii_c
             mov       a,#1
             acall     w_asii_c
             mov       a,#2
             acall     w_asii_c
             mov       a,#3
             acall     w_asii_c
             mov       a,#4
             acall     w_asii_c
             mov       a,#5
             acall     w_asii_c
             mov       a,#6
             acall     w_asii_c
             mov       a,#7
             acall     w_asii_c
      power: acall     jpfw1
             mov       a,jp_key
             cjne      a,#2,power
             lcall     lcd_rst
             mov       a,#8
             acall     w_asii_c
;菜单驱动子程序
;需要用菜单跳转表

      cd_ql: mov       cd_js,cd_min
             mov       yb_js,#0          ;游标计数器
     cd_qls: acall     cd_dis            ;菜单显示子程序
     cd_qla: acall     jpfw1             ;读取键值
             mov       a,jp_key
             cjne      a,#12,cd_ql1
             ;菜单向下
             mov       a,yb_js         ;游标向下处理
             cjne      a,#3,cd_qld
             sjmp      cd_qle
     cd_qld: inc       yb_js
     cd_qle: mov       a,cd_js           ;菜单向下计数处理
             cjne      a,cd_max,cd_qlc
             mov       cd_js,cd_min
             sjmp      cd_qls

     cd_qlc: inc       cd_js
             sjmp      cd_qls
     cd_ql1: cjne      a,#13,cd_ql2
             ;菜单向上
             mov       a,yb_js           ;游标计数处理
             cjne      a,#0,cd_qlf
             sjmp      cd_qlg
     cd_qlf: dec       yb_js
     cd_qlg: mov       a,cd_js            ;菜单计数处理
             cjne      a,cd_min,cd_qlh
             mov       cd_js,cd_max
             sjmp      cd_qls
     cd_qlh: dec       cd_js
             sjmp      cd_qls
     cd_ql2: cjne      a,#10,cd_ql3
             ;菜单确认
             ;进入下一层
      ;       mov       cd_bufl,cd_min       ;存储当前层参数
       ;      mov       cd_bufh,cd_max
             sjmp      cd_sz                ;去菜单散转表
     cd_ql3: cjne      a,#11,cd_qla
             ;菜单操作取消 ,根椐cd_min设置返回参数
             mov       a,cd_min
             cjne      a,#8,cd_fa
             mov       cd_min,#0ffh
             mov       cd_max,#0ffh
             sjmp      cd_fend
      cd_fa: cjne      a,#0,cd_fb
             mov       cd_min,#8
             mov       cd_max,#15
      cd_fb:

    cd_fend: mov       a,cd_min
             cjne      a,#0ffh,cd_ql4
             ;退出菜单设置
             lcall     lcd_rst
             ajmp      tt                   ;回到主参界面
     cd_ql4: mov       a,cd_max
             cjne      a,#0ffh,cd_ql5
             ;退出菜单设置
             lcall     lcd_rst
             ajmp      tt                    ;回到主参界面
     cd_ql5: sjmp      cd_ql                 ;返回上一层

      cd_sz: mov       a,cd_js               ;菜单散转表
             mov       b,#2
             mul       ab
             mov       dptr,#sz_tab          ;散转表首址
             add       a,dpl
             mov       dpl,a
             mov       a,b
             addc      a,dph
             mov       dph,a
             clr       a
             jmp       @a+dptr
     sz_tab: ajmp      cd_dz00
             ajmp      cd_dz01
             ajmp      cd_dz02
             ajmp      cd_dz03
             ajmp      cd_dz04
             ajmp      cd_dz05
             ajmp      cd_dz06
             ajmp      cd_dz07
             ajmp      cd_dz08
             ajmp      cd_dz09
             ajmp      cd_dz10
             ajmp      cd_dz11
             ajmp      cd_dz12
             ajmp      cd_dz13
             ajmp      cd_dz14
             ajmp      cd_dz15

    cd_dz00:
    cd_dz01:
    cd_dz02:
    cd_dz03:
    cd_dz04:
    cd_dz05:
    cd_dz06:
    cd_dz07:
    cd_dz08: lcall     lcd_rst              ;八号菜单处理,参数设置界面
             mov       a_page,#1
             mov       a,#17
             acall     w_asii_c
             mov       a_page,#3
             mov       a,#18
             acall     w_asii_c
   cd_dz08a: acall     jpfw1
             mov       a,jp_key
             cjne      a,#10,cd_dz08a
             lcall     lcd_rst
             ajmp      cd_ql

    cd_dz09: mov       cd_min,#0             ;九号菜单处理
             mov       cd_max,#7
             ajmp      cd_ql
    cd_dz10:
    cd_dz11:
    cd_dz12:
    cd_dz13:
    cd_dz14:
    cd_dz15:
;菜单显示子程序
     cd_dis: lcall     lcd_rst
             clr       c
             mov       a,cd_js
             subb      a,yb_js
             jc        cd_disx
             cjne      a,cd_min,cd_disa
    cd_disa: jnc       cd_disc
    cd_disx: clr       c
             mov       a,cd_max
             subb      a,cd_min
             add       a,cd_js
             subb      a,yb_js
             add       a,#1
    cd_disc: mov       rad,a
             mov       count_k,#0
    cd_disd: mov       a,count_k
             rl        a
             mov       a_page,a
             mov       a,rad
             acall     w_asii_c
             mov       a,rad
             cjne      a,cd_max,cd_dise
             mov       rad,cd_min
             sjmp      cd_disf
    cd_dise: inc       rad
    cd_disf: inc       count_k
             mov       a,count_k
             cjne      a,#4,cd_disd
             mov       a,yb_js              ;显示游标
             rl        a
             orl       a,#080h
             mov       a_page,a
             mov       column,#110
             mov       W_code,#'~'+1
             acall     w_asii
             ret
;主界面显示
      z_dis: mov       a_page,#3
             mov       a,#16
             acall     w_asii_c
             ret

;系统定时中断服务
   time_int: clr       tf2
             dec       time_y
             ;其它的定时有关的代码
             reti
;键盘中断服务
     jp_int: jnb       p3.3,kk1
             reti
        kk1: mov       time_y,#10
             acall     y_time
             jnb       p3.3,kk2
             reti
        kk2: acall     jpfw
;键盘服务
;在中断工作时也是调用这个程序
;jp_key为键值寄存器
;Y_TIME10:延时程式
      JPFW1: acall     urt_all0
      jpfw2: jb        p3.3,$
             mov       time_y,#10
             acall     y_time
             jb        p3.3,jpfw2
       JPFW: MOV       jp_key,#0h
             acall     urt_all1
             MOV       count_k,#16
             clr       jp_data
             setb      jp_clk
             clr       jp_clk
             setb      jp_data
   jp_cjcx1: jb        p3.3,key1
             clr       c
             mov       a,#16
             subb      a,count_k
             cjne      a,#8,key_j
      key_j: jc        key_k
             subb      a,#8
             sjmp      key_l
      key_k: add       a,#8
      key_l: mov       jp_key,a
             sjmp      keyy
       key1: setb      jp_clk
             clr       jp_clk
             djnz      count_k,jp_cjcx1       
       keyy: JNB       P3.3,$
             mov       time_y,#10
             acall     y_time
             JNB       P3.3,KEYY
             acall     urt_all0
             ret
   urt_all0: mov       count_k,#16
             clr       jp_data
     urt0_a: setb      jp_clk
             clr       jp_clk
             djnz      count_k,urt0_a
             ret
   urt_all1: mov       count_k,#16
             setb       jp_data
     urt0_b: setb      jp_clk
             clr       jp_clk
             djnz      count_k,urt0_b
             ret                
;延时子程序
;最长时间为255*定时常数
     y_time: push     acc
             push     psw
    y_time1: mov      a,time_y
             cjne     a,#0,y_time1
             pop      psw
             pop      acc
             ret
;占用b,a,count,r0,c,与画直线有关的寄存器
;堆栈占用11字节
;波形显示子程序,和多边形显示 (没有问题)
     w_wave: mov       r0,#wave_buf
             mov       a,@r0
             mov       b,a
             jnb       acc.7,w_wave_a          ;去波形显示
             mov       b,#0
       w_db: mov       a,b

⌨️ 快捷键说明

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