📄 av-p06a.asm
字号:
RM12: MOV A,BASS_DATA
DEC A
CJNE A,#255,VL_2A
RET
VL_2A: MOV BASS_DATA,A
VL3: CJNE R5,#2,VL4 ;高音量调节,下限为0
RM13: MOV A,TREB_DATA
DEC A
CJNE A,#255,VL_3A
RET
VL_3A: MOV TREB_DATA,A
VL4: CJNE R5,#3,VL5 ;卡拉OK量调节,下限为0
RM14: MOV A,MVOL_DATA
DEC A
CJNE A,#255,VL_4A
RET
VL_4A: MOV MVOL_DATA,A
VL5: CJNE R5,#4,VL7 ;ECHO量调节,下限为0
RM15: MOV A,ECHO_DATA
DEC A
CJNE A,#255,VL_5A
RET
VL_5A: MOV ECHO_DATA,A
VL7: CJNE R5,#6,VL8 ;SURL调节,下限为0
RM16: MOV A,SURL_DATA
DEC A
CJNE A,#255,VL_7A
RET
VL_7A: MOV SURL_DATA,A
VL8: CJNE R5,#7,VL9 ;SURR调节,下限为0
RM17: MOV A,SURR_DATA
DEC A
CJNE A,#255,VL_8A
RET
VL_8A: MOV SURR_DATA,A
VL9: CJNE R5,#8,VL10 ;CEN调节,下限为0
RM18: MOV A,CEN_DATA
DEC A
CJNE A,#255,VL_9A
RET
VL_9A: MOV CEN_DATA,A
VL10: CJNE R5,#9,VL11 ;SW调节,下限为0
RM19: MOV A,BW_DATA
DEC A
CJNE A,#255,VL_10A
RET
VL_10A: MOV BW_DATA,A
VL11: RET
;;-------------------------操作优先排位子程序--------------------------------
FRIST: MOV A,SYS_SIGN
CJNE A,#17,FRI_2 ;处在INPUT显示模式下,按下加减键会把VOL操作排在第一位
MOV SYS_SIGN,#0
FRI_2: CJNE A,#13,FRI_3 ;处在5.1显示模式下,按下加减键会把VOL操作排在第一位
MOV SYS_SIGN,#0
FRI_3: CJNE A,#12,FRI_4 ;处在2.0显示模式下,按下加减键会把VOL操作排在第一位
MOV SYS_SIGN,#0
FRI_4: CJNE A,#14,FRI_5 ;处在LOUND显示模式下,按下加减键会把VOL操作排在第一位
MOV SYS_SIGN,#0
FRI_5: CJNE A,#15,FRI_6 ;处在MUTE显示模式下,按下加减键会把VOL操作排在第一位
MOV SYS_SIGN,#0
CLR MUTE_FLAG ;顺便把静音也关闭了
FRI_6: RET
;;--------------------------无按键按下自动复位子程序----------------------------
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
KEY_REST: MOV A,KEY_NUM
JNZ BCK_1 ;
BCK_0: INC R4 ;
CJNE R4,#150,BCK_2 ;
BCK_3 : MOV R4,#00H
INC R5
CJNE R5,#16,BCK_2
MOV R5,#00H
MOV SYS_SIGN,#17 ;把SYS_SIGN预置为"INPUT状态"
MOV KEY_DELAY,#129
JMP BCK_2
BCK_1: MOV R4,#00
MOV R5,#00
MOV GIF_SIGN,#2 ;有按键按把GIF_SIGN置2
MOV GIF_LONG,#0
BCK_2: JMP RUN2_1
;/////////////////////////////////////////////////////////////////////////////////////////
TIME : PUSH ACC
PUSH PSW
SETB RS0
MOV A, REM_SIGN
CJNE A,#03H,EXIT1 ;不是连发的定时溢出标记清0
INC R1 ;执行一次遥控按键处理后,T0延事超过60ms,R1+1
INC R2 ;T0中断次数存储单元,当T0中断3次(每次60ms),本次遥控结束
MOV A,R2
SUBB A,#3 ;判断在250ms内有无连发码出现
JNC EXIT0 ;无则清0
MOV TH0,#15H ;定时值60MS
MOV TL0,#0A0H
SETB TR0
JMP EXIT2
EXIT0: CLR TR0
MOV R2,#00H
EXIT1: MOV REM_SIGN,#00H
EXIT2: POP PSW
POP ACC
RETI
NOP
NOP
INT_REM : MOV MTD2,A
MOV MTD3,PSW
MOV MTD4,DPH
MOV MTD5,DPL
SETB RS0 ;使用另一组寄存器
MOV R2,#00H
CLR TR0
CLR EX0
MOV R5,REM_SIGN
CJNE R5,#00H,INT_2 ;初始化原始数据
MOV R0,#REM_FIX ;遥控数据接收的首址
MOV R1,#0 ;
MOV R2,#0 ;R2是连发溢出标记,当T0延时60ms*3后仍未检测到有遥控中断,本次遥控结束
MOV R3,#8 ;每个字节的位数
MOV R6,#0 ;数据对比单元
MOV R7,#4 ;要接收的字节数
MOV REM_SIGN,#01H ;建立标记01
JMP INT_OFF
INT_2: CJNE R5,#01H,INT_3 ;起始码和结果码的判断
MOV A,#30H ;
MOV R6,TH0
SUBB A,R6
JNC ERR_OUT ;启动码+结果码<12.55ms退出(忽略TL0的值)
MOV A,#039H
SUBB A,R6
JC ERR_OUT ;启动码+结果码〉14.6ms推出(忽略TL0的值)
MOV REM_SIGN,#02H ;建立标记02
JMP INT_OFF
INT_3: CJNE R5,#02H,INT_4 ;(old key_out)
MOV A,#03H
MOV R6,TH0
SUBB A,R6 ;R6内存TH0的值
JNC ERR_OUT ;周期<1ms退出
MOV A,#0BH
SUBB A,R6
JC ERR_OUT ;周期>2.69ms退出
MOV A,#6H ;输入检测周期1.6ms用来判断1或0
SUBB A,R6 ;
MOV A,@R0 ;
RRC A ;存入一位数值
MOV @R0,A
DJNZ R3,INT_OFF
INT_3_1 :INC R0
MOV R3,#08H
DJNZ R7,INT_OFF
MOV A,REM_KEY1
CPL A
CJNE A,REM_KEY,ERR_OUT ;正反码比较,错则退
MOV REM_TIME,#8 ;
;----------------------------------------------------------
INT_4: ;
;----------------------------------------------------------
KY_OUT: MOV A,REM_SIGN
CJNE A,#3,ODD ;判断遥控是出于第一次按键触发还是处于连发阶段,连发阶段的标记是REM_SIG=3
MOV A,R1 ;连发最小时间判断,过滤掉<60ms的脉冲,因<60ms的脉冲不会令T0溢出
JZ NORUN
ODD : INC REM_TIME ;每连发一次连发记忆单元+1
NORUN: MOV A,REM_TIME ;因为跳过上一步IREM_TIME+1,所以不会执行BIJIAO(不够减)
SUBB A,#5 ;连发5次调用一次按键处理程序
JNC GO_0
JMP GO_1
GO_0: MOV REM_TIME,#00H ;每调用一次按键处理子程序连发记忆单元清0
JMP BIJIAO2
BI_RET: MOV R1,#00
MOV REM_SIGN,#03H ;执行一次按键处理后建立遥控标记#03
GO_1: SETB TR0
JMP INT_OFF1
ERR_OUT: MOV REM_SIGN,#00H ;报错标记清0
LJMP INT_OFF1 ;报错返回不启动定时器
INT_OFF: SETB TR0
INT_OFF1:MOV TH0,#00H
MOV TL0,#00H
SETB EX0
MOV DPL,MTD5
MOV DPH,MTD4
MOV PSW,MTD3
MOV A,MTD2
MOV R4,#0
MOV R5,#0 ;确定遥控结束后的参数复位时间
RETI
NOP
NOP
BIJIAO2: MOV GIF_SIGN,#2 ;动画进程置2,让他显示功能内容
MOV GIF_LONG,#0
MOV R4,REM_KEY
CJNE R4,#2,BI1
CALL RM1 ;总音量调节+
MOV SYS_SIGN,#0
BI1: CJNE R4,#1,BI2
CALL RM2 ;总音量调节-
MOV SYS_SIGN,#0
BI2: CJNE R4,#56H,BI3
MOV DSP_DATA,#0
CALL RM3 ;BASS+
MOV SYS_SIGN,#1 ;调整显示参数
BI3: CJNE R4,#11H,BI4
MOV DSP_DATA,#0
CALL RM4 ;TR+
MOV SYS_SIGN,#2
BI4: CJNE R4,#1DH,BI5
CALL RM5 ;MVOL+
MOV SYS_SIGN,#3
BI5: CJNE R4,#1CH,BI6
CALL RM6 ;ECHO+
MOV SYS_SIGN,#4
BI6: CJNE R4,#50H,BI7 ;SL+
CALL RM7
MOV SYS_SIGN,#6
BI7: CJNE R4,#46H,BI8 ;SR+
CALL RM8
MOV SYS_SIGN,#7
BI8: CJNE R4,#44H,BI9 ;CEN+
CALL RM9
MOV SYS_SIGN,#8
BI9: CJNE R4,#5EH,BI10 ;BW+
CALL RM10
MOV SYS_SIGN,#9
BI10: CJNE R4,#57H,BI11 ;BASS-
MOV DSP_DATA,#0
CALL RM12
MOV SYS_SIGN,#1
BI11: CJNE R4,#0DH,BI12
MOV DSP_DATA,#0
CALL RM13 ;TR-
MOV SYS_SIGN,#2
BI12: CJNE R4,#16H,BI13
MOV DSP_DATA,#0
CALL RM14 ;MVOL-
MOV SYS_SIGN,#3
BI13: CJNE R4,#17H,BI14
CALL RM15 ;ECHO-
MOV SYS_SIGN,#4
BI14: CJNE R4,#53H,BI15
CALL RM16 ;SL-
MOV SYS_SIGN,#6
BI15: CJNE R4,#03H,BI16
CALL RM17 ;SR-
MOV SYS_SIGN,#7
BI16: CJNE R4,#13H,BI17
CALL RM18 ;CEN-
MOV SYS_SIGN,#8
BI17: CJNE R4,#1FH,BI18
CALL RM19 ;BW-
MOV SYS_SIGN,#9
BI18: CJNE R4,#42H,BI19
MOV INPUT_DATA,#1 ;AUX
MOV SYS_SIGN,#17
BI19: CJNE R4,#43H,BI20
MOV INPUT_DATA,#2 ;VCD
MOV SYS_SIGN,#17
BI20: CJNE R4,#0FH,BI25 ;AC3
MOV INPUT_DATA,#3
MOV CH_DATA,#0 ;AC3状态下启动5.1ch
MOV SYS_SIGN,#17
BI25: CJNE R4,#0CH,BI26 ;平衡L
MOV SYS_SIGN,#10
MOV A,BALN_DATA
INC A
CJNE A,#9,BI25_0
JMP RET6
BI25_0: MOV BALN_DATA,A
JMP RET6
BI26: CJNE R4,#05H,BI27 ;平衡R
MOV SYS_SIGN,#10
MOV A,BALN_DATA
DEC A
CJNE A,#255,BI26_0
JMP RET6
BI26_0: MOV BALN_DATA,A
JMP RET6
BI27: CJNE R4,#45H,BI28
MOV DSP_DATA,#1 ;DSP1
JMP RET7
BI28: CJNE R4,#8H,BI29
MOV DSP_DATA,#2 ;DSP2
JMP RET7
BI29: CJNE R4,#7H,BI30
MOV DSP_DATA,#3 ;DSP3
JMP RET7
BI30: CJNE R4,#9H,BI31
MOV DSP_DATA,#4 ;DSP4
JMP RET7
BI31: CJNE R4,#47H,BI32
MOV DSP_DATA,#5 ;DSP5
JMP RET7
BI32: CJNE R4,#4CH,BI33
MOV DSP_DATA,#6 ;DSP6
JMP RET7
BI33: CJNE R4,#4AH,BI34
MOV DSP_DATA,#7 ;DSP7
JMP RET7
BI34: CJNE R4,#1BH,BI35
MOV DSP_DATA,#0 ;DSP8
JMP RET7
BI35: CJNE R4,#4DH,BI36 ;MUTE
MOV SYS_SIGN,#15
MOV A,REM_SIGN ;MUTE连发调用无效(REM_SIGN=#3是连发阶段)
CJNE A,#3,BI35A
JMP RET6
BI35A: JNB MUTE_FLAG,MUTE1
CLR MUTE_FLAG
JMP RET6
MUTE1: SETB MUTE_FLAG
BI36: CJNE R4,#49H,BI37 ;2.0CH
; MOV CH_DATA,#3H
MOV A,INPUT_DATA
CJNE A,#3,BI36_1 ;在DVD状态下声道模式不能切换
MOV SYS_SIGN,#20
JMP BI37
BI36_1: MOV SYS_SIGN,#12
MOV CH_DATA,#3H
BI37: CJNE R4,#48H,BI38 ;5.1CH
MOV CH_DATA,#0
MOV SYS_SIGN,#13
BI38: CJNE R4,#5FH,BI39 ;LOUND
MOV SYS_SIGN,#14
MOV A,REM_SIGN ;LOUND连发调用无效(REM_SIGN=#3是连发阶段)
CJNE A,#3,BI38A
JMP RET6
BI38A: JNB LOUND_FLAG,LOU1
CLR LOUND_FLAG
JMP RET6
LOU1: SETB LOUND_FLAG
BI39: CJNE R4,#4FH,BI40
MOV A,REM_SIGN ;DISP_MODE连发调用无效(REM_SIGN=#3是连发阶段)
CJNE A,#3,BI39A
JMP RET6
BI39A: MOV A,DP_MODE ;各种显示模式的切换
CJNE A,#0,BI39B
MOV DP_MODE,#1
BI39B: CJNE A,#1,BI39C
MOV DP_MODE,#2
BI39C: CJNE A,#2,BI39D
MOV DP_MODE,#3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -