⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3_ctroler.asm.bak

📁 lpc935/6下编写车载mp3控制面板源代码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
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 + -