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