📄 mp3_ctroler.asm
字号:
LCALL SET_ADRESS
MOV CHAR_ADR,#23;字符代码 T
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#14;字符代码 E
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#21;字符代码 R
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#14;字符代码 E
MOV DISP_COLUM,#5H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 D
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
RET
SELECT1_CTR:
JNB P_SELCMB,ECT_2ECTR;按键确认
LJMP ECT_ECTR
ECT_2ECTR:
JBC P_SEL,ECT_2ECTR2
LJMP ECT_ECTR
ECT_2ECTR2:
LCALL PROTECT_DISP;保存显示
LCALL CLR_SREEN;清屏
LCALL DFH_OP
LCALL CLR_TESET ;清除选择标记
JNB MUSIC_SET_AREA,ECT_0CTR
MOV MUSIC_OPTC,#00H
LCALL disp_off;音场设置
ljmp ECT_8CTR
ECT_0CTR:
MOV DPTR,#MUSIC_OPTION
MOVX A,@DPTR
CLR ALLOW_OP
CJNE A,#00H,TTYJ3
SETB ALLOW_OP
TTYJ3:
INC SELEC_C
MOV R0,SELEC_C
CJNE R0,#07H,ECT_1CTR
MOV SELEC_C,#00
ECT_1CTR:
MOV R0,SELEC_C
CJNE R0,#00H,ECT_2CTR
SETB VOL_SETB
LCALL HEAD_VOL
LJMP ECT_8CTR
ECT_2CTR:
CJNE R0,#01H,ECT_3CTR
JNB ALLOW_OP,TTYJ3
SETB BASS_SETB
LCALL HEAD_BAS
LJMP ECT_8CTR
ECT_3CTR:
CJNE R0,#02H,ECT_4CTR
JNB ALLOW_OP,TTYJ3
SETB TRE_SETB
LCALL HEAD_TRE
LJMP ECT_8CTR
ECT_4CTR:
CJNE R0,#03H,ECT_5CTR
SETB SETB_BALLR
LCALL HEAD_BALLR
LJMP ECT_8CTR
ECT_5CTR:
CJNE R0,#04H,ECT_6CTR
SETB SETB_BALRR
LCALL HEAD_BALRR
LJMP ECT_8CTR
ECT_6CTR:
CJNE R0,#05H,ECT_7CTR
SETB SETB_FADLF
LCALL HEAD_FADLF
LJMP ECT_8CTR
ECT_7CTR:
CJNE R0,#06H,ECT_ECTR
SETB SETB_FADRF
LCALL HEAD_FADRF
LJMP ECT_8CTR
ECT_8CTR:
LCALL SELECT_DISH;选择模式
ECT_ECTR:
CLR ALLOW_OP
RET
HEAD_BALRR:
LCALL BAL_KKR
MOV CHAR_ADR,#21;字符代码 R
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+3;RR
lcall sed_sub
RET
HEAD_BAS:
LCALL CLR_SREEN
MOV CHAR_ADR,#11;字符代码 B
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#10;字符代码 A
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#22;字符代码 S
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+7
MOV A,@R0
ANL A,#0FH
LCALL RV_VOLUED
RET
RV_VOLUED:
MOV B,#10
DIV AB
MOV R1,B
MOV CHAR_ADR,A;字符代码 O
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,R1;字符代码 O
MOV DISP_COLUM,#7H;字符列
LCALL SET_ADRESS
LCALL DISP_LCD
RET
HEAD_VOL:
LCALL SOUND_SETB
LCALL DISP_LCD
RET
SELECT_DISH:
LCALL DELAY_COVERYER
MOV SELCMC_DONE,#150
SETB SELCMD_DONE
RET
disp_off:
LCALL CLR_SREEN
LCALL DSP_SIG
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#15;字符代码 F
MOV DISP_COLUM,#7H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#15;字符代码 F
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
lcall DISP_M_OPTION
LCALL DISP_LCD
RET
DSP_SIG:
MOV CHAR_ADR,#13;字符代码 D
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#22;字符代码 S
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#20;字符代码 P
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
RET
MUTE_PRESS:
JBC MUTE_KNOCK,E_1PRESS
SETB MUTE_KNOCK
SETB MUTE_CTROL;打开静音
LJMP E_EPRESS
E_1PRESS:
clr MUTE_CTROL;关闭静音
E_EPRESS:
RET
SUBB_1VOL:;音量减1
PUSH 02H
JNB P_V_DN,B_VOL
CLR P_V_DN
JNB S_SCAN,B_1VOL
MOV A,#08H
lcall SEND_COMMAND
JBC SEND_ERROR,B_VOL
CLR S_SCAN
CLR sign_INT
lcall MP3_SMOD
LJMP B_VOL
B_1VOL:
JB SELCMD_DONE,SELEC_SUBB
LCALL SAV_SUBV
LCALL DELAY_COVERYER
LJMP B_VOL
SELEC_SUBB:
LCALL SELECTION_SUBB
LJMP B_VOL
B_VOL:
POP 02H
RET
SELECTION_SUBB:
MOV SELCMC_DONE,#150
JNB VOL_SETB,NEXT_DN
LCALL SAV_SUBV
LJMP NEXT_8DN
NEXT_DN:
JNB BASS_SETB,NEXT_2DN
MOV R2,#1
LCALL SUBB_BASS
MOV R0,#vol_ctr+7
MOV DPTR,#SOUND_OP+7
LCALL SETB_AUND
LCALL HEAD_BAS
ljmp NEXT_8DN
NEXT_2DN:
JNB TRE_SETB,NEXT_3DN
MOV R2,#1
LCALL SUBB_TREBLE
MOV R0,#vol_ctr+8
MOV DPTR,#SOUND_OP+8
LCALL SETB_AUND
LCALL HEAD_TRE
ljmp NEXT_8DN
NEXT_3DN:
JNB SETB_BALLR,NEXT_4DN
MOV R2,#1
LCALL SUBB_BALLR
MOV R0,#vol_ctr+2
MOV DPTR,#SOUND_OP+2
LCALL SETB_AUND
LCALL HEAD_BALLR
ljmp NEXT_8DN
NEXT_4DN:
JNB SETB_BALRR,NEXT_5DN
MOV R2,#1
LCALL SUBB_BALRR
MOV R0,#vol_ctr+3
MOV DPTR,#SOUND_OP+3
LCALL HEAD_BALRR
ljmp NEXT_8DN
NEXT_5DN:
JNB SETB_FADLF,NEXT_6DN
MOV R2,#1
LCALL SUBB_FADLF
MOV R0,#vol_ctr+4
MOV DPTR,#SOUND_OP+4
LCALL SETB_AUND
LCALL HEAD_FADLF
ljmp NEXT_8DN
NEXT_6DN:
JNB SETB_FADRF,NEXT_7DN
MOV R2,#1
LCALL SUBB_FADRF
MOV R0,#vol_ctr+5
MOV DPTR,#SOUND_OP+5
LCALL SETB_AUND
LCALL HEAD_FADRF
ljmp NEXT_8DN
NEXT_7DN:
JNB MUSIC_SET_AREA,NEXT_EDN
LCALL SUB_MUSIC_OP
NEXT_8DN:
LCALL SELECT_DISH
NEXT_EDN:
RET
HEAD_FADRF:
LCALL FAD_SETBY
MOV CHAR_ADR,#21;字符代码 R
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+5;RF
lcall sed_sub
RET
add_FADLF:;TREBLE加
MOV R0,#vol_ctr+4
MOV A,@R0
CJNE A,#80H,FADLF_SUBB1
LJMP FADLF_SUBBE
FADLF_SUBB1:
lcall subb_r2
FADLF_SUBBE:
RET
SUBB_FADLF:;RF减
MOV R0,#vol_ctr+4
MOV A,@R0
CJNE A,#9FH,FADLF_ADD1
LJMP FADLF_ADDE
FADLF_ADD1:
lcall add_r2
FADLF_ADDE:
RET
add_BALRR:;TREBLE加
MOV R0,#vol_ctr+3
MOV A,@R0
CJNE A,#0E0H,BALRR_SUBB1
LJMP BALRR_SUBBE
BALRR_SUBB1:
lcall subb_r2
BALRR_SUBBE:
RET
SUBB_BALRR:;RF减
MOV R0,#vol_ctr+3
MOV A,@R0
CJNE A,#0FFH,BALRR_ADD1
LJMP BALRR_ADDE
BALRR_ADD1:
lcall add_r2
BALRR_ADDE:
RET
HEAD_BALLR:
LCALL BAL_KKR
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+2;LR
lcall sed_sub
RET
sed_sub:
MOV A,@R0
ANL A,#1FH
MOV R0,A
MOV A,#1FH
CLR C
SUBB A,R0
LCALL RV_VOLUED
ret
BAL_KKR:
LCALL CLR_SREEN
MOV CHAR_ADR,#11;字符代码 B
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#10;字符代码 A
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
RET
add_BALLR:;TREBLE加
MOV R0,#vol_ctr+2
MOV A,@R0
CJNE A,#0C0H,BALLR_SUBB1
LJMP BALLR_SUBBE
BALLR_SUBB1:
lcall subb_r2
BALLR_SUBBE:
RET
SUBB_BALLR:;RF减
MOV R0,#vol_ctr+2
MOV A,@R0
CJNE A,#0DFH,BALLR_ADD1
LJMP BALLR_ADDE
BALLR_ADD1:
lcall add_r2
BALLR_ADDE:
RET
add_TREBLE:;TREBLE加
PUSH 02H
MOV R0,#vol_ctr+8
MOV A,@R0
CJNE A,#7FH,TREBLE_ADD1
LJMP TREBLE_ADDE
TREBLE_ADD1:
ADD A,R2
MOV @R0,A
LCALL SETD_CTRV
TREBLE_ADDE:
POP 02H
RET
SUBB_TREBLE:;RF减
PUSH 02H
MOV R0,#vol_ctr+8
MOV A,@R0
CJNE A,#70H,TREBLE_SUBB1
LJMP TREBLE_SUBBE
TREBLE_SUBB1:
CLR C
SUBB A,R2
MOV @R0,A
LCALL SETD_CTRV
TREBLE_SUBBE:
POP 02H
RET
HEAD_TRE:
PUSH 01H
LCALL CLR_SREEN
MOV CHAR_ADR,#23;字符代码 T
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#21;字符代码 R
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#14;字符代码 E
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+8
MOV A,@R0
ANL A,#0FH
LCALL RV_VOLUED
POP 01H
RET
add_BASS:;BASS加
PUSH 02H
MOV R0,#vol_ctr+7
MOV A,@R0
CJNE A,#6FH,BASS_ADD1
LJMP BASS_ADDE
BASS_ADD1:
ADD A,R2
MOV @R0,A
LCALL SETD_CTRV
BASS_ADDE:
POP 02H
RET
SUBB_BASS:;BASS减
PUSH 02H
MOV R0,#vol_ctr+7
MOV A,@R0
CJNE A,#60H,BASS_SUBB1
LJMP BASS_SUBBE
BASS_SUBB1:
CLR C
SUBB A,R2
MOV @R0,A
LCALL SETD_CTRV
BASS_SUBBE:
POP 02H
RET
CLR_ABIT:
CLR sign_ROCK
CLR sign_POP
CLR sign_CLASS
CLR sign_FLAT
RET
ret_sign_p:
lcall CLR_ABIT
MOV A,MUSIC_OPTC
CJNE A,#0,SFT_S1BIT
clr AREAO_ON
LJMP SFT_S5BIT
SFT_S1BIT:
CJNE A,#1,SFT_S2BIT
setb AREAO_ON
SETB sign_POP
LJMP SFT_S5BIT
SFT_S2BIT:
CJNE A,#2,SFT_S3BIT
setb AREAO_ON
SETB sign_FLAT
LJMP SFT_S5BIT
SFT_S3BIT:
CJNE A,#3,SFT_S4BIT
setb AREAO_ON
SETB sign_CLASS
LJMP SFT_S5BIT
SFT_S4BIT:
CJNE A,#4,SFT_S5BIT
setb AREAO_ON
SETB sign_ROCK
LJMP SFT_S5BIT
SFT_S5BIT:
ret
flat_m:
LCALL CLR_SREEN
MOV CHAR_ADR,#15;字符代码 F
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#10;字符代码 A
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#23;字符代码 T
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
lcall DISP_M_OPTION
LCALL DISP_LCD
RET
class_m:
LCALL CLR_SREEN
MOV CHAR_ADR,#12;字符代码 C
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#10;字符代码 A
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#22;字符代码 S
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#22;字符代码 S
MOV DISP_COLUM,#5H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
lcall DISP_M_OPTION
LCALL DISP_LCD
RET
pop_m:
LCALL CLR_SREEN
MOV CHAR_ADR,#20;字符代码 P
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#20;字符代码 P
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
lcall DISP_M_OPTION
LCALL DISP_LCD
RET
rock_m:
LCALL CLR_SREEN
MOV CHAR_ADR,#21;字符代码 R
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#12;字符代码 C
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#41;字符代码 K
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
lcall DISP_M_OPTION
LCALL DISP_LCD
RET
SAV_SUBV:
LCALL JUDG_MUTE
MOV R2,#01
LCALL SUBB_volume
LCALL SOUND_SETB
LCALL DISP_LCD
LCALL CLR_DISPT
MOV R0,#vol_ctr+1
MOV DPTR,#SOUND_OP+1
LCALL SETB_AUND;存储设置
RET
CLR_CARRY_BIT:
MOV R1,#07H
LCALL clr_bitty
RET
ADD_1VOL:;音量加1
PUSH 02H
JNB P_V_UP,D_VOL
CLR P_V_UP
JNB S_SCAN,E_VOL;歌曲正在浏览
MOV A,#08H
lcall SEND_COMMAND
JBC SEND_ERROR,D_VOL
CLR sign_INT
CLR S_SCAN;
lcall MP3_SMOD
LJMP D_VOL
E_VOL:
JB SELCMD_DONE,SELEC_ADD;正在模式选择状态
LCALL SETB_VOLEUP
LCALL DELAY_COVERYER
LJMP D_VOL
SELEC_ADD:
LCALL SELEC_2ADD
LJMP D_VOL
D_VOL:
POP 02H
RET
DELAY_COVERYER:
LCALL CLR_DISPT
SETB SOUND_SB
MOV SOUND_SC,#150
RET
SETB_VOLEUP:
LCALL JUDG_MUTE
MOV R2,#01
LCALL add_volume
LCALL SOUND_SETB
LCALL CLR_CARRY_BIT
LCALL DISP_LCD
LCALL CLR_DISPT
MOV R0,#vol_ctr+1
MOV DPTR,#SOUND_OP+1
LCALL SETB_AUND
RET
PROTECT_DISP:
MOV DPTR,#DISP_PROTECT+36
MOVX A,@DPTR
CJNE A,#0AAH,CT_DISP
LJMP PROTECTED
CT_DISP:
MOV DPTR,#DISP_PROTECT
MOV R0,#COMM_L1
MOV R1,#36
PROTECT_1:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,PROTECT_1
MOV A,#0AAH
MOVX @DPTR,A
PROTECTED:
RET
clr_bitty:
MOV R0,#20H
CLR_B:
MOV @R0,#00
INC R0
DJNZ R1,CLR_B
ret
COVERY_DISP:
MOV DPTR,#DISP_PROTECT
MOV R0,#COMM_L1
MOV R1,#36
COVERY_1:
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R1,COVERY_1
CLR A
MOVX @DPTR,A
RET
SOUND_SETB:
LCALL PROTECT_DISP;保存显示
LCALL CLR_SREEN
MOV CHAR_ADR,#25;字符代码 V
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+1
MOV A,#3FH
CLR C
SUBB A,@R0
MOV B,#10
DIV AB
MOV R1,B
MOV CHAR_ADR,A;字符代码 L
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,R1;字符代码 L
MOV DISP_COLUM,#7H;字符列
LCALL SET_ADRESS
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -