📄 mvoldet.asm
字号:
;************************ 主音量电位器检测子程序集(编码电位器) ************************
;编码电位器
;占用: ACC, C
;************* 外部变量说明 **********************
BC_VOLA BIT P2.1 ;*** VOL+ 输入脚
BC_VOLS BIT P2.2 ;*** VOL- 输入脚
EXTRN BIT(CW2_FLG) ;正转到位标志位(*作为函数返回值), 开机时清0 !!!
EXTRN BIT(CCW2_FLG) ;反转到位标志位(*作为函数返回值), 开机时清0 !!!
EXTRN BIT(CW1_FLG) ;正转起始标志位, 开机时清0 !!!
EXTRN BIT(CCW1_FLG) ;反转起始标志位, 开机时清0 !!!
EXTRN DATA(ROTE_DIRECT) ;=1 为正向,=2为反向, 方向暂存
;************ 公共变量定义 ****************
PUBLIC MVOL_DET
;=============================== 公共子程序 (可被C调用) ===============================
;***** 检测编码电位器的+-标志位*****************
;注意: 静音时不要调用该程序!!!
;该程序插入主程序中, 每次调用后, 刷新 CW2_FLG(正转到位标志) 刷新 CCW2_FLG(反转到位标志)
;主程序通过检测 CW2_FLG 和 CCW2_FLG 来确定音量的增加或减少, 音量处理后要把标志清0
;***********************************************
MVOL_DET:
SETB BC_VOLA ;ready to detect volume-sw and input-sw
SETB BC_VOLS ;bit 1AH=1 00CH=1 bit 18H=1
JB CW2_FLG,LBL_P12
JB CCW2_FLG,LBL_P12 ;BC_VOLS
JNB CW1_FLG,LBL_P13
JNB BC_VOLA,LBL_P14 ;CW顺时钟 bit 1BH=1 00CH=2 bit 19H=1
JNB BC_VOLS,LBL_P15
SJMP LBL_P16
LBL_P14: ;BC_VOLA
JNB BC_VOLS,LBL_P17
RET
LBL_P17:
MOV ROTE_DIRECT,#001H
LBL_P15:
SJMP LBL_P12 ;ROTE_DIRECT 方向=1 为正向,=2为反向
LBL_P16:
CLR CW1_FLG
CLR CW2_FLG
CLR CCW1_FLG
CLR CCW2_FLG ;BC_VOLS
MOV A,ROTE_DIRECT
CJNE A,#001H,LBL_P21
LBL_P22:
CLR SYS_START
SETB CW2_FLG ;23H
LBL_P12:
RET
LBL_P13:
JNB CCW1_FLG,LBL_P24
JNB BC_VOLA,LBL_P18
JNB BC_VOLS,LBL_P12
SJMP LBL_P19
LBL_P18:
JNB BC_VOLS,LBL_P20
RET
LBL_P20:
MOV ROTE_DIRECT,#002H
RET
LBL_P19:
CLR CW1_FLG
CLR CW2_FLG
CLR CCW1_FLG
CLR CCW2_FLG
MOV A,ROTE_DIRECT
CJNE A,#002H,LBL_P22
LBL_P21:
CLR SYS_START
SETB CCW2_FLG
RET
LBL_P24:
JB BC_VOLA,LBL_P23
JNB BC_VOLS,LBL_P12
CLR CW2_FLG
CLR CCW1_FLG
CLR CCW2_FLG
SETB CW1_FLG
RET
LBL_P23:
JB BC_VOLS,LBL_P12
JNB BC_VOLA,LBL_P12
CLR CW1_FLG
CLR CW2_FLG
CLR CCW2_FLG
SETB CCW1_FLG
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -