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