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

📄 mp3_ctroler.asm.bak

📁 lpc935/6下编写车载mp3控制面板源代码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
#include "Reg935.inc"
#include "KEY_DEF.INC"
I2cSDA      	BIT		P2.5;收音机I2C
I2cSCL	  	BIT		P2.4
LCD_SCK     	BIT 		P1.2;LCD的I2C
LCD_DATA    	BIT         	P1.3
LCD_STB	    	BIT        	P0.1


POWER_2		BIT		P1.6;电源
POWER_1		BIT		P1.4
MP3_STATE	BIT		P0.6;检测MP3信号
MP3_1STATE	BIT		P2.2;检测MP3信号
MUTE_CTROL	BIT		P0.3;禁音控制

testy_b		bit		P0.7
KEY_UP		BIT		P2.0
KEY_DW		BIT		P2.3

SDA_AMPLIFY	BIT		P2.6;放大器的I2C
SCLK_AMPLIFY	BIT		P2.7
Set_disp     	DATA 		0dH
Status_c    	DATA		84H
DATA_TY		DATA		05H
ABS_H		DATA		03H


SAV_BAND	DATA		0000H;波段存储
STAT_COUNT	DATA		0001H;电台计数
VOLMODE_SAV	DATA		0002H;收音机播放模式控制
MUSIC_OPTION	DATA		0003H;音场控制
PLAY_MODE	DATA		0004H;播放模式选择
POWER_MODE	DATA		0005H;电源开关模式
STATE_HAND	DATA		0006H;强制状态
SONG_COUNT	DATA		0007H;

SOUND_OP	DATA		0010H;音量控制参数9位
DAT_REDIO	DATA		0019H;收音机控制参数
STATION_FRE	DATA		0080H;电台频率参数存储位置
DL5US		DATA		08H
DL9US		DATA		020H
G_SENDSD	DATA		0130H;
G_RECI		DATA		0140H;
vol_ct_TEMP	DATA		0100H;
DISP_PROTECT	DATA		0160H;
W_DWord_BAK	DATA		0190H
COMM_L1		DATA		0A3H
COMM_L2		DATA		0AFH
COMM_L3		DATA		0BBH
COMM_L4		DATA		0C8H

W_DWord		DATA            09EH;收音机发送缓冲
R_DWord		DATA            099H;收音机接收缓冲
vol_ctr		DATA		08FH
MP3_RDATA	DATA		084H;MP3返回数据缓冲
MP3_SDATA	DATA		07BH;控制数据发送缓冲

;MP3_RV_DAT	DATA		0120H;
MP3_RV_DAT	DATA		07H;
AUDIO_EQ	DATA		0AH

ORDER_CMD	EQU		08H
DISP_ADRESS	EQU		09H
DISP_COM1	EQU		0AH
DISP_COM2	EQU		0BH
DISP_COM3	EQU		0CH
CHAR_ADR	EQU		0DH
DISP_COLUM	EQU		0EH
DELAY_COUNT	EQU		0FH
SEND_DATA	EQU		10H
READ_DATA	EQU		11H
TEMP_AD0	EQU		12H
TEMP_AD1	EQU		13H
TEMP_AD2	EQU		14H
TEMP_AD3	EQU		15H
KEY_1CC		EQU		16H
KEY_2CC		EQU		17H
TEMP1_KEYD	EQU		18H
TEMP2_KEYD	EQU		19H
TEMPC		EQU		1AH
STA_COUNT	EQU		1BH
DISP_TIMERC	EQU		1CH
ii_data		EQU		1DH
POW_COUNT	EQU		1EH
POW_CDD		EQU		1FH
DIV_C		EQU		30H
DIV_L		EQU		31H	
DIV_M		EQU		32H
DIV_H		EQU		33H		
D_TEMP1		EQU		34H
D_TEMP2		EQU		35H
D_INT		EQU		3AH
D_DIV		EQU		3BH	
STATION_COUNT	EQU		3CH
STA_DPH		EQU		3DH
STA_DPL		EQU		3EH
STATION_RV	EQU		3FH
SOUND_SC	EQU		40H
SELEC_C		EQU		41H
TIME_COUNT	EQU		42H
TIME_COMP	EQU		43H
KEY_2UPC	EQU		44H
KEY_1UPC	EQU		45H
DISP_VMODC	EQU		46H
ADRESS		EQU		47H
P_CMB		EQU		48H
P_CMC		EQU		49H	
P_PCMB		EQU		4AH
P_PCMC		EQU		4BH	
P_SELCB		EQU		4CH
P_SELCC		EQU		4DH
SELCMC_DONE	EQU		4EH	
SEND_ADRESS	EQU		4FH;
SEND_LENGTH	EQU		50H
MUSIC_OPTC	EQU		51H
S_COM_CU	EQU		52H
POWER_TEMP	EQU		53H
CONNECT		EQU		54H
CONNECTC	EQU		55H
swz_pt		EQU		56H		
DISP_TEMPS	EQU		57H
DISPC_TEMP	EQU		58H
KEY_COUNT	EQU		59H
MKEY_KJU	EQU		5AH
MKEY_KJU_BAK	EQU		5BH
MKEY_COUNT	EQU		5CH
HAND_KEY	EQU		5DH
HAND_KEY_BAK	EQU		5EH
HAND_COUNT	EQU		5FH
MP3_J		EQU		60H
MP3_count	EQU		61H
SWZ_LOWC	EQU		62H
SUSB_LOWC	EQU		63H
JUDG_MDELAYC	EQU		64H
SEND_COUNTF	EQU		65H
	
DISP_TIMERD	BIT		01H
ERROR_SF	BIT		02H
RADIO_ERR	BIT		03H
SEACH_BEGIN	BIT		04H
SOUND_SB	BIT		05H
MUTE_KNOCK	BIT		06H
P_DN		BIT		07H
P_AF_MO		BIT		08H
P_V_DN		BIT		09H
P_CLK		BIT		0AH
P_MODE		BIT		0BH	
P_V_UP		BIT		0CH
P_SEL		BIT		0DH
P_MUTE		BIT		0EH
P_BAND		BIT		0FH
P_A_P		BIT		10H
P_SCAN		BIT		11H
SAME_KEY	BIT		12H
DISP_VMODE	BIT		13H
P_MB		BIT		14H
P_MD		BIT		15H		
P_PMB		BIT		16H
P_PMD		BIT		17H	
SEACH_QUICK	BIT		18H
P_SELCMB	BIT		19H
P_SELCMD	BIT		1AH	
SELC_QUICK	BIT		1BH
SEND_END	BIT		1CH
SCON_DINGSHIB	BIT		1DH	
CONNECT_1BITS	BIT		1EH
CONNECT_BS	BIT		1FH
DISPB_TEMP	BIT		20H
DISPD_TEMP	BIT		21H
MUSIC_SET_AREA  BIT		22H
AUTO_SRHED	BIT		23H
M_KEY_BAL	BIT		24H
HAND_BAKL	BIT		25H
SAV_MKEY_SIGN	BIT		26H
AUTO_SEACHJ	BIT		27H
SELECT_CTR_SGN  BIT		28H
ADDC_CVB	BIT		29H
SWZ_HIGH	BIT		2AH
SWZ_LOW		BIT		2BH
HAND_RESS	BIT		2CH
KEY_LBG		BIT		2DH
KEY_LBC		BIT		2EH
KEY_LBD		BIT		2FH
KEY_RBG		BIT		30H
KEY_RBC		BIT		31H
KEY_RBD		BIT		32H
hand_searchup	bit		33h
hand_searchdw	bit		34h
MP3_SELECT_S	BIT		35H
JUDG_MDELAYB	BIT		36H
JUDG_MDELAYD	BIT		37H
SEND_ERROR	BIT		38H
right_key	bit		39h
DELAY_SWZ	BIT		58H
MP3_NOPATL	BIT		59H
ORIGHT_STAT	BIT		5AH


HAND_PRESS	BIT		5BH
ALLOW_OP	BIT		5CH
SETB_FADRF	BIT		5DH
SETB_FADLF	BIT		5EH
SETB_BALRR	BIT		5FH
SETB_BALLR	BIT		60H
TRE_SETB	BIT		61H
BASS_SETB	BIT		62H
SELCMD_DONE	BIT		63H
VOL_SETB	BIT		64H
sign_INT	BIT		65H
AREAO_ON	BIT		66H
sign_ROCK 	BIT		68H
sign_POP 	BIT		69H
sign_CLASS	BIT		6AH
sign_FLAT	BIT		6BH
sign_stop	BIT		6CH
sign_rpt	BIT		6DH
sign_rdm	BIT		6EH
S_SCAN		BIT		6FH
MP3_MODE	BIT		70H		
COM_3BIT	BIT		71H
COM_1BIT	BIT		72H
COM_2BIT	BIT		73H
POW_RESET	BIT		76H
POW_RST		BIT		77H
KEY_2UPB	BIT		78H
KEY_1B		BIT		79H
KEY_1C		BIT		7AH
KEY_1D		BIT		7BH
KEY_1UPB	BIT		7CH
KEY_2B		BIT		7DH
KEY_2C		BIT		7EH
KEY_2D		BIT		7FH
;2005-2-23上午;解决MUTE,BAND按键不灵,下选键不能用问题
       ORG   	0000H 
       LJMP  	BEGIN
       ORG   	000BH
       LJMP  	INT_T0
       ORG   	001BH
       LJMP  	INT_T1
       ORG   	0023H
       LJMP  	SCRON
       ORG   	00076H
       
BEGIN:
		CLR 	RS0
		CLR 	RS1
		MOV 	R0,#02H
		MOV 	R1,#0FDH
	CLR_RAM:
		MOV     @R0,#00
		INC     R0
		DJNZ    R1,CLR_RAM
		MOV     SP,#0C8H
		LCALL   INI_CPU
		LCALL   WDT_OP   ;看门狗初始化
		LCALL   READ_MAP
		MOV     A,RSTSRC
		mov     swz_pt,#0ffh
		JNB     ACC.1,GOIN_TRY
		mov     swz_pt,#00h
	GOIN_TRY:
		SETB    TR1
		setb    TR0
		SETB    EA
MAIN_CT:
		LCALL   CLR_WDT
		JB   	POW_RESET,POWER_ER
		JNB   	POW_RST,MAIN_CT
		LCALL 	POWER_RESET;带电复位
		LJMP    MAIN_CT
	POWER_ER:
		JNB   	DISP_TIMERD,NEXE_1TASK
		LCALL 	HIST_COVERY
	 NEXE_1TASK:
		LCALL 	DEAL_KEYS;按键处理
		JB    	HAND_PRESS,NEXT_3TASK
		JB      MP3_MODE,NEXT_2TASK
		JB      MP3_STATE,NEXT_2TASK
		SETB    MUTE_CTROL
		LCALL   DGNE_MP3
		clr     MUTE_CTROL;;;;;;;;;
		LJMP  	MAIN_CT
	NEXT_2TASK:
		JB      HAND_PRESS,NEXT_3TASK
		JNB     MP3_MODE,NEXT_3TASK
		JNB     MP3_STATE,NEXT_3TASK
		SETB    MUTE_CTROL
		LCALL   DGNE_RADIO
		clr     MUTE_CTROL;;;;;;
	NEXT_3TASK:
		LJMP    MAIN_CT
		
POWER_SETBD:;电源状态设置
		
		PUSH	DPH
		PUSH	DPL	
		MOV     DPTR,#POWER_MODE
		MOVX    @DPTR,A
		MOV     R0,DPL
;		LCALL   WD_EERAM
		POP	DPL
		POP	DPH
		RET	
STATE_FORCE:;播放状态存储
		
		PUSH	DPH
		PUSH	DPL	
		
		MOV     DPTR,#STATE_HAND
		MOVX    @DPTR,A
		MOV     R0,DPL
;		lcall   WD_EERAM
		
		POP	DPL
		POP	DPH
		RET	
DELAY_50MS:
		PUSH  00H
		MOV   R0,#10
	WEE_FG:
		LCALL  clr_wdt_nea
		LCALL  DEALY4_MS
		DJNZ   R0,WEE_FG
		POP    00H
		RET		
DEALY4_MS:
		PUSH 00
		PUSH	01
		MOV  R0,#200
		MOV  R1,#50
	DELAY_4MS:
		DJNZ   R0,$
		MOV    R0,#200
		DJNZ   R1,DELAY_4MS
		LCALL  clr_wdt_nea

		POP	01
		POP	00
		RET	

LJMP_MP3J:
		MOV     C,MP3_STATE	
		MOV     A,MP3_J
		RLC     A
		MOV     MP3_J,A
		ANL     A,#03FH
		CJNE    A,#03FH,MP_XMP3J
		JNB     HAND_PRESS,MP_XMP4J
		CLR     HAND_PRESS
		MOV     A,#7
		lcall   SEND_COMMAND
		JBC     SEND_ERROR,MP_XMP4J
		MOV     A,#0BBH
		LCALL   STATE_FORCE
		LJMP    MP_XMP4J
	MP_XMP3J:
	MP_XMP4J:	
		RET
		
DEAL_KEYS:
		PUSH	00H
		PUSH	01H
		JB      sign_stop,done_mp3
		LCALL   ST_MONO;单-双声道控制
		LCALL   ADD_1VOL
	        LCALL   SUBB_1VOL
		LCALL   MODE_RVL;工作模式选择
		LCALL   RECI_MP3DAT
		LCALL   M_KEY
		LCALL	SELECT1_CTR
		LCALL   SELECT_CTR_DONE
		LCALL   HAND_SEARCH
		LCALL   SEL_SONG
		JB      MP3_MODE,exit_chanel
		LCALL   SAV_MKEY
		LCALL   SEARCH_MAN
		LCALL   BAND_KEY;
		LCALL   SEARCH_START
		LCALL	AUTO_SEACH;搜索处理
		ljmp    exit_chanel
	done_mp3:
		LCALL   REVEAL_D
		LCALL   M_KEY
	exit_chanel:
		POP	01H
		POP	00H
		RET
SEL_SONG:
		JNB     MP3_SELECT_S,L_SONGE
		MOV     A,HAND_KEY
		JNB     MP3_MODE,L2_SONGE
		SETB    MUTE_CTROL
		lcall   SEND_COMMAND
		CLR     MP3_SELECT_S
		JBC     SEND_ERROR,L1_SONGE
		lcall   reci_datmp3
	L1_SONGE:
		CLR     MUTE_CTROL
		LJMP    L_SONGE
	L2_SONGE:
		CLR     MP3_SELECT_S
	L_SONGE:	
		RET
HAND_SEARCH:
		JBC     HAND_BAKL,D_1SEARCH
		LJMP    EXIT_3SH
	D_1SEARCH:
		JB      MP3_MODE,EXIT_3SH
		SETB    MUTE_CTROL
		MOV     A,HAND_KEY
		CJNE    A,#05,EXIT_1SH
		LCALL   UP_5SEARCH_SET
		LJMP    EXIT_2SH
	EXIT_1SH:
		CJNE    A,#06,EXIT_2SH
		LCALL   DOWN_5SEARCH
		LJMP    EXIT_2SH
	EXIT_2SH:
		clr     MUTE_CTROL
	EXIT_3SH:
		RET
UP_5SEARCH_SET:
		PUSH	06H
		PUSH	07H
		
		lcall   up_sethig;加6后判断
		LCALL   JUDG_PLK;四舍5入补偿后设置
		POP	07H
		POP	06H
		RET
up_sethig:
		LCALL   CLR_WDT
		LCALL   COVER_DATA
		LCALL   TOP_JUDGE;高极限判断
		MOV     R1,#W_DWord
		INC     R1
		CLR 	C
		MOV     A,@R1
		ADD     A,#06H
		MOV     @R1,A
		MOV     R6,A
		DEC     R1
		MOV     A,@R1
		ADDC    A,#00
		MOV     @R1,A
		MOV     R7,A
		ret
DOWN_5SEARCH:
		PUSH	07H
		PUSH	06H
		lcall  down_ssh
		LCALL  JUDG_PLK
		POP	07H
		POP	06H
		RET
down_ssh:
		LCALL   COVER_DATA
		LCALL   DOWN_JUDGE
		MOV     R1,#W_DWord
		INC     R1
		CLR C
		MOV     A,@R1
		SUBB    A,#06H
		MOV    @R1,A
		MOV    R6,A
		DEC    R1
		MOV    A,@R1
		SUBB   A,#00
		MOV    @R1,A
		MOV    R7,A
		ret
SEARCH_MAN:
		JB      AUTO_SRHED,CH_0MAN
		LJMP    AUTO_END1
	CH_0MAN:
		SETB   MUTE_CTROL
		MOV    A,HAND_KEY
		CJNE   A,#5,H_AUTODOWN
		LCALL  UP_SEARCH
		LJMP   AUTO_END
	H_AUTODOWN:
		CJNE   A,#6,AUTO_END
		LCALL  DOWN_SEARCH
	AUTO_END:
		CLR    MUTE_CTROL
	AUTO_END1:		
		RET
DOWN_SEARCH:;
		PUSH	06H
		PUSH	07H
		LCALL  CLR_FLASH
		SETB   DISPB_TEMP
	UP_BOTT:
		lcall  down_ssh
		MOV    R1,#W_DWord
		MOV    A,@R1
		ORL    A,#0C0H
		MOV    @R1,A
		MOV    R1,#W_DWord+2
		MOV    A,@R1
		CLR    ACC.7
		MOV    @R1,A
		LCALL  WriteSTR
		LCALL  DEALY_50
	BOTT_0DP:
		LCALL   CLR_WDT
		LCALL  READSTR
		MOV    R0,#R_DWord
		MOV    A,@R0
		JB     ACC.7,BOTT_1DP
		LJMP   BOTT_0DP
	BOTT_1DP:
		JNB     ACC.6,BOTT_2DP
		lcall   setb_higher
		LJMP  	UP_BOTT
	BOTT_2DP:
		LCALL   CLR_WDT
		LCALL   JUDG_SDOWN
		CJNE    A,#0AAH,UP_BOTT
		LCALL   MEM_SUB
		LCALL   CLR_FLASH
		LCALL   CLR_DISPT
		POP	06H
		POP	07H
		RET
DOWN_JUDGE:
		lcall   sav_zhip
		LCALL  DIV_4FGH
		LCALL  FIVE_ADC
		MOV    R0,#36H
		LCALL  COMP_108
		JC     EXIT_1BOTTOM
		LJMP   EXIT_3BOTTOM
	EXIT_1BOTTOM:
		MOV    	R0,#36H
		LCALL  	COM_875
		JNC   	EXIT_4BOTTOM
	EXIT_3BOTTOM:
		lcall   setb_higher
	EXIT_4BOTTOM:
		RET

JUDG_SDOWN:
		PUSH	DPL
		PUSH	DPH
		lcall   SAV_DATA_STA
		MOV     R4,#01H
	YUID_2IOP:
		MOV     R1,#W_DWord
		MOV     A,@R1
		ANL     A,#3FH
		MOV	@R1,A
		INC     R1
		CLR     C
		MOV     A,@R1
		SUBB    A,#1;1
		MOV  	@R1,A
		DEC  	R1
		MOV     A,@R1
		SUBB  	A,#00
		MOV     @R1,A
		
		
		
		LCALL   SETB_SEARCH
		CLR     ACC.7
		LCALL 	JUDG_OPLH
		CJNE    A,02H,YUID_S4IOP
		INC 	R1
		MOV     A,@R1
		CJNE    A,03H,YUID_S4IOP
		INC     R4
		LJMP    YUID_2IOP 
	YUID_S4IOP: 
		CJNE    R4,#03H,YUID_S5IOP
	YUID_S5IOP:
		LCALL   SET_SCVB
		POP	DPH
		POP	DPL
		RET
JUDG_PLK:
	GO_0ONADD:
		LCALL  DIV_4FGH
		LCALL  JUDG_HALF
		CJNE   R1,#0AAH,GO_1ONADD
		LJMP   GO_3ONADD
	GO_1ONADD:
		CJNE   R1,#0ADH,GO_2ONADD
		LCALL  ADDC_1
		LJMP   GO_0ONADD
	GO_2ONADD:
		CJNE   R1,#0DAH,EXIT_DSCHED
		LCALL  SUBB_1
		LJMP   GO_0ONADD
	GO_3ONADD:
		LCALL  WriteSTR
		LCALL  sav_writer
		LCALL  SEARCH_V
	EXIT_DSCHED:
		RET	

UP_SEARCH:;
		PUSH	06H
		PUSH	07H
		LCALL   CLR_FLASH
		SETB    DISPB_TEMP;打开闪烁
	UP_TOP:
		lcall   up_sethig
		MOV     R1,#W_DWord
		MOV     A,@R1
		ORL     A,#0C0H
		MOV     @R1,A
		MOV     R1,#W_DWord+2
		MOV     A,@R1
		SETB    ACC.7
		MOV     @R1,A
		LCALL   CLR_WDT
		LCALL   WriteSTR
		LCALL   DEALY_50
	TOP_0DP:
		LCALL  READSTR
		MOV    R0,#R_DWord
		MOV    A,@R0
		JB     ACC.7,TOP_1DP
		LJMP   TOP_0DP
	TOP_1DP:
		JNB     ACC.6,TOP_2DP
		lcall   setb_lower
		LJMP    UP_TOP
	TOP_2DP:
		LCALL  JUDG_SENDSD
		CJNE   A,#0AAH,UP_TOP
		LCALL  MEM_SUB
		LCALL  CLR_FLASH
		POP	07H
		POP	06H
		RET
MEM_SUB:
		LCALL   SEARCH_V
		MOV     R0,#W_DWord
		MOV     A,@R0
		ANL     A,#3FH
		MOV     @R0,A
		LCALL   WriteSTR
		CLR     AUTO_SRHED
		RET
TOP_JUDGE:
		lcall   sav_zhip
		LCALL  	DIV_4FGH
		LCALL  	FIVE_ADC
		MOV  	R0,#36H
		LCALL   COM_875
		JNC     EXIT_1TOP
		LJMP    EXIT_2TOP
	EXIT_1TOP:
		MOV  	R0,#36H
		LCALL   COMP_108
		JC      EXIT_3TOP
	EXIT_2TOP:	
		lcall   setb_lower
	EXIT_3TOP:
		RET
		
COM_875:
		CJNE @R0,#0H,EXIT_0BOTTOM
		INC  R0
		CJNE @R0,#8H,EXIT_0BOTTOM
		INC  R0
		CJNE @R0,#7H,EXIT_0BOTTOM
		INC  R0
		CJNE @R0,#5H,EXIT_0BOTTOM
	EXIT_0BOTTOM:
		RET
COMP_108:
		CJNE @R0,#1H,EXIT_BOTTOM
		INC  R0
		CJNE @R0,#0H,EXIT_BOTTOM
		INC  R0
		CJNE @R0,#8H,EXIT_BOTTOM
		INC  R0
		CJNE @R0,#0H,EXIT_BOTTOM

⌨️ 快捷键说明

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