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

📄

📁 静音琴的源码,有兴趣的拼音可以下载下来看看,这个是可以生产的程序.
💻
📖 第 1 页 / 共 2 页
字号:
        MOV  SFSJZT,#1        ;状态
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLZJ         ;音量增加标志,1=增加
        LJMP  ZJCL_E
        include "软件陷阱.asm"
ZJCL_20:
        ;---转减小状态---     ;低键>=3 AND 高键<=2
        LCALL QJSBTC          ;清计数不退出
        MOV  SFSJZT,#2        ;状态
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLJX         ;音量减小标志,1=减小
        LJMP  ZJCL_E
        include "软件陷阱.asm"
ZJCL_0:
        ;--无效键---------
        LCALL QJSBTC          ;清计数不退出
        MOV  SFSJZT,#1        ;状态
        LJMP  ZJCL_E
        include "软件陷阱.asm"
ZJCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       力度增加
;********************************
LDZJ:
        PUSH  DPH
        PUSH  DPL
        MOV   A,XGJH           ;修改键号
        MOV   DPTR,#EXRAM_ADD  ;外存首地址
        ADD   A,DPL
        MOV   DPL,A
        CLR   A
        ADDC  A,DPH            ;进位
        MOV   DPH,A
        MOVX  A,@DPTR
        DEC   A                ;音量加大
        CJNE  A,#20H,$+3       ;极限
        JNC   LDZJ1
        MOV   A,#20H           ;极值
        MOVX  @DPTR,A
        LJMP  LDZJE
        include "软件陷阱.asm"
LDZJ1:
        MOVX  @DPTR,A          ;回写
LDZJE:
        POP   DPL
        POP   DPH
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       减小阶段处理
;********************************
JXJDCL:
        MOV   A,SFSJML         ;发送数据命令
        CJNE  A,#0,JXJDCL1
        ;-----命令--------
        MOV   A,R2             ;数据
        CJNE  A,#90H,JXJDCL1A
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL1A:
        CJNE  A,#80H,JXJDCL1B
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL1B:
        CJNE  A,#0B0H,JXJDCL1C
        MOV   SFSJML,#3        ;准备接收踏板第2位
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL1C:
        LJMP  JXJDCL_ERR       ;错误
        include "软件陷阱.asm"
JXJDCL1:
        CJNE  A,#1,JXJDCL2
        ;-----键号--------
        MOV   SFSJML,#2        ;准备接收力度
        MOV   A,R2             ;数据
        MOV   XGJH, A          ;待修改键号
        CJNE  A,#109,$+3
        JNC   JXJDCL_ERR       ;错误,>20+88
        CJNE  A,#21,$+3
        JC    JXJDCL_ERR       ;错误,<20+1
        CJNE  A,#29,$+3
        JNC   JXJDCL11
        ;--低键--
        INC   JSQDJ            ;计数器低键
        INC   SFSJJS           ;发送数据计数
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL11:
        CJNE  A,#101,$+3
        JC    JXJDCL12
        ;--高键--
        INC   JSQGJ            ;计数器高键
        INC   SFSJJS           ;发送数据计数
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL12:
        ;--中键--
        INC   SFSJJS           ;发送数据计数
        MOV   JSQDJ,#0         ;计数器低键
        MOV   JSQGJ,#0         ;计数器高键
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL2:
        CJNE  A,#2,JXJDCL3
        ;-----力度--------
        MOV   SFSJML,#0        ;准备接收下一个命令
        MOV   A,R2             ;数据
        JNZ   JXJDCL21
        ;--关----
        DEC   FJJS             ;放键计数
        MOV   A,FJJS
        JNZ   JXJDCL_E         ;键没放完
        LCALL JXCL             ;减小处理
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL21:
        CJNE  A,#128,$+3
        JNC   JXJDCL_ERR       ;错误
        ;--开----
        INC   FJJS             ;放键计数
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL3:
        CJNE  A,#3,JXJDCL4
        ;-----踏板第2位---
        MOV   SFSJML,#4        ;准备接收踏板第3位
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL4:
        CJNE  A,#4,JXJDCL_ERR  ;错误
        ;-----踏板开关----
        LJMP  JXJDCL_E
        include "软件陷阱.asm"
JXJDCL_ERR:
        ;-----错误--------
        include "软件陷阱.asm"
JXJDCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       减小处理
;********************************
JXCL:
        MOV   A,SFSJJS        ;数据计数
        CJNE  A,#2,JXCL1
        ;---单键-------------
        LCALL LDJX            ;力度减小
        LCALL QJSBTC          ;清计数不退出
        MOV   SFSJZT,#2       ;状态
        LJMP  JXCL_E
        include "软件陷阱.asm"
JXCL1:
        ;---多键-------------------
        MOV   A,JSQGJ         ;高键计数
        CJNE  A,#5,$+3
        JC    JXCL_10         ;高键<3
        MOV   A,JSQDJ         ;低键计数
        CJNE  A,#5,$+3
        JC    JXCL_20         ;低键<3
        ;---保存------------  ;低键>=3 and 高键>=3
        LCALL QJSBTC          ;清计数不退出
        MOV   SFSJZT,#3       ;状态,修改
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLBC         ;音量保存标志,1=保存
        LJMP  JXCL_E
        include "软件陷阱.asm"
JXCL_10:
        ;---高键<3-------------------
        MOV   A,JSQDJ         ;低键计数
        CJNE  A,#5,$+3
        JC    JXCL_0          ;低键<3,无效
        ;---保持减小状态---   ;低键>3 and 高键<=2
        LCALL QJSBTC          ;清计数不退出
        MOV  SFSJZT,#2        ;状态
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLJX         ;音量减小标志,1=减小
        LJMP  JXCL_E
        include "软件陷阱.asm"
JXCL_20:
        ;---转增加状态---     ;高键>=3 AND 低键<=2
        LCALL QJSBTC          ;清计数不退出
        MOV  SFSJZT,#1        ;状态
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLZJ         ;音量增加标志,1=增加
        LJMP  JXCL_E
        include "软件陷阱.asm"
JXCL_0:
        ;---无效键--------
        LCALL QJSBTC          ;清计数不退出
        MOV  SFSJZT,#2        ;状态
        LJMP  JXCL_E
        include "软件陷阱.asm"
JXCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       力度减小
;********************************
LDJX:
        PUSH  DPH
        PUSH  DPL
        MOV   A,XGJH           ;修改键号
        MOV   DPTR,#EXRAM_ADD  ;外存首地址
        ADD   A,DPL
        MOV   DPL,A
        CLR   A
        ADDC  A,DPH            ;进位
        MOV   DPH,A
        MOVX  A,@DPTR
        INC   A                ;音量减小
        CJNE  A,#0C0H,$+3      ;极限
        JC    LDJX1
        MOV   A,#0C0H          ;极值
        MOVX  @DPTR,A
        LJMP  LDJXE
        include "软件陷阱.asm"
LDJX1:
        MOVX  @DPTR,A          ;回写
LDJXE:
        POP   DPL
        POP   DPH
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       修改阶段处理
;********************************
XGJDCL:
        MOV   A,SFSJML         ;命令
        CJNE  A,#0,XGJDCL1
        ;-----命令------------------
        MOV   A,R2             ;数据
        CJNE  A,#90H,XGJDCL1A
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL1A:
        CJNE  A,#80H,XGJDCL1B
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL1B:
        CJNE  A,#0B0H,XGJDCL1C
        MOV   SFSJML,#3        ;准备接收踏板第2位
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL1C:
        LJMP  XGJDCL_ERR       ;错误
        include "软件陷阱.asm"
XGJDCL1:
        CJNE  A,#1,XGJDCL2
        ;-----键号------------------
        MOV   SFSJML,#2        ;准备接收力度
        MOV   A,R2             ;数据
        MOV   XGJH,A           ;键号
        CJNE  A,#109,$+3
        JNC   XGJDCL_ERR       ;错误,>20+88
        CJNE  A,#21,$+3
        JC    XGJDCL_ERR       ;错误,<20+1
        CJNE  A,#29,$+3
        JNC   XGJDCL11
        ;--低键--
        INC   JSQDJ            ;低键计数
        INC   SFSJJS           ;数据计数
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL11:
        CJNE  A,#101,$+3
        JC    XGJDCL12
        ;--高键--
        INC   JSQGJ            ;高键计数
        INC   SFSJJS           ;数据计数
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL12:
        ;--中键--
        INC   SFSJJS           ;数据计数
        MOV   JSQDJ,#0         ;低键计数
        MOV   JSQGJ,#0         ;高键计数
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL2:
        CJNE  A,#2,XGJDCL3
        ;-----力度------------------
        MOV   SFSJML,#0        ;准备接收下一个命令
        MOV   A,R2             ;数据
        JNZ   XGJDCL21
        ;--关--
        DEC   FJJS             ;放键计数-1
        MOV   A,FJJS
        JNZ   XGJDCL_E         ;键没放完
        LCALL XGJPCL           ;修改键盘处理
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL21:
        CJNE  A,#128,$+3
        JNC   XGJDCL_ERR       ;错误
        ;--开--
        INC   FJJS             ;放键计数+1
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL3:
        CJNE  A,#3,XGJDCL4
        ;-----踏板第2位-------------
        MOV   SFSJML,#4        ;准备接收踏板第3位
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL4:
        CJNE  A,#4,XGJDCL_ERR  ;错误
        ;-----踏板开关--------------
        LJMP  XGJDCL_E
        include "软件陷阱.asm"
XGJDCL_ERR:
        ;-----错误-----------------
        include "软件陷阱.asm"
XGJDCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       修改键盘处理
;********************************
XGJPCL:
        MOV   A,JSQDJ          ;低键计数
        CJNE  A,#5,$+3
        JNC   XGJPCL1          ;低键>2
        ;--低键<3------------
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#5,$+3
        JC    XGJPCL0          ;高键<3,无效
        ;--转增加---------     ;高键>=3 and 低键<=2
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#1        ;状态,增加
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLZJ          ;音量增加标志,1=增加
        LJMP  XGJPCL_E
        include "软件陷阱.asm"
XGJPCL0:
        ;--无效---------------
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#3        ;状态,修改
        LJMP  XGJPCL_E
        include "软件陷阱.asm"
XGJPCL1:
        ;--低键>2 ------------
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#5,$+3
        JNC   XGJPCL2          ;高键>2
        ;--转减小-------       ;低键>=3 and 高键<=2
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#2        ;状态,减小
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLJX          ;音量减小标志,1=减小
        LJMP  XGJPCL_E
        include "软件陷阱.asm"
XGJPCL2:
        ;--低键>2 and 高键>2 ----
        MOV   A,JSQDJ          ;低键计数
        CJNE  A,#9,$+3
        JC    XGJPCL0          ;低键<5,无效
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#9,$+3
        JC    XGJPCL0          ;高键<5,无效
        ;---恢复----------     ;低键>=5 and 高键>=5
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#3        ;状态,修改
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLHF          ;音量恢复标志,1=恢复
        LJMP  XGJPCL_E
        include "软件陷阱.asm"
XGJPCL_E:
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       清计数退出
;********************************
QJSTC:
        MOV  FJJS,#0           ;放键计数
        MOV  JSQGJ,#0          ;计数器高键
        MOV  JSQDJ,#0          ;计数器低键
        MOV  SFSJJS,#0         ;发送数据计数
        MOV  SFSJML,#0         ;发送数据命令
        MOV  SFSJZT,#0         ;发送数据状态
        SETB BZ_FSSJ           ;发送数据标志,1=不需处理
        SETB BZ_QDXZ           ;启动修正标志,1=不起动
        RET
        include "软件陷阱.asm"
;********************************
;       清计数不退出
;********************************
QJSBTC:
        MOV  FJJS,#0           ;放键计数
        MOV  JSQGJ,#0          ;计数器高键
        MOV  JSQDJ,#0          ;计数器低键
        MOV  SFSJJS,#0         ;发送数据计数
        MOV  SFSJML,#0         ;发送数据命令
        MOV  SFSJZT,#0         ;发送数据状态
        CLR  BZ_FSSJ           ;发送数据标志,0=需处理
        CLR  BZ_QDXZ           ;启动修正标志,0=起动
        RET
        include "软件陷阱.asm"
;********************************
;##############################################################
        END
;##############################################################






⌨️ 快捷键说明

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