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

📄 mp3_ctroler.asm.bak

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