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

📄

📁 静音琴的源码,有兴趣的拼音可以下载下来看看,这个是可以生产的程序.
💻
📖 第 1 页 / 共 2 页
字号:
;##############################################################
        PROC  WBZD0CL,DSQ0CL,WBZD1CL,DSQ1CL,CHZDCL,DSQ2CL
;********************************
;       外部中断0处理
;********************************
WBZD0CL:
        include "软件陷阱.asm"
;********************************
;       定时器0处理
;********************************
;       采样键状态
;--------------------------------
;出口:  JZTVA,JZTVB
;--------------------------------
DSQ0CL:
        CLR   TR0
        RETI
        include "软件陷阱.asm"
;********************************
;       外部中断1处理
;********************************
WBZD1CL:
        include "软件陷阱.asm"
;********************************
;       定时器1处理
;********************************
DSQ1CL:
        include "软件陷阱.asm"
;********************************
;       串行中断处理
;********************************
CHZDCL:
        PUSH  PSW
        PUSH  ACC
        CLR   RS1
        SETB  RS0
        JB    RI,CHZDCL1
        ;发送中断:
        CLR   TI
        SETB  BZ_FSWB           ;发送完毕标志,1=完(预设)
        JB    BZ_TXD,CHZDCLE    ;发送标志,1=无
        CLR   BZ_FSWB           ;发送完毕标志,0=没完
        MOV   R1,TXD_OUT
        MOVX  A,@R1
        MOV   SBUF,A            ;发送
        LCALL SFSJCL            ;发送数据处理
        INC   TXD_OUT
        ANL   TXD_OUT,#01111111B
        MOV   A,TXD_OUT
        CJNE  A,TXD_IN,CHZDCLE
        SETB  BZ_TXD            ;发送标志,1=无
        LJMP  CHZDCLE
        include "软件陷阱.asm"
CHZDCL1:;接收中断:
        CLR   RI
        CLR   BZ_RXD            ;接收标志,0=有
        MOV   R1,RXD_IN
        MOV   A,SBUF
        MOVX  @R1,A             ;接收
        INC   RXD_IN
        ORL   RXD_IN,#10000000B
CHZDCLE:
        POP   ACC
        POP   PSW
        RETI
        include "软件陷阱.asm"
;********************************
;       T2定时中处理
;********************************
DSQ2CL:
        PUSH  PSW
        CLR   RS1
        SETB  RS0
        CLR   TF2          ;T2必需
        INC   R5
        CJNE  R5,#00H,T2A
        INC   R6
        CJNE  R6,#00H,T2A
        INC   R7
T2A:
        POP   PSW
        RETI
        include "软件陷阱.asm"
;********************************
        END
;##############################################################
;##############################################################
;********************************
;       发送数据处理
;********************************
        PROC  SFSJCL
SFSJCL:
        JB    BZ_QDXZ,SFSJCL_END;启动修正标志,1=不起动
        JB    BZ_FSSJ,SFSJCL_END;发送数据标志,1=不需处理
        PUSH  PSW
        PUSH  ACC
        SETB  RS1
        SETB  RS0
        ;--------
        MOV   R2,A              ;数据
        MOV   A,SFSJZT          ;状态
        CJNE  A,#0,SFSJCL1
        ;-----启动阶段----
        LCALL QDJDCL            ;启动阶段处理
        LJMP  SFSJCL_E
        include "软件陷阱.asm"
SFSJCL1:
        CJNE  A,#1,SFSJCL2
        ;-----增加阶段----
        LCALL ZJJDCL            ;增加阶段处理
        LJMP  SFSJCL_E
        include "软件陷阱.asm"
SFSJCL2:
        CJNE  A,#2,SFSJCL3
        ;-----减小阶段----
        LCALL JXJDCL            ;减小阶段处理
        LJMP  SFSJCL_E
        include "软件陷阱.asm"
SFSJCL3:
        CJNE  A,#3,SFSJCL4
        ;-----修改阶段----
        LCALL XGJDCL            ;修改阶段处理
        LJMP  SFSJCL_E
        include "软件陷阱.asm"
SFSJCL4:
SFSJCL_ERR:
        ;-----错误-------
        include "软件陷阱.asm"
SFSJCL_E:
        ;--------
        POP   ACC
        POP   PSW
SFSJCL_END:
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       启动阶段处理
;********************************
QDJDCL:
        MOV   A,SFSJML         ;发送数据命令
        CJNE  A,#0,QDJDCL1
        ;-----命令------------------
        MOV   A,R2             ;数据
        CJNE  A,#90H,QDJDCL1A
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL1A:
        CJNE  A,#80H,QDJDCL1B
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL1B:
        CJNE  A,#0B0H,QDJDCL1C
        MOV   SFSJML,#3        ;准备接收踏板第2位
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL1C:
        LJMP  QDJDCL_ERR       ;错误
        include "软件陷阱.asm"
QDJDCL1:
        CJNE  A,#1,QDJDCL2
        ;-----键号------------------
        MOV   SFSJML,#2        ;准备接收力度
        MOV   A,R2             ;数据
        CJNE  A,#109,$+3
        JNC   QDJDCL_ERR       ;错误,>20+88
        CJNE  A,#21,$+3
        JC    QDJDCL_ERR       ;错误,<20+1
        CJNE  A,#29,$+3
        JNC   QDJDCL11
        ;--低键--
        INC   JSQDJ            ;低键计数
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL11:
        CJNE  A,#101,$+3
        JC    QDJDCL12
        ;--高键--
        INC   JSQGJ            ;高键计数
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL12:
        ;--中键--
        LCALL QJSTC            ;清计数退出
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL2:
        CJNE  A,#2,QDJDCL3
        ;-----力度------------------
        MOV   SFSJML,#0        ;准备接收下一个命令
        MOV   A,R2             ;数据
        JNZ   QDJDCL21
        ;--关--
        DEC   FJJS             ;放键计数
        MOV   A,FJJS
        JNZ   QDJDCL_E         ;键没放完
        LCALL JPTJCL           ;键盘统计处理
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL21:
        CJNE  A,#128,$+3
        JNC   QDJDCL_ERR       ;错误
        ;--开--
        INC   FJJS             ;放键计数+1
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL3:
        CJNE  A,#3,QDJDCL4
        ;-----踏板第2位-------------
        MOV   SFSJML,#4        ;准备接收踏板第3位
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL4:
        CJNE  A,#4,QDJDCL_ERR  ;错误
        ;-----踏板开关--------------
        LJMP  QDJDCL_E
        include "软件陷阱.asm"
QDJDCL_ERR:
        ;-----错误-----------------
        include "软件陷阱.asm"
QDJDCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       键盘统计处理
;********************************
JPTJCL:
        MOV   A,JSQDJ          ;低键计数
        CJNE  A,#2,JPTJCL_A
        LJMP  JPTJCL_B
JPTJCL_A:
        CJNE  A,#4,JPTJCL1
JPTJCL_B:
        ;--低键=1 or 2---------
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#9,$+3
        JC    JPTJCL0          ;高键<5,无效
        ;--进增加---------     ;高键>=5 and 低键=1 or 2
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#1        ;状态,增加
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLZJ          ;音量增加标志,1=增加
        LJMP  JPTJCL_E
        include "软件陷阱.asm"
JPTJCL0:
        ;--无效---------------
        LCALL QJSTC            ;清计数退出
        LJMP  JPTJCL_E
        include "软件陷阱.asm"
JPTJCL1:
        ;--低键<>1 or 2 --------
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#2,JPTJCL1A
        LJMP  JPTJCL1B
JPTJCL1A:
        CJNE  A,#4,JPTJCL2
JPTJCL1B:
        ;--高键=1 or 2 ------
        MOV   A,JSQDJ          ;低键计数
        CJNE  A,#9,$+3
        JC    JPTJCL0          ;低键<5,无效
        ;--进减小-------       ;低键>=5 and 高键=1 or 2
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#2        ;状态,减小
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLJX          ;音量减小标志,1=减小
        LJMP  JPTJCL_E
        include "软件陷阱.asm"
JPTJCL2:
        ;--(低键and高键)<>1 or 2 ----
        MOV   A,JSQDJ          ;低键计数
        CJNE  A,#9,$+3
        JC    JPTJCL0          ;低键<5,无效
        ;--低键>=4------
        MOV   A,JSQGJ          ;高键计数
        CJNE  A,#9,$+3
        JC    JPTJCL0          ;高键<5,无效
        ;---恢复----------     ;低键>=5 and 高键>=5
        LCALL QJSBTC           ;清计数不退出
        MOV   SFSJZT,#3        ;状态,修改
        SETB  BZ_XZYL          ;修正音量标志,1=修正
        SETB  BZ_YLHF          ;音量恢复标志,1=恢复
        LJMP  JPTJCL_E
        include "软件陷阱.asm"
JPTJCL_E:
        RET
        include "软件陷阱.asm"
;##############################################################
;********************************
;       增加阶段处理
;********************************
ZJJDCL:
        MOV   A,SFSJML         ;发送数据命令
        CJNE  A,#0,ZJJDCL1
        ;-----命令--------
        MOV   A,R2             ;数据
        CJNE  A,#90H,ZJJDCL1A
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL1A:
        CJNE  A,#80H,ZJJDCL1B
        MOV   SFSJML,#1        ;准备接收键号
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL1B:
        CJNE  A,#0B0H,ZJJDCL1C
        MOV   SFSJML,#3        ;准备接收踏板第2位
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL1C:
        LJMP  ZJJDCL_ERR       ;错误
        include "软件陷阱.asm"
ZJJDCL1:
        CJNE  A,#1,ZJJDCL2
        ;-----键号--------
        MOV   SFSJML,#2        ;准备接收力度
        MOV   A,R2             ;数据
        MOV   XGJH, A          ;待修改键号
        CJNE  A,#109,$+3
        JNC   ZJJDCL_ERR       ;错误,>20+88
        CJNE  A,#21,$+3
        JC    ZJJDCL_ERR       ;错误,<20+1
        CJNE  A,#29,$+3
        JNC   ZJJDCL11
        ;--低键--
        INC   JSQDJ            ;低键计数
        INC   SFSJJS           ;数据计数
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL11:
        CJNE  A,#101,$+3
        JC    ZJJDCL12
        ;--高键--
        INC   JSQGJ            ;高键计数
        INC   SFSJJS           ;数据计数
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL12:
        ;--中键--
        INC   SFSJJS           ;数据计数
        MOV   JSQDJ,#0         ;低键计数
        MOV   JSQGJ,#0         ;高键计数
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL2:
        CJNE  A,#2,ZJJDCL3
        ;-----力度--------
        MOV   SFSJML,#0        ;准备接收下一个命令
        MOV   A,R2             ;数据
        JNZ   ZJJDCL21
        ;--关--
        DEC   FJJS             ;放键计数-1
        MOV   A,FJJS
        JNZ   ZJJDCL_E         ;键没放完
        LCALL ZJCL             ;增加处理
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL21:
        CJNE  A,#128,$+3
        JNC   ZJJDCL_ERR       ;错误
        ;--开--
        INC   FJJS             ;放键计数+1
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL3:
        CJNE  A,#3,ZJJDCL4
        ;-----踏板第2位---
        MOV   SFSJML,#4        ;准备接收踏板第3位
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL4:
        CJNE  A,#4,ZJJDCL_ERR  ;错误
        ;-----踏板开关----
        LJMP  ZJJDCL_E
        include "软件陷阱.asm"
ZJJDCL_ERR:
        ;-----错误--------
        include "软件陷阱.asm"
ZJJDCL_E:
        RET
        include "软件陷阱.asm"
;********************************
;       增加处理
;********************************
ZJCL:
        MOV   A,SFSJJS        ;数据计数
        CJNE  A,#2,ZJCL1
        ;---单键-------------
        LCALL LDZJ            ;力度增加
        LCALL QJSBTC          ;清计数不退出
        MOV   SFSJZT,#1       ;状态
        LJMP  ZJCL_E
        include "软件陷阱.asm"
ZJCL1:
        ;---多键------------------------
        MOV   A,JSQDJ         ;低键计数
        CJNE  A,#5,$+3
        JC    ZJCL_10         ;低键<3键
        MOV   A,JSQGJ         ;高键计数
        CJNE  A,#5,$+3
        JC    ZJCL_20         ;高键<3键
        ;---保存---------     ;低键>=3 and 高键)>=3
        LCALL QJSBTC          ;清计数不退出
        MOV   SFSJZT,#3       ;状态,修改
        SETB  BZ_XZYL         ;修正音量标志,1=修正
        SETB  BZ_YLBC         ;音量保存标志,1=保存
        LJMP  ZJCL_E
        include "软件陷阱.asm"
ZJCL_10:
        ;--低键<3--------------------
        MOV   A,JSQGJ         ;高键计数
        CJNE  A,#5,$+3
        JC    ZJCL_0          ;高键<3,无效
        ;---保持增加状态---   ;高键>=3 and 低键<=2
        LCALL QJSBTC          ;清计数不退出

⌨️ 快捷键说明

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