📄 mp3_ctrolert
字号:
MOV A,R0
MOV DPH,STA_DPH
MOV DPL,STA_DPL
MOVX @DPTR,A
MOV R0,STA_DPL
LCALL WD_EERAM
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV R0,DPL
LCALL WD_EERAM
INC DPTR
MOV STA_DPH,DPH
MOV STA_DPL,DPL
LCALL SEARCH_V
INC STATION_RV
LCALL DELAY_COVERYER
DJNZ STATION_COUNT,TYU_2SEARCH;存储记数
DFF3G:
lcall serch_end
CLR SEACH_BEGIN
LCALL CLR_DISPT
CLR SOUND_SB
CLR MUTE_CTROL
EXIT_SEARCH:
RET
SUBB_1:
MOV R1,#W_DWord+1
MOV A,@R1
SUBB A,#01
MOV @R1,A
MOV R6,A
DEC R1
MOV A,@R1
SUBB A,#00
MOV @R1,A
MOV R7,A
RET
ADDC_1:
MOV R1,#W_DWord+1
MOV A,@R1
ADD A,#01
MOV @R1,A
MOV R6,A
DEC R1
MOV A,@R1
ADDC A,#00
MOV @R1,A
MOV R7,A
RET
JUDG_HALF:
CJNE A,#00H,JUDG_0HALF
MOV R1,#0AAH
LJMP EXIT_HALF
JUDG_0HALF:
CJNE A,#01H,JUDG_1HALF
MOV R1,#0DAH
LJMP EXIT_HALF
JUDG_1HALF:
CJNE A,#02H,JUDG_2HALF
MOV R1,#0DAH
LJMP EXIT_HALF
JUDG_2HALF:
CJNE A,#03H,JUDG_3HALF
MOV R1,#0ADH
LJMP EXIT_HALF
JUDG_3HALF:
CJNE A,#04H,JUDG_4HALF
MOV R1,#0ADH
LJMP EXIT_HALF
JUDG_4HALF:
CJNE A,#05H,JUDG_5HALF
MOV R1,#0AAH
LJMP EXIT_HALF
LJMP EXIT_HALF
JUDG_5HALF:
CJNE A,#06H,JUDG_6HALF
MOV R1,#0DAH
LJMP EXIT_HALF
JUDG_6HALF:
CJNE A,#07H,JUDG_7HALF
MOV R1,#0DAH
LJMP EXIT_HALF
JUDG_7HALF:
CJNE A,#08H,JUDG_8HALF
MOV R1,#0ADH
LJMP EXIT_HALF
JUDG_8HALF:
CJNE A,#09H,JUDG_9HALF
MOV R1,#0ADH
LJMP EXIT_HALF
JUDG_9HALF:
MOV R1,#0CCH
EXIT_HALF:
RET
GET_SSERCH:
MOV R1,#W_DWord
MOV A,@R1
ORL A,#0C0H
MOV @R1,A
MOV R1,#W_DWord+2
MOV A,@R1
RET
serch_end:
LCALL CLR_FLASH
MOV DPTR,#STAT_COUNT
MOV A,#0
MOVX @DPTR,A
MOV R0,DPL
LCALL WD_EERAM
MOV DPTR,#SAV_BAND
MOV A,#01H
MOVX @DPTR,A
MOV R0,DPL
LCALL WD_EERAM
MOV DPTR,#STATION_FRE
MOVX A,@DPTR
MOV R1,#W_DWord
MOV @R1,A
INC R1
INC DPTR
MOVX A,@DPTR
MOV @R1,A
lcall RADIO_VMOD;显示RADIO截面
LCALL WriteSTR
ret
CLR_FLASH:
CLR DISPD_TEMP
CLR DISPB_TEMP
RET
SEARCH_V:
PUSH 07H
PUSH 06H
PUSH DPH
PUSH DPL
LCALL CLR_SREEN
MOV DPTR,#W_DWord_BAK
MOVX A,@DPTR
MOV 07H,A
INC DPTR
MOVX A,@DPTR
MOV 06H,A
LCALL FM_CODE
JNB SEACH_BEGIN,JERT2XY
MOV A,STATION_RV
LJMP JERT3XY
JERT2XY:
MOV DPTR,#STAT_COUNT
MOVX A,@DPTR
JERT3XY:
MOV B,#6
DIV AB
INC A
MOV R1,B
CJNE A,#01H,TTRE_1
MOV A,#19
TTRE_1:
MOV CHAR_ADR,A;字符代码 3
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
JNB SEACH_BEGIN,JERTXY
LCALL FIVE_ADC
LJMP JERTY
JERTXY:
MOV R0,#3AH
MOV CHAR_ADR,@R0;字符代码 M
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
JERTY:
lcall dv_setb
SETB EA
POP DPL
POP DPH
POP 06H
POP 07H
RET
JUDG_SENDSD:
PUSH DPL
PUSH DPH
LCALL SAV_DATA_STA;写入的值写缓存
MOV R1,#R_DWord
MOV R0,#W_DWord
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
MOV @R0,A
MOV R4,#01H
YUI_2IOP:
MOV R1,#W_DWord
MOV A,@R1
ANL A,#3FH
MOV @R1,A
INC R1
MOV A,@R1
ADD A,#1;1
MOV @R1,A
DEC R1
MOV A,@R1
ADDC A,#00
MOV @R1,A
LCALL SETB_SEARCH;设置为搜索状态
SETB ACC.7
LCALL JUDG_OPLH
LCALL CLR_WDT
CJNE A,02H,YUI_S4IOP
INC R1
MOV A,@R1
CJNE A,03H,YUI_S4IOP
INC R4
LJMP YUI_2IOP
YUI_S4IOP:
LCALL CLR_WDT
CJNE R4,#03H,YUI_S5IOP
YUI_S5IOP:
LCALL SET_SCVB
POP DPH
POP DPL
RET
JUDG_OPLH:
MOV @R1,A
LCALL WriteSTR;写入电台
LCALL DEALZ_50
LCALL READSTR
MOV R1,#R_DWord
MOV A,@R1
ANL A,#3FH
MOV R2,A
INC R1
MOV 03H,@R1
MOV R1,#W_DWord
MOV A,@R1
ANL A,#3FH
RET
SETB_SEARCH:
MOV R1,#W_DWord
MOV A,@R1
ORL A,#0C0H
MOV @R1,A
INC R1
INC R1
MOV A,@R1
ret
SAV_DATA_STA:;保存当前写缓冲
MOV R0,#W_DWord
MOV A,@R0
ANL A,#3FH
MOV @R0,A
MOV DPTR,#W_DWord_BAK
MOV R1,#05
ATA_ST:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,ATA_ST
MOV DPTR,#W_DWord_BAK+5;保存搜索值
MOV R0,#R_DWord
MOV A,@R0
ANL A,#3FH
MOVX @DPTR,A
INC R0
INC DPTR
MOV A,@R0
MOVX @DPTR,A
RET
SET_SCVB:;保存
JC V_WEXIT
MOV DPTR,#W_DWord_BAK+5
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#W_DWord_BAK+1
MOVX @DPTR,A
DEC DPL
MOV A,R1
MOVX @DPTR,A
LCALL GET_SETBYTE
MOV A,#0AAH
LJMP EXIT_CVB
V_WEXIT:
LCALL GET_SETBYTE
MOV A,#0BBH
EXIT_CVB:
RET
GET_SETBYTE:;恢复写缓冲
MOV R0,#W_DWord
MOV DPTR,#W_DWord_BAK
MOV R1,#05
DATA_ST:
MOVX A,@DPTR
MOV R0,A
INC R0
INC DPTR
DJNZ R1,DATA_ST
RET
ST_MONO:
PUSH 00H
JNB P_AF_MO,SDFG_E
CLR P_AF_MO
LCALL PROTECT_DISP;保存显示
LCALL CLR_SREEN
MOV DPTR,#VOLMODE_SAV;
MOVX A,@DPTR
INC A
CJNE A,#04H,SDFG_1
SDFG_1:
JC SDFG_F1
CLR A
SDFG_F1:
MOVX @DPTR,A
MOV R1,A
MOV R0,DPL
LCALL WD_EERAM;存储播放模式
SETB EA
CJNE R1,#00H,SDFG_2
LCALL STRERO_DSP;立体声
MOV R1,#W_DWord+2
MOV A,@R1
ANL A,#0F1H
LJMP SDFG_5
SDFG_2:
CJNE R1,#01H,SDFG_3
LCALL MONO_ON
MOV R1,#W_DWord+2
MOV A,@R1
ANL A,#0F1H
ORL A,#08H
LJMP SDFG_5
SDFG_3:
CJNE R1,#02H,SDFG_4
LCALL MONO_RIGHT
MOV R1,#W_DWord+2
MOV A,@R1
ANL A,#0F1H
ORL A,#02H
LJMP SDFG_5
SDFG_4:
CJNE R1,#03H,SDFG_E
LCALL MONO_LEFT
MOV R1,#W_DWord+2
MOV A,@R1
ANL A,#0F1H
ORL A,#04H
SDFG_5:
MOV @R1,A
MOV DPTR,#DAT_REDIO+2;收音机参数存储地址
MOVX @DPTR,A
MOV R0,DPL
LCALL WD_EERAM;存储播放通道模式
LCALL DISP_LCD
LCALL WriteSTR;写入电台
LCALL DELAY_COVERYER
SDFG_E:
POP 00H
RET
MONO_H:
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#18;字符代码 N
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#0;字符代码 O
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
RET
MONO_ON:
LCALL MONO_H
MOV CHAR_ADR,#0;字符代码 E
MOV DISP_COLUM,#7H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#18;字符代码 E
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
RET
MONO_LEFT:
LCALL MONO_H
MOV CHAR_ADR,#16;字符代码 E
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
RET
MONO_RIGHT:
LCALL MONO_H
MOV CHAR_ADR,#21;字符代码 E
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
RET
STRERO_DSP:
MOV CHAR_ADR,#22;字符代码 S
MOV DISP_COLUM,#1H;字符列
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
SELECT_CTR:
PUSH 00H
PUSH 01H
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
POP 01H
POP 00H
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,#DEALY_RADIO:
PUSH 00H
MOV R0,#10
TT_LAY:
DJNZ R0,TT_LAY
MOV R0,#10
DJNZ DELAY_COUNT,TT_LAY
POP 00H
RET
SETD_CTRV:
PUSH 00H
PUSH 01H
CLR EA
MOV R0,#vol_ctr
MOV R1,#09H
CLR ERROR_SF
LCALL start_conditions
NEXT_SUBB2:
JB ERROR_SF,NEXT_SUBBE
MOV ii_data,@R0
INC R0
LCALL send_ii_dat
DJNZ R1,NEXT_SUBB2
NEXT_SUBBE:
LCALL stop_conditions
CLR ERROR_SF
SETB EA
POP 01H
POP 00H
RET
DEALY_xADIO:
PUSH 00H
MOV R0,#10
TT_LAY:
DJNZ R0,TT_LAY
MOV R0,#10
DJNZ DELAY_COUNT,TT_LAY
POP 00H
RET
start_conditions:;起始条件
MOV DELAY_COUNT,#1
LCALL DEALY_xADIO
SETB SDA_AMPLIFY;
MOV DELAY_COUNT,#5
LCALL DEALY_xADIO
SETB SCLK_AMPLIFY;
MOV DELAY_COUNT,#9
LCALL DEALY_xADIO
CLR SDA_AMPLIFY
MOV DELAY_COUNT,#9
LCALL DEALY_xADIO
CLR SCLK_AMPLIFY
RET
stop_conditions:;停止条件
CLR SDA_AMPLIFY;
MOV DELAY_COUNT,#9
LCALL DEALY_xADIO
SETB SCLK_AMPLIFY;
MOV DELAY_COUNT,#9
LCALL DEALY_xADIO
SETB SDA_AMPLIFY
MOV DELAY_COUNT,#9
LCALL DEALY_xADIO
RET
ack_conditions:;应答
SETB SDA_AMPLIFY;
MOV DELAY_COUNT,#2
LCALL DEALY_xADIO
SETB SCLK_AMPLIFY;
MOV DELAY_COUNT,#0FFH
SDDSD:
NOP
JB SDA_AMPLIFY,SDDSD2
LJMP SDDSD3
SDDSD2:
NOP
DJNZ DELAY_COUNT,SDDSD
SETB ERROR_SF
SDDSD3:
CLR SCLK_AMPLIFY
RET
send_ii_dat:
PUSH 00H
PUSH 01H
PUSH 02H
MOV R2,ii_data
MOV R0,#08H
Si_dat:
MOV A,R2
RLC A
MOV R2,A
MOV SDA_AMPLIFY,C
MOV DELAY_COUNT,#10
LCALL DEALY_xADIO
SETB SCLK_AMPLIFY;
MOV DELAY_COUNT,#10
LCALL DEALY_xADIO
CLR SCLK_AMPLIFY;
DJNZ R0,Si_dat
LCALL ack_conditions
POP 02H
POP 01H
POP 00H
RET
DEALY_50:
PUSH 00H
MOV R0,#5
ER_5M:
LCALL DELAY_5MS
MOV SOUND_SC,#150
DJNZ R0,ER_5M
POP 00H
RET
DEALZ_50:
PUSH 00H
MOV R0,#5
ERZ_5M:
LCALL DELAY_5MS
MOV SOUND_SC,#150
DJNZ R0,ERZ_5M
POP 00H
RET
DELAY_5MS:
PUSH 00H
MOV R0,#250
TTYUI:
LCALL CLR_WDT
MOV DELAY_COUNT,#200
LCALL DEALY_RADIO
DJNZ R0,TTYUI
POP 00H
RET
DELAY_5TH:
MOV DELAY_COUNT,#DL5US
LCALL DEALY_RADIO
RET
DELAY_9TH:
MOV DELAY_COUNT,#DL9US
LCALL DEALY_RADIO
RET
DELAY_X:
PUSH 00H
DELAY_X1:
DJNZ R0,DELAY_X1
POP 00H
RET
DEALY_RADIO:
NOP
NOP
DJNZ DELAY_COUNT,DEALY_RADIO
RET
;----------------------------------
mp3_disp:
MOV CHAR_ADR,#31;字符代码 F
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
ret
mp3_rdm:
MOV CHAR_ADR,#28;字符代码 F
MOV DISP_COLUM,#5H;字符列
LCALL SET_ADRESS
ret
mp3_rpt:
MOV CHAR_ADR,#30;字符代码 F
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
ret
mp3_int:
MOV CHAR_ADR,#27;字符代码 F
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
ret
radio_disp:;@o
MOV CHAR_ADR,#37;字符代码 F
MOV DISP_COLUM,#9H;字符列
LCALL SET_ADRESS
ret
disp_rock:
MOV R0,#COMM_L3+3
MOV A,@R0
CLR ACC.4
JNB sign_ROCK,NEXT_7
SETB ACC.4
NEXT_7:
MOV @R0,A
;MOV CHAR_ADR,#39;字符代码 F
;MOV DISP_COLUM,#9H;字符列
;LCALL SET_ADRESS
ret
disp_pop:
MOV R0,#COMM_L2+3
MOV A,@R0
CLR ACC.3
JNB sign_POP,NEXT_6
SETB ACC.3
NEXT_6:
MOV @R0,A
;MOV CHAR_ADR,#35;字符代码 F
;MOV DISP_COLUM,#9H;字符列
;LCALL SET_ADRESS
ret
disp_class:
MOV R0,#COMM_L1+2
MOV A,@R0
CLR ACC.0
JNB sign_CLASS,NEXT_5
SETB ACC.0
NEXT_5:
MOV @R0,A
;MOV CHAR_ADR,#40;字符代码 F
;MOV DISP_COLUM,#0AH;字符列
;LCALL SET_ADRESS
ret
disp_flat:
MOV R0,#COMM_L1+3
MOV A,@R0
CLR ACC.4
JNB sign_FLAT,NEXT_4
SETB ACC.4
NEXT_4:
MOV @R0,A
;MOV CHAR_ADR,#34;字符代码 F
;MOV DISP_COLUM,#9H;字符列
;LCALL SET_ADRESS
ret
disp_eq:
MOV R0,#COMM_L1+3
MOV A,@R0
CLR ACC.3
JNB AREAO_ON,NEXT_8
SETB ACC.3
NEXT_8:
MOV @R0,A
;MOV CHAR_ADR,#33;字符代码 F
;MOV DISP_COLUM,#9H;字符列
;LCALL SET_ADRESS
ret
disp_ok:
MOV R0,#COMM_L2+3
MOV A,@R0
CLR ACC.4
JNB AREAO_ON,NEXT_8A
SETB ACC.4
NEXT_8A:
MOV @R0,A
;MOV CHAR_ADR,#36;字符代码 F
;MOV DISP_COLUM,#9H;字符列
;LCALL SET_ADRESS
ret
disp_mute:
MOV R0,#COMM_L1+9
MOV A,@R0
CLR ACC.0
JNB MUTE_KNOCK,NEXT_9SIGER
SETB ACC.0
NEXT_9SIGER:
MOV @R0,A
;MOV CHAR_ADR,#26;字符代码 F
;MOV DISP_COLUM,#3H;字符列
;LCALL SET_ADRESS
ret
disp_stop:
MOV CHAR_ADR,#32;字符代码 F
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
ret
DISP_M_OPTION:
MOV A,r2
CJNE A,#00H,M_1OPTION
LJMP M_EOPTION
M_1OPTION:
LCALL disp_ok
LCALL disp_eq
MOV A,r2
CJNE A,#01H,M_2OPTION
LCALL disp_pop
LJMP M_EOPTION
M_2OPTION:
CJNE A,#02H,M_3OPTION
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -