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

📄 mp3_ctroler.asm.bak

📁 lpc935/6下编写车载mp3控制面板源代码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
		MOV   DISP_ADRESS,#COMM_L1;显示COM1
  		lcall send_display
  		MOV   DISP_ADRESS,#COMM_L2;显示COM2
  		lcall send_display
  		MOV   DISP_ADRESS,#COMM_L3;显示COM3
  		lcall send_display
  		RET	
    		
DGNE_MP3:
		LCALL    RESET_MDELSU
		SETB     JUDG_MDELAYB
	JUDG_3SYC:
		LCALL   CLR_WDT
		JBC     JUDG_MDELAYD,GOIN_2TDF
		JB      MP3_1STATE,JUDG_3SYC
		LCALL   RESET_MDELSU
		MOV     A,#0DDH
		lcall   SEND_COMMAND
		JBC     SEND_ERROR,GOIN_2TDF
		lcall   DELY_5Z
		lcall   reci_datmp3
		mov     a,#0aah
		ljmp    GOIN_3TDF
	GOIN_2TDF:
		mov     a,#0bbh
	GOIN_3TDF:
		RET

tedr_sbuf:
	
		clr  ti
		mov  sbuf,a
		jnb  ti,$
		clr  ti
		ret
SEND_COMMAND:
		PUSH	03H
		CLR  SEND_ERROR
		LCALL MAK_PAGE
		MOV   R3,#04H
	GOIN_B4TDF:
		LCALL    RESET_MDELSU
		DJNZ R3,GOON_SDF
		SETB     SEND_ERROR
		LJMP     GOIN_C4TDF 
	GOON_SDF:
		MOV      R0,#MP3_SDATA
		MOV      R1,#09H
		CLR EA
		CLR  REN
	SEND_CONTINUE:
		MOV  A,@R0
		CLR  TI
		MOV  SBUF,A
		jnb  ti,$
		INC  R0
		DJNZ R1,SEND_CONTINUE
		CLR  TI
		SETB REN
		SETB EA
		LCALL    RESET_MDELSU
		MOV      JUDG_MDELAYC,#80
		SETB     JUDG_MDELAYB
	JUDG_4SYC:
		LCALL    CLR_WDT
		JBC      JUDG_MDELAYD,GOIN_A4TDF
		JB       MP3_1STATE,JUDG_4SYC
		LCALL    RESET_MDELSU
		MOV      JUDG_MDELAYC,#80
		SETB     JUDG_MDELAYB
	JUDG_5SYC:
		LCALL    CLR_WDT
		JBC      JUDG_MDELAYD,GOIN_A4TDF
		JNB      MP3_1STATE,JUDG_5SYC	
		LCALL    RESET_MDELSU
		LJMP     GOIN_C4TDF
	GOIN_A4TDF:	
		LJMP     GOIN_B4TDF
	GOIN_C4TDF:
		POP	03H
		RET		
		
		

reci_datmp3:
		MOV     CONNECTC,#0
		SETB    CONNECT_1BITS	
	TTY_2OP:
		LCALL   CLR_WDT
		JB      COM_3BIT,TTY_3OP
		JB      CONNECT_1BITS,TTY_2OP
		JBC     HAND_RESS,TTY_41P
		SETB    MP3_NOPATL
		MOV     SUSB_LOWC,#40
		lcall   DGNE_RADIO
		LJMP    TTY_4OP
	TTY_3OP:
		CLR     CONNECT_1BITS
		LCALL   RECI_MP3DAT
		JBC     HAND_RESS,TTY_5OP
		LJMP    TTY_4OP
	TTY_5OP:
		MOV      A,#0aH
		lcall    SEND_COMMAND
		JBC      SEND_ERROR,TTY_4OP
	TTY_41P:
		SETB     HAND_PRESS
		LCALL    RSET_COM
	TTY_4OP:
		clr      MUTE_CTROL	
		ret
MP3_POWER:
		LCALL  MP3_SMOD;显示MP3界面
		LCALL  SETB_VOLUME
		LCALL  CHAN_2;选择通道二
		LCALL  SETD_CTRV
		clr    MUTE_CTROL
	MP3_POWER2:
		RET
REVEAL_D:
		
		LCALL   CLR_SREEN
		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,#0;字符代码 O
		MOV 	DISP_COLUM,#3H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#20;字符代码 n
		MOV 	DISP_COLUM,#4H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#0;字符代码 n
		MOV 	DISP_COLUM,#7H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#18;字符代码 n
		MOV 	DISP_COLUM,#8H;字符列
		LCALL   SET_ADRESS
		lcall  DISP_LCD
	        RET
MP3_SMOD:
		LCALL   CLR_SREEN
		LCALL   DISP_DEALS
		lcall   mp3_disp
		LCALL   DISP_CHAR_MP3
		LCALL   DISP_R_EARA
		MOV     DPTR,#MP3_RV_DAT
		MOVX    A,@DPTR
		MOV     R6,A
		inc     dpl
		MOVX    A,@DPTR
		MOV     R7,A
		MOV     R5,#0
		MOV     R4,#0H
		MOV   	DIV_H,#00H
		MOV   	DIV_M,#00H
		MOV   	DIV_L,#64H
		LCALL   DIVD4
		MOV CHAR_ADR,R7;字符代码  2
		MOV DISP_COLUM,#1H;字符列
		LCALL  SET_ADRESS
		MOV    A,R3
		MOV B,#10
		DIV    AB
		MOV    R3,B
		MOV CHAR_ADR,A;字符代码  2
		MOV DISP_COLUM,#2H;字符列
		LCALL  SET_ADRESS
		
		MOV CHAR_ADR,R3;字符代码   3
		MOV DISP_COLUM,#3H;字符列
		LCALL  SET_ADRESS
		MOV CHAR_ADR,#24;字符代码  -
		MOV DISP_COLUM,#4H;字符列
		LCALL  SET_ADRESS
		
		MOV     DPTR,#MP3_RV_DAT+2
		MOVX    A,@DPTR
		MOV     R6,A
		inc     dpl
		MOVX    A,@DPTR
		ADD    A,#01
		MOV     R7,A
		CLR    A
		ADDC   A,R6
		MOV    R6,A	
		MOV     R5,#0
		MOV     R4,#0H
		MOV   	DIV_H,#00H
		MOV   	DIV_M,#00H
		MOV   	DIV_L,#64H
		LCALL   DIVD4
		
		MOV    CHAR_ADR,R7;字符代码  0
		MOV    DISP_COLUM,#5H;字符列
		LCALL  SET_ADRESS
		MOV    A,R3
		MOV    B,#10
		DIV    AB
		MOV    R3,B
		MOV CHAR_ADR,A;字符代码   4
		MOV DISP_COLUM,#6H;字符列
		LCALL  SET_ADRESS
	
		MOV CHAR_ADR,R3;字符代码   6
		MOV DISP_COLUM,#7H;字符列
		LCALL  SET_ADRESS
		
		MOV     DPTR,#MUSIC_OPTION
		MOVX    A,@DPTR
		mov     MUSIC_OPTC,a
		mov     r2,a
		lcall   ret_sign_p
		LCALL   DISP_M_OPTION
		lcall   DISP_LCD
		RET	
DISP_DEALS:
		
		LCALL  CLR_R
		LCALL  ADC_SETC2
		MOV    A,TEMP_AD2
		MOV    B,#0AH
		DIV    AB
		CJNE   A,#07H,VFGFG
	VFGFG:
		JC     VFGFG1
		MOV    A,#06H
	VFGFG1:
		MOV    CHAR_ADR,A;字符代码   
		MOV    DISP_COLUM,#0AH;字符列
		LCALL  SETB_LLT
		RET	
RADIO_DEAL:
		MOV     DPTR,#DAT_REDIO;收音机参数存储地址
		MOV     R1,#W_DWord
		MOV     R0,#05
	O_DEAL:
		MOVX	A,@DPTR
		MOV  	@R1,A
		INC  	R1
		INC  	DPTR
		DJNZ 	R0,O_DEAL
		MOV     DPTR,#STAT_COUNT
		MOVX    A,@DPTR
		MOV     B,#02
		MUL     AB
		MOV     DPTR,#STATION_FRE;存台地址
		ADD     A,DPL
		MOV     DPL,A
		MOVX    A,@DPTR
		MOV     R1,#W_DWord;写入频率到内存
		SETB    ACC.7
		MOV     @R1,A
		INC     DPTR
		INC     R1
		MOVX    A,@DPTR
		MOV     @R1,A
		LCALL   WriteSTR;写入电台
		RET
OPEN_FACE:
		
		LCALL   CLR_SREEN
		MOV 	CHAR_ADR,#44;字符代码  y
		MOV 	DISP_COLUM,#1H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#43;字符代码 u
		MOV 	DISP_COLUM,#2H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#10;字符代码 a
		MOV 	DISP_COLUM,#3H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#18;字符代码 n
		MOV 	DISP_COLUM,#4H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#12;字符代码 
		MOV 	DISP_COLUM,#5H;字符列
		;LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#22;字符代码 
		MOV 	DISP_COLUM,#6H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#45;字符代码 
		MOV 	DISP_COLUM,#7H;字符列
		LCALL   SET_ADRESS
		MOV 	CHAR_ADR,#19;字符代码 
		MOV 	DISP_COLUM,#8H;字符列
		LCALL   SET_ADRESS
		
		lcall   DISP_LCD
		RET	
				
;--------------------------------------
;放大器
;--------------------------------------
ori_VOLUME:
		MOV     DPTR,#SOUND_OP
		MOV     R0,#vol_ctr;
		MOV     R1,#09H
	TREUp2:
		MOVX    A,@DPTR
		MOV     @R0,A
		INC     DPTR
		INC     R0
		DJNZ    R1,TREUp2
		LCALL   SETB_OP_MUSIC
		ret
		
		;0x88,0x1F,0x0c8,0x0e8,0x88,0x0a8,0x48,0x68,0x78		
SETD_CTRV:
		
		PUSH	05H
		MOV     R5,#02H
		CLR     EA
	P3IUI:	
		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
		DJNZ    R5,P3IUI
		SETB    EA
		POP	05H
		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,#1
	ER_5M:
		LCALL   DELAY_5MS
		MOV     SOUND_SC,#150
		DJNZ    R0,ER_5M
		POP	00H
		RET

DELAY_5MS:
		PUSH	00H
		MOV     R0,#200
	TTYUI:
		LCALL  CLR_WDT
		MOV    DELAY_COUNT,#200                                                
		LCALL  DEALY_RADIO
		DJNZ   R0,TTYUI		
		POP    00H
		RET	
DELY_5Z:
	
		MOV    R0,#40
	TTY5Z:
		MOV    CONNECTC,#0
		LCALL  DELAY_5MS
		DJNZ   R0,TTY5Z	
		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
		
		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
		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
		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
		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
		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
		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:
	       ; setb  AREAO_ON
		LCALL disp_ok
		LCALL disp_eq
		MOV   A,r2
		CJNE  A,#01H,M_2OPTION
		;setb   sign_POP
		LCALL disp_pop
		LJMP  M_EOPTION
	M_2OPTION:
		CJNE  A,#02H,M_3OPTION
		;setb  sign_FLAT
		LCALL disp_flat
		LJMP  M_EOPTION
	M_3OPTION:
		CJNE  A,#03H,M_4OPTION
		;setb  sign_ROCK
		LCALL disp_class
		LJMP  M_EOPTION
	M_4OPTION:
		CJNE  A,#04H,M_5OPTION
		;setb  sign_ROCK
		LCALL disp_rock
		LJMP  M_EOPTION
	M_5OPTION:

	M_EOPTION:
		RET

MUSIC_OP:
	DB   0X68,0X79;;POP
	DB   0X69,0X78;FLAT
	DB   0X6A,0X7B;CLASS
	DB   0X6B,0X7A;ROCK
SETB_OP_MUSIC:
		MOV  	DPTR,#MUSIC_OPTION
		MOVX 	A,@DPTR
		CJNE  	A,#0H,SETM1OPTION
		MOV     DPTR,#SOUND_OP+7
		MOV     R0,#vol_ctr+7
		MOVX    A,@DPTR
		MOV     @R0,A
		INC 	DPTR
		INC 	R0
		MOVX    A,@DPTR
		MOV     @R0,A
		LJMP  SETME5OPTION
	SETM1OPTION:
		CJNE  A,#01H,SETM2OPTION
		LJMP  SETME5PTION
	SETM2OPTION:
		CJNE  A,#02H,SETM3OPTION
		LJMP  SETME5PTION
	SETM3OPTION:
		CJNE  A,#03H,SETM4OPTION
		LJMP  SETME5PTION
	SETM4OPTION:
		CJNE  A,#04H,SETME5OPTION
		LJMP  SETME5PTION
	SETME5PTION:
		DEC   A
		MOV   B,#2
		MUL   AB
		MOV   DPTR,#MUSIC_OP
		ADD   A,DPL
		MOV   DPL,A
		CLR   A
		ADDC  A,DPH
		MOV   DPH,A
		CLR   A
		MOVC  A,@A+DPTR
		MOV   R0,#vol_ctr+7
		MOV   @R0,A
		CLR   A
		INC   DPTR
		MOVC  A,@A+DPTR
		MOV   R0,#vol_ctr+8
		MOV   @R0,A
	SETME5OPTION:
	
		RET		
						
READ_MAP:    ;上电/初始化操作

		LCALL   RD_1MAP
		MOV    	DPTR,#0EDH
		MOVX   	A,@DPTR
		CJNE   	A,#0FDH,ERROR
		INC 	DPTR
		MOVX   	A,@DPTR
		CJNE   	A,#0FDH,ERROR
		INC 	DPTR
		MOVX   	A,@DPTR
		CJNE   	A,#0FDH,ERROR
		LJMP   	ALL_RIGNH
	ERROR:
		LCALL   CLR_XRAM
		MOV     DPTR,#0EDH
		MOV     A,#0FDH
		MOVX 	@DPTR,A
		INC 	DPTR
		MOVX 	@DPTR,A
		INC 	DPTR
		MOVX    @DPTR,A
		LCALL   SETB_MAP
		MOV     A,#0AAH
		LCALL   POWER_SETBD
		MOV     A,#'R'
		LCALL   STATE_FORCE
	ALL_RIGNH:
		ret
SETB_MAP:
		MOV  R0,#00H
		MOV  DPTR,#0000H
	WE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -