📄 mp3_ctroler.asm.bak
字号:
JUDG_MUTE:
JNB MUTE_KNOCK,E_JPRESS
CLR MUTE_KNOCK
clr MUTE_CTROL
E_JPRESS:
RET
SELEC_2ADD:
MOV SELCMC_DONE,#150
JNB VOL_SETB,NEXT_1UP
LCALL SETB_VOLEUP
ljmp NEXT_8UP
NEXT_1UP:
JNB BASS_SETB,NEXT_2UP
MOV R2,#1
LCALL add_BASS
MOV R0,#vol_ctr+7
MOV DPTR,#SOUND_OP+7
LCALL SETB_AUND
LCALL HEAD_BAS
ljmp NEXT_8UP
NEXT_2UP:
JNB TRE_SETB,NEXT_3UP
MOV R2,#1
LCALL add_TREBLE
MOV R0,#vol_ctr+8
MOV DPTR,#SOUND_OP+8
LCALL SETB_AUND
LCALL HEAD_TRE
ljmp NEXT_8UP
NEXT_3UP:
JNB SETB_BALLR,NEXT_4UP
MOV R2,#1
LCALL add_BALLR
MOV R0,#vol_ctr+2
MOV DPTR,#SOUND_OP+2
LCALL SETB_AUND
LCALL HEAD_BALLR
ljmp NEXT_8UP
NEXT_4UP:
JNB SETB_BALRR,NEXT_5UP
MOV R2,#1
LCALL add_BALRR
MOV R0,#vol_ctr+3
MOV DPTR,#SOUND_OP+3
LCALL HEAD_BALRR
ljmp NEXT_8UP
NEXT_5UP:
JNB SETB_FADLF,NEXT_6UP
MOV R2,#1
LCALL add_FADLF
MOV R0,#vol_ctr+4
MOV DPTR,#SOUND_OP+4
LCALL SETB_AUND
LCALL HEAD_FADLF
ljmp NEXT_8UP
NEXT_6UP:
JNB SETB_FADRF,NEXT_7UP
MOV R2,#1
LCALL add_FADRF
MOV R0,#vol_ctr+5
MOV DPTR,#SOUND_OP+5
LCALL SETB_AUND
LCALL HEAD_FADRF
ljmp NEXT_8UP
NEXT_7UP:
JNB MUSIC_SET_AREA,NEXT_EUP
LCALL ADD_MUSIC_OP
NEXT_8UP:
LCALL SELECT_DISH
NEXT_EUP:
RET
ADD_MUSIC_OP:
LCALL CLR_ABIT
INC MUSIC_OPTC
MOV A,MUSIC_OPTC
setb AREAO_ON
CJNE A,#5,SHIFT_A1BIT
MOV MUSIC_OPTC,#00
mov r2,MUSIC_OPTC
clr AREAO_ON
LCALL disp_off;音场关闭设置
LJMP SHIFT_A5BIT
SHIFT_A1BIT:
mov r2,MUSIC_OPTC
mov A,MUSIC_OPTC
CJNE A,#1,SHIFT_A2BIT
SETB sign_POP
LCALL pop_m
LJMP SHIFT_A5BIT
SHIFT_A2BIT:
CJNE A,#2,SHIFT_A3BIT
SETB sign_FLAT
LCALL flat_m
LJMP SHIFT_A5BIT
SHIFT_A3BIT:
CJNE A,#3,SHIFT_A4BIT
SETB sign_CLASS
LCALL class_m
LJMP SHIFT_A5BIT
SHIFT_A4BIT:
CJNE A,#4,SHIFT_A5BIT
SETB sign_ROCK
LCALL rock_m
LJMP SHIFT_A5BIT
SHIFT_A5BIT:
RET
SUB_MUSIC_OP:
LCALL CLR_ABIT
setb AREAO_ON
MOV A,MUSIC_OPTC
CJNE A,#0,SHIFT_S1BIT
MOV MUSIC_OPTC,#04
mov r2,MUSIC_OPTC
SETB sign_ROCK
LCALL rock_m
LJMP SHIFT_S5BIT
SHIFT_S1BIT:
DEC MUSIC_OPTC
MOV A,MUSIC_OPTC
mov r2,MUSIC_OPTC
CJNE A,#1,SHIFT_S2BIT
SETB sign_POP
LCALL pop_m
LJMP SHIFT_S5BIT
SHIFT_S2BIT:
CJNE A,#2,SHIFT_S3BIT
SETB sign_FLAT
LCALL flat_m
LJMP SHIFT_S5BIT
SHIFT_S3BIT:
CJNE A,#3,SHIFT_S4BIT
SETB sign_CLASS
LCALL class_m
LJMP SHIFT_S5BIT
SHIFT_S4BIT:
CJNE A,#0,SHIFT_S6BIT
clr AREAO_ON
LCALL disp_off;音场关闭设置
LJMP SHIFT_S5BIT
SHIFT_S5BIT:
SHIFT_S6BIT:
RET
add_FADRF:;TREBLE加
MOV R0,#vol_ctr+5
MOV A,@R0
CJNE A,#0A0H,FADRF_SUBB1
LJMP FADRF_SUBBE
FADRF_SUBB1:
lcall subb_r2
FADRF_SUBBE:
RET
SUBB_FADRF:;RF减
MOV R0,#vol_ctr+5
MOV A,@R0
CJNE A,#0BFH,FADRF_ADD1
LJMP FADRF_ADDE
FADRF_ADD1:
lcall add_r2
FADRF_ADDE:
RET
FAD_SETBY:
LCALL CLR_SREEN
MOV CHAR_ADR,#15;字符代码 F
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#10;字符代码 A
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#13;字符代码 D
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
RET
HEAD_FADLF:
LCALL FAD_SETBY
MOV CHAR_ADR,#16;字符代码 L
MOV DISP_COLUM,#8H;字符列
LCALL SET_ADRESS
MOV R0,#vol_ctr+4;LF
lcall sed_sub
RET
SETB_AUND:
MOV A,@R0
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
RET
HIST_COVERY:;定时刷新
PUSH 00H
PUSH 01H
PUSH 02H
LCALL DISP_DEALS
LCALL DISP_R_EARA
LCALL DISP_LCD
LCALL CLR_DISPT
POP 02H
POP 01h
POP 00H
RET
RESET_MDELSU:
CLR JUDG_MDELAYB
CLR JUDG_MDELAYD
MOV JUDG_MDELAYC,#30
RET
POWER_RESET:
SETB MUTE_CTROL
CLR EA
MOV R1,#10H
LCALL clr_bitty
SETB POW_RESET
LCALL ori_VOLUME;调入设置数据,放大器
LCALL RADIO_DEAL;收音机参数读入内存
;LCALL TEST_RDRAM
LCALL OPEN_FACE;显示截面"WELLCOME"
GN_1EXIT:
LCALL RESET_MDELSU
SETB JUDG_MDELAYB
JUDG_SYC:
LCALL CLR_WDT
JBC JUDG_MDELAYD,GN_1EXIT
JB MP3_1STATE,JUDG_SYC
LCALL RESET_MDELSU
SETB JUDG_MDELAYB
JUDG_1SYC:
LCALL CLR_WDT
JBC JUDG_MDELAYD,GN_EXIT
JNB MP3_1STATE,JUDG_1SYC
GN_EXIT:
LCALL RESET_MDELSU
lcall DELAY_5MS
MOV A,RSTSRC
JNB ACC.2,GOIN_TDF
CLR ACC.2
MOV RSTSRC,A
LCALL DELY_5Z
GOIN_TDF:
MOV DPTR,#STATE_HAND
MOVX A,@DPTR
CJNE A,#0AAH,TYUI_RIGHT
MOV DPTR,#PLAY_MODE
MOVX A,@DPTR
CJNE A,#'R',TYUI_RIGHT
SETB HAND_RESS
GOIN_4TDF:
LCALL DGNE_RADIO;收音模式
clr MUTE_CTROL
ljmp N_ETASK
TYUI_RIGHT:
LCALL RESET_MDELSU
SETB JUDG_MDELAYB
JUDG_2SYC:
LCALL CLR_WDT
JBC JUDG_MDELAYD,GOIN_4TDF
JB MP3_STATE,JUDG_2SYC
lcall DGNE_MP3
cjne a,#0aah,GOIN_4TDF
N_ETASK:
MOV A,#0AAH
LCALL POWER_SETBD
clr MUTE_CTROL
RET
RECI_MP3DAT:
JBC COM_3BIT,CI_1MP3DAT
LJMP CI_EMP3DAT
CI_1MP3DAT:
MOV R1,#4
MOV R0,#MP3_RDATA+4
MOV DPTR,#MP3_RV_DAT
CI_1MP3DAT0:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,CI_1MP3DAT0
MOV R0,#MP3_RDATA+3
cjne @r0,#0feh,I_MP3
CLR sign_INT
CLR S_SCAN;
I_MP3:
JB HAND_RESS,CI_EMP3DAT
LCALL MP3_POWER
LJMP CI_EMP3DAT
CI_2MP3DAT:
CI_EMP3DAT:
RET
DISP_CHAR_MP3:
JNB sign_stop,NEXT_1SIGER
LCALL disp_stop
NEXT_1SIGER:
JNB sign_rpt,NEXT_2SIGER
LCALL mp3_rpt
ljmp NEXT_3SIGER0
NEXT_2SIGER:
JNB sign_rdm,NEXT_3SIGER
LCALL mp3_rdm
ljmp NEXT_3SIGER0
NEXT_3SIGER:
JNB sign_INT,NEXT_4SIGER
LCALL mp3_int
NEXT_3SIGER0:
;lcall DISP_LCD
NEXT_4SIGER:
RET
SAV_MUSIC_OP:
PUSH DPL
PUSH DPH
MOV A,MUSIC_OPTC
MOV DPTR,#MUSIC_OPTION
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
LCALL SETB_OP_MUSIC
LCALL SETD_CTRV;设置音量,包括通道
POP DPH
POP DPL
RET
DISP_R_EARA:
LCALL disp_eq
LCALL disp_ok
LCALL disp_rock
LCALL disp_pop
LCALL disp_class
LCALL disp_flat
LCALL disp_mute
RET
DGNE_RADIO:
lcall RADIO_VMOD;显示RADIO截面
LCALL RADIO_POWER
RET
RADIO_POWER:
LCALL SETB_VOLUME
LCALL CHAN_1;选择通道二
LCALL SETD_CTRV
MOV R1,#W_DWord
MOV A,@R1
CLR ACC.7
MOV @R1,A
LCALL WriteSTR;写入电台
LCALL DELAY_5MS
LCALL CLR_DISPT
clr MUTE_CTROL
P_POWER2:
RET
R_SEND_STAR:;发送起始条件
SETB I2cSCL
LCALL DELAY_5TH
CLR I2cSDA
LCALL DELAY_5TH
CLR I2cSCL
LCALL DELAY_5TH
RET
R_SEND_STOP:;发送停止条件
CLR I2cSDA
LCALL DELAY_5TH
SETB I2cSCL
SETB I2cSDA
RET
COM_SEND:;发送8位数据
PUSH 03H
PUSH 00H
JB RADIO_ERR,EXIT_TSTR
MOV R3,SEND_DATA
MOV R0,#08H
SD1_8BIT:
MOV A,R3
RLC A
MOV R3,A
MOV I2cSDA,C
LCALL DELAY_5TH
SETB I2cSCL
LCALL DELAY_5TH
CLR I2cSCL
DJNZ R0,SD1_8BIT
LCALL DELAY_5TH
SETB I2cSDA
LCALL DELAY_5TH
SETB I2cSCL
MOV DELAY_COUNT,#0FFH
STRYB:
JB I2cSDA,STRYB2;应答
LJMP STRYB3
STRYB2:
lcall clr_wdt_nea
DJNZ DELAY_COUNT,STRYB
SETB RADIO_ERR
STRYB3:
CLR I2cSCL
LCALL DELAY_5TH
SETB I2cSDA
EXIT_TSTR:
lcall clr_wdt_nea
POP 00H
POP 03H
RET
CMD_GetByte:;接收8位数据
PUSH 00H
MOV READ_DATA,#0
MOV R0,#08H
R1_8BIT:
LCALL DELAY_5TH
SETB I2cSCL
LCALL DELAY_5TH
MOV C,I2cSDA
MOV A,READ_DATA
RLC A
MOV READ_DATA,A
CLR I2cSCL
DJNZ R0,R1_8BIT
lcall clr_wdt_nea
POP 00H
RET
WriteSTR:;写入字符串
PUSH 00H
PUSH 01H
CLR EA
LCALL R_SEND_STAR
MOV SEND_DATA,#0C0H
LCALL COM_SEND
MOV R0,#05
MOV R1,#W_DWord
SDTY_A:
MOV SEND_DATA,@R1
INC R1
LCALL COM_SEND
DJNZ R0,SDTY_A
LCALL R_SEND_STOP
CLR RADIO_ERR
SETB EA
POP 01H
POP 00H
RET
READSTR:
PUSH 00H
PUSH 01H
CLR EA
JB RADIO_ERR,EXIT_RSTR
LCALL R_SEND_STAR
MOV SEND_DATA,#0C1H
LCALL COM_SEND
MOV R1,#R_DWord
MOV R0,#4
R_DSTR:
LCALL CMD_GetByte
MOV @R1,READ_DATA
INC R1
CLR I2cSDA
LCALL DELAY_5TH
SETB I2cSCL
LCALL DELAY_5TH
CLR I2cSCL
LCALL DELAY_5TH
SETB I2cSDA
LCALL DELAY_5TH
DJNZ R0,R_DSTR
LCALL CMD_GetByte
MOV @R1,READ_DATA
SETB I2cSDA
LCALL DELAY_5TH
SETB I2cSCL
LCALL DELAY_5TH
CLR I2cSCL
LCALL DELAY_5TH
SETB I2cSDA
LCALL R_SEND_STOP
EXIT_RSTR:
CLR RADIO_ERR
SETB EA
POP 01H
POP 00H
RET
SUBB_volume:;音量加
PUSH 00H
PUSH 01H
PUSH 02H
MOV R0,#vol_ctr+1
MOV A,@R0
CJNE A,#3FH,NEXT_ADD1
LJMP VOL_ADDE
NEXT_ADD1:
lcall add_r2
VOL_ADDE:
POP 02H
POP 01H
POP 00H
RET
add_volume:;音量减
PUSH 00H
PUSH 01H
PUSH 02H
MOV R0,#vol_ctr+1
MOV A,@R0
CJNE A,#00H,NEXT_SUBB1
LJMP VOL_SUBBE
NEXT_SUBB1:
lcall subb_r2
VOL_SUBBE:
POP 02H
POP 01H
POP 00H
RET
add_r2:
ADD A,R2
MOV @R0,A
LCALL SETD_CTRV
ret
subb_r2:
CLR C
SUBB A,R2
MOV @R0,A
LCALL SETD_CTRV
ret
CHAN_1:;通道一,收音机
PUSH 00H
MOV A,#48H
MOV R0,#vol_ctr+6
MOV @R0,A
MOV DPTR,#PLAY_MODE
MOV A,#'R'
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
CLR MP3_MODE
POP 00H
RET
CHAN_2:;通道二,MP3
PUSH 00H
MOV A,#49H
MOV R0,#vol_ctr+6
MOV @R0,A
MOV DPTR,#PLAY_MODE
MOV A,#'M'
MOVX @DPTR,A
MOV R0,DPL
; LCALL WD_EERAM
SETB MP3_MODE
POP 00H
RET
SETB_VOLUME:
PUSH 00H
PUSH 01H
MOV DPTR,#SOUND_OP
MOV R0,#vol_ctr
MOV R1,#09H
TREU2:
MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
DJNZ R1,TREU2
POP 01H
POP 00H
RET
RADIO_VMOD:;
PUSH 06H
PUSH 07H
LCALL HEAD_FM
lcall dv_setb
;lcall dowhile
POP 07H
POP 06H
RET
dv_setb:
MOV R0,#36H
CJNE @R0,#00H,XERET_RV
LJMP XERET_1RV
XERET_RV:
MOV CHAR_ADR,@R0;字符代码 1
MOV DISP_COLUM,#4H;字符列
LCALL SET_ADRESS
XERET_1RV:
INC R0
MOV CHAR_ADR,@R0;字符代码 0
MOV DISP_COLUM,#5H;字符列
LCALL SET_ADRESS
INC R0
MOV CHAR_ADR,@R0;字符代码 4
MOV DISP_COLUM,#6H;字符列
LCALL SET_ADRESS
INC R0
MOV CHAR_ADR,@R0;字符代码
MOV DISP_COLUM,#7H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#38;字符代码 .
MOV DISP_COLUM,#9H;字符列
LCALL SET_ADRESS
INC R1
MOV DISP_TEMPS,R1
MOV CHAR_ADR,R1;字符代码 .
MOV DISP_COLUM,#0AH;字符列
LCALL SETB_SM_NUB
MOV CHAR_ADR,#7;字符代码 .
MOV DISP_COLUM,#0BH;字符列
LCALL SETB_LLT
JNB MUTE_KNOCK,MUTE1_2
MOV R0,#COMM_L1+9
MOV A,@R0
SETB ACC.0
MOV @R0,A
MUTE1_2:
lcall DISP_LCD
ret
FM_CODE:
MOV CHAR_ADR,#15;字符代码 F
MOV DISP_COLUM,#1H;字符列
LCALL SET_ADRESS
MOV CHAR_ADR,#17;字符代码 M
MOV DISP_COLUM,#2H;字符列
LCALL SET_ADRESS
LCALL DIV_4FGH
RET
HEAD_FM:
LCALL CLR_SREEN
LCALL DISP_R_EARA;特殊字符标号处理
MOV R1,#W_DWord
MOV A,@R1
ANL A,#3FH
MOV 07H,A
INC R1
MOV 06H,@R1
LCALL FM_CODE
LCALL FIVE_ADC
MOV DPTR,#STAT_COUNT
MOVX A,@DPTR
MOV B,#6
DIV AB
INC A
MOV R1,B
CJNE A,#01H,TTRE
MOV A,#19
TTRE:
MOV CHAR_ADR,A;字符代码 3
MOV DISP_COLUM,#3H;字符列
LCALL SET_ADRESS
MOV DPTR,#MUSIC_OPTION;音域模式
MOVX A,@DPTR
mov r2,a
mov MUSIC_OPTC,a
lcall ret_sign_p
LCALL DISP_M_OPTION
lcall radio_disp
RET
DISP_LCD:
LCALL ORI_LCD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -