📄 mp3_ctroler.asm.bak
字号:
#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 + -