📄
字号:
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 + -