📄 mp3_ctroler.asm.bak
字号:
EXIT_BOTTOM:
RET
sav_zhip:
MOV R0,#W_DWord
MOV 07H,@R0
INC R0
MOV 06H,@R0
ret
COVER_DATA:
MOV R1,#W_DWord
MOV A,@R1
ANL A,#3FH
MOV @R1,A
RET
M_KEY:
JBC M_KEY_BAL,M_1KEY
LJMP EXIT_Y
M_1KEY:
JNB MP3_MODE,EXIT_1Y
LCALL MP3_MEKEY
lcall MP3_SMOD
LJMP EXIT_Y
EXIT_1Y:
LCALL DEAL_SHORTMEY
EXIT_Y:
RET
JUDG_MEKEY:
LCALL CLR_CARRY_BIT
MOV R1,MKEY_KJU
MOV DPTR,#SAV_BAND
MOVX A,@DPTR
DEC A
MOV B,#06H
MUL AB
ADD A,R1
MOV DPTR,#STAT_COUNT
MOVX @DPTR,A
MOV R1,A
MOV R0,DPL
; LCALL WD_EERAM
MOV A,R1
MOV B,#02
MUL AB
NEXT_ME:
RET
DEAL_SHORTMEY:
LCALL JUDG_MEKEY
MOV DPTR,#STATION_FRE
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
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
SAV_MKEY:
JB SAV_MKEY_SIGN,SDD_1EXITF
LJMP SDD_EXITF
SDD_1EXITF:
LCALL JUDG_MEKEY
MOV DPTR,#STATION_FRE
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV R1,#W_DWord
MOV A,@R1
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
INC R1
INC DPTR
MOV A,@R1
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
lcall RADIO_VMOD;显示RADIO截面
LCALL WriteSTR
CLR SAV_MKEY_SIGN
SDD_EXITF:
RET
MP3_MEKEY:
mov MKEY_KJU_BAK,#0ffh
MOV R1,MKEY_KJU
CJNE R1,#04H,MP3_1MMKEY
MOV R1,#00
LCALL RDEW_PLAY
JBC SEND_ERROR,MP3_4MMKEY
JBC sign_stop,MP3_4MMKEY
setb sign_stop
LJMP MP3_4MMKEY
MP3_1MMKEY:
CJNE R1,#03H,MP3_2MMKEY
MOV R1,#03H
LCALL RDEW_PLAY
JBC SEND_ERROR,MP3_4MMKEY
CLR sign_stop
clr sign_INT
CLR sign_rpt
JBC sign_rdm,MP3_4MMKEY
setb sign_rdm
LJMP MP3_4MMKEY
MP3_2MMKEY:
CJNE R1,#01H,MP3_3MMKEY
MOV R1,#02
LCALL RDEW_PLAY
JBC SEND_ERROR,MP3_4MMKEY
clr sign_INT
CLR sign_stop
CLR sign_rdm
JBC sign_rpt,MP3_4MMKEY
setb sign_rpt
LJMP MP3_4MMKEY
MP3_3MMKEY:
CJNE R1,#02H,MP3_5MMKEY
JB sign_INT,MP3_4MMKEY
MOV R1,#01
LCALL RDEW_PLAY
JBC SEND_ERROR,MP3_4MMKEY
SETB sign_INT
CLR sign_stop
CLR sign_rpt
CLR sign_rdm
SETB S_SCAN
JB MP3_MODE,MP3_4MMKEY
CLR S_SCAN
MP3_4MMKEY:
MP3_5MMKEY:
RET
RDEW_PLAY:
INC R1
MOV A,R1
lcall SEND_COMMAND
RET
BAND_KEY:
JNB P_BAND,EWE_BAND
LCALL CLR_CARRY_BIT
MOV DPTR,#SAV_BAND
MOVX A,@DPTR
INC A
CJNE A,#06H,EWE_1BAND
EWE_1BAND:
JC EWE_2BAND
MOV A,#01H
EWE_2BAND:
MOVX @DPTR,A
MOV R1,A
MOV R0,DPL
; LCALL WD_EERAM
DEC R1
MOV A,R1
MOV B,#06
MUL AB
MOV DPTR,#STAT_COUNT
MOVX @DPTR,A
MOV R1,A
MOV R0,DPL
;LCALL WD_EERAM
MOV A,R1
MOV B,#02
MUL AB
MOV DPTR,#STATION_FRE
ADD A,DPL
MOV DPL,A
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
EWE_BAND:
RET
AUTO_SEACH:
JB SEACH_BEGIN,TYU_1SEARCH
LJMP EXIT_SEARCH
TYU_1SEARCH:
SETB MUTE_CTROL
LCALL CLR_WDT
MOV R1,#W_DWord+1
MOV A,@R1
ADD A,#0CH
MOV @R1,A
MOV R6,A
DEC R1
MOV A,@R1
ANL A,#3FH
ADDC A,#00
MOV @R1,A
MOV R7,A
MOV R0,#W_DWord
EXIJ_FH:
LCALL DIV_4FGH
LCALL JUDG_HALF
CJNE R1,#0AAH,ADD_JHK
LJMP EXIJ_JJ1
ADD_JHK:
CJNE R1,#0ADH,SUBB_JHK
LCALL ADDC_1
LJMP EXIJ_FH
SUBB_JHK:
CJNE R1,#0DAH,DFF3G
LCALL SUBB_1
LJMP EXIJ_FH
EXIJ_JJ1:
LCALL GET_SSERCH
SETB ACC.7
MOV @R1,A
LCALL WriteSTR
LCALL DEALY_50
TRX1:
LCALL READSTR
MOV R0,#R_DWord
MOV A,@R0
JNB ACC.7,TRX1
LJMP DFFG
TYU_2SEARCH:
LJMP TYU_1SEARCH
DFFG:
JB ACC.6,DFF3G
LCALL JUDG_SENDSD;判断是否是台
CJNE A,#0AAH,TYU_1SEARCH
MOV DPTR,#W_DWord_BAK
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
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:
SETB EA
lcall serch_end
CLR SEACH_BEGIN
LCALL CLR_DISPT
CLR SOUND_SB
CLR MUTE_CTROL
EXIT_SEARCH:
RET
TESTERROM:
MOV R0,#00H
MOV DPTR,#0000H
S1QS:
lcall RD_ERAOM
lcall tedr_sbuf
LCALL CLR_WDT
INC R0
INC DPTR
CJNE R0,#00H,S1QS
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:
mov r0,#3ah
mov a,@r0
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
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 DISPB_TEMP
CLR DISPD_TEMP
MOV DISPC_TEMP,#10
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 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 JUDGE_STATIONS
LCALL SET_SCVB
POP DPH
POP DPL
RET
JUDGE_STATIONS:
CJNE R4,#03H,JUDG_ONN1
JUDG_ONN1:
JC ERROR_JUDGE
CJNE R4,#05H,JUDG_ONN2
JUDG_ONN2:
JNC ERROR_JUDGE
CLR C
LJMP EXIT_JUDGES
ERROR_JUDGE:
SETB C
EXIT_JUDGES:
RET
JUDG_OPLH:
MOV @R1,A
LCALL WriteSTR;写入电台
LCALL DEALY_50
GOON_SD:
LCALL READSTR
MOV R1,#R_DWord
MOV A,@R1
JNB ACC.7,GOON_SD
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:;保存当前写缓冲
lcall sav_writer
MOV DPTR,#W_DWord_BAK+5;保存搜索值,读出值
MOV R0,#R_DWord
MOV R1,#W_DWord
MOV A,@R0
ANL A,#3FH
MOVX @DPTR,A
MOV @R1,A
INC R0
INC R1
INC DPTR
MOV A,@R0
MOVX @DPTR,A
MOV @R1,A
RET
sav_writer:
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
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:
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:
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;字符列
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -