📄 mp3_ctrolert
字号:
MOV @R0,#29H
INC R0
MOV @R0,#9DH
ret
COMPARE_DAT:
MOV R0,A
ADD A,#ABS_H
CJNE A,01H,COMP_BIGER
COMP_BIGER:
JNC COMP_LEST
LJMP COPM_OVERAL
COMP_LEST:
MOV A,R0
SUBB A,#ABS_H
CJNE A,01H,COMP_COUNT
LJMP COMP_RIGHT
COMP_COUNT:
JC COMP_RIGHT
LJMP COPM_OVERAL
COMP_RIGHT:
MOV A,#0AAH
LJMP EXIT_COMP
COPM_OVERAL:
MOV A,#0BBH
EXIT_COMP:
RET
;-----------------------------
;ADC转换处理区
;-----------------------------
ADC_SETC0:
MOV A,#80H
ORL P1M1,A
MOV A,#7FH
ANL P1M2,A
MOV ADINS,#0x01 ;0000 0001, 选择channe0
MOV R0,#5
MOV ADCON0,#0x05 ;选择转换触发模式;并立即启动
LCALL DELAY_X
MOV A,AD0DAT0
MOV TEMP_AD0,A
LCALL CLR_ADC
RET
ADC_SETC1:
MOV A,#01H
ORL P0M1,A
MOV A,#0FEH
ANL P0M2,A
MOV ADINS,#0x02 ;0000 0002, 选择channel
MOV R0,#5
MOV ADCON0,#0x05 ;选择转换触发模式;并立即启动
LCALL DELAY_X
MOV A,AD0DAT1
MOV TEMP_AD1,A
LCALL CLR_ADC
RET
ADC_SETC2:
CLR EA
MOV A,#03H
ORL P2M1,A
MOV A,#0FCH
ANL P2M2,A
MOV ADINS,#0x04 ;0000 0004, 选择channe2
MOV R0,#5
MOV ADCON0,#0x05 ;选择转换触发模式;并立即启动
LCALL DELAY_X
MOV A,AD0DAT2
MOV TEMP_AD2,A
LCALL CLR_ADC
RET
;---------------------------------------------
;显示程序区
;---------------------------------------------
SET_ADRESS:
MOV DPTR,#display_numb
LCALL SDF_SUBW
RET
SETB_SM_NUB:
MOV DPTR, #SMAL_NUM
LCALL SDF_SUBW
RET
SETB_LLT:
MOV DPTR, #LL_RVTAB
LCALL SDF_SUBW
RET
SDF_SUBW:
LCALL GET_DATA;通过偏移查表
LCALL SET_DISPL;
RET
send_display:
PUSH 00H
PUSH 01H
PUSH 03H
LCALL CLR_WDT
CLR EA
clr LCD_STB
NOP
CLR LCD_SCK
MOV R1,DISP_ADRESS
MOV 03H,@R1
INC R1
LCALL bit8_Wdata
CLR LCD_SCK
MOV R0,#02
LCALL DELAY_X
SETB LCD_SCK
MOV R0,#0BH
EXERTN_1:
MOV 03H,@R1
INC R1
LCALL bit5_Wdata
DJNZ R0,EXERTN_1
setb LCD_STB
NOP
SETB LCD_SCK
NOP
SETB LCD_DATA
SETB EA
POP 03H
POP 01H
POP 00H
RET
ORI_LCD:
SETB LCD_STB
SETB LCD_SCK
SETB LCD_DATA
MOV R0,#02
LCALL DELAY_X
clr LCD_STB
LCALL DELAY
CLR LCD_SCK
MOV R3,#Set_disp
LCALL bit8_Wdata
setb LCD_STB
SETB LCD_SCK
SETB LCD_DATA
RET
bit8_Wdata:
PUSH 00H
PUSH 01H
PUSH 02H
MOV R2,#08H
SEND_1Q:
CLR C
MOV A,R3
RLC A
MOV R3,A
JC SET_HIGH
CLR LCD_DATA
LJMP SETB_CLK
SET_HIGH:
SETB LCD_DATA
LJMP SETB_CLK
SETB_CLK:
MOV R0,#2
LCALL DELAY_X
CLR LCD_SCK
MOV R0,#2
LCALL DELAY_X
SETB LCD_SCK
DJNZ R2,SEND_1Q
POP 02H
POP 01H
POP 00H
RET
bit5_Wdata:
PUSH 00H
PUSH 01H
PUSH 02H
CLR C
MOV A,R3
RLC A
RLC A
RLC A
MOV R3,A
MOV R2,#05H
SEND_2Q:
MOV R0,#02
LCALL DELAY_X
MOV A,R3
RLC A
MOV R3,A
JC SET_1HIGH
CLR LCD_DATA
LJMP SETB_1CLK
SET_1HIGH:
SETB LCD_DATA
LJMP SETB_1CLK
SETB_1CLK:
CLR LCD_SCK
MOV R0,#02
LCALL DELAY_X
SETB LCD_SCK
DJNZ R2,SEND_2Q
POP 02H
POP 01H
POP 00H
RET
DELAY:
PUSH 00H
MOV R0,#2H
DELAY_1:
DJNZ R0,DELAY_1
POP 00H
RET
SET_DISPL:
PUSH 01H
CLR C
MOV A,#0CH
SUBB A,DISP_COLUM
ADD A,#COMM_L1;COM1 BUFFER ADRESS
MOV R1,A
MOV A,@R1
ORL A,DISP_COM1;
MOV @R1,A
CLR C
MOV A,#0CH
SUBB A,DISP_COLUM
ADD A,#COMM_L2;COM2 BUFFER ADRESS
MOV R1,A
MOV A,@R1
ORL A,DISP_COM2;
MOV @R1,A
CLR C
MOV A,#0CH
SUBB A,DISP_COLUM
ADD A,#COMM_L3;COM3 BUFFER ADRESS
MOV R1,A
MOV A,@R1
ORL A,DISP_COM3
MOV @R1,A
POP 01H
RET
GET_DATA:
MOV B,#3
MOV A,CHAR_ADR
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,#00
ADDC A,DPH
MOV DPH,A
CLR A
MOVC A,@A+DPTR
ANL A,#1FH
MOV DISP_COM1,A
MOV A,#1
MOVC A,@A+DPTR
ANL A,#1FH
MOV DISP_COM2,A
MOV A,#2
MOVC A,@A+DPTR
ANL A,#1FH
MOV DISP_COM3,A
RET
CLR_SREEN:
PUSH 00H
PUSH 01H
MOV R0,#24H
MOV R1,#COMM_L1
LCALL G_FRMTAB
MOV R1,#COMM_L1
MOV @R1,#84H
MOV R1,#COMM_L2
MOV @R1,#8CH
MOV R1,#COMM_L3
MOV @R1,#94H
POP 01H
POP 00H
RET
G_FRMTAB:
MOV_TAB:
CLR A
MOV @R1,A
INC R1
DJNZ R0,MOV_TAB
RET
DFH_OP:;声控地址
MOV SEND_ADRESS,#vol_ctr
MOV SEND_LENGTH,#09H
MOV R0,SEND_ADRESS
MOV A,@R0
INC SEND_ADRESS
RET
CLR_R:
MOV R1,#COMM_L1+2
MOV A,@R1
ANL A,#0E7H
MOV @R1,A
MOV R1,#COMM_L2+2
MOV A,@R1
ANL A,#0E7H
MOV @R1,A
MOV R1,#COMM_L3+2
MOV A,@R1
ANL A,#0E3H
MOV @R1,A
RET
CLR_AXIO:;DB 0x73,0xA3,0xE7;//" ";清除小字符
MOV R1,#COMM_L1+2
MOV A,@R1
ANL A,#39H
MOV @R1,A
MOV R1,#COMM_L2+2
MOV A,@R1
ANL A,#58H
MOV @R1,A
MOV R1,#COMM_L3+2
MOV A,@R1
ANL A,#9CH
MOV @R1,A
LCALL DISP_LCD
RET
COVERY_LSD:;恢复小字符
MOV A,DISP_TEMPS
MOV CHAR_ADR,A;字符代码 .
MOV DISP_COLUM,#0AH;字符列
LCALL SETB_SM_NUB
LCALL DISP_LCD
RET
CLR_ADC:
MOV A,ADCON0
ANL A,#0xF7
MOV ADCON0,A
RET
CLR_DISPCOUNT:
LCALL CLR_DISPT
MOV SELCMC_DONE,#150
MOV SOUND_SC,#150
RET
CLR_DISPT:
CLR DISP_TIMERD
MOV DISP_TIMERC,#4
RET
CLR_TESET:
CLR SETB_FADRF
CLR SETB_FADLF
CLR SETB_BALRR
CLR SETB_BALLR
CLR VOL_SETB
CLR BASS_SETB
CLR TRE_SETB
CLR SELCMD_DONE
MOV SELCMC_DONE,#150
RET
CLR_SELECTS_BIT:
LCALL CLR_TESET
CLR MUSIC_SET_AREA
CLR SELCMD_DONE
RET
;R3,R2,R1
MULTL1:
MOV A,R1
MOV 01H,R3
MOV R3,A
MOV R4,#00H
MOV R5,#00H
MOV R6,#00H
MOV A,R1
MOV B,R0
MUL AB
MOV R1,A
MOV D_TEMP1,B
MOV A,R2
MOV B,R0
MUL AB
ADD A,D_TEMP1
MOV R2,A
CLR A
ADDC A,B
MOV R5,A
CLR A
ADDC A,R6
MOV R6,A
MOV A,R3
MOV B,R0
MUL AB
ADD A,R5
MOV R3,A
MOV A,B
ADDC A,R6
MOV R4,A
RET
;双精度无符号数乘法子程序MUL1
;功能:两个双精度无符号数相乘,乘积为32位
;入口:(R7R6)=被乘数
;(R5R4)=乘数
;出口:(R0)乘积的高位字节地址指针
;工作寄存器:(R3R2)=部分积
;(R1)=进位位暂存单元
MUL2:
MOV A,R6
MOV B,R4
MUL AB
MOV @R0,A
MOV R3,B
MOV A,R4
MOV B,R7
MUL AB
ADD A,R3
MOV R3,A
MOV A,B
ADDC A,#00H
MOV R2,A
MOV A,R6
MOV B,R5
MUL AB
ADD A,R3
INC R0
MOV @R0,A
MOV A,R2
ADDC A,B
MOV R2,A
MOV R1,#00H
JNC LA_P1
INC R1
LA_P1:
MOV A,R7
MOV B,R5
MUL AB
ADD A,R2
INC R0
MOV @R0,A
MOV A,B
ADDC A,R1
INC R0
MOV @R0,A
RET
;四字节位数除以两字节位数
;入口被除数 低位--高位(R7R6R5R4)
;除数: 高位DIV_H,DIV_M,低位DIV_L,
;运算缓存 D_TEMP1,D_TEMP2
;余数 低到高 R3 ,R2,R1
;商: 低到高 R7R6R5R4
DIVD4:
MOV R0,#20H
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
DIV_7:
CLR C
LCALL FORTH_CYC7;被除数连同部分余数左一位
MOV A,R3
SUBB A,DIV_L
MOV D_TEMP2,A
MOV A,R2
SUBB A,DIV_M
MOV D_TEMP1,A
MOV A,R1
SUBB A,DIV_H
JC NEXT72
INC R7;够减,商加一
MOV R1,A
MOV R2,D_TEMP1
MOV R3,D_TEMP2
NEXT72:
DJNZ R0,DIV_7;除完否
RET
FORTH_CYC7:;7字节左循环
MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R1
RLC A
MOV R1,A
RET
FIVE_ADC:
PUSH 01H
MOV R1,#3AH
MOV 00,@R1
CJNE R0,#05,EXIT_MULD
EXIT_MULD:
CLR A
JC EXIT_1MULD
MOV A,#01
EXIT_1MULD:
MOV R0,#39H
MOV R2,#04H
CLR C
LCALL BCD4_aDD
POP 01H
RET
DIV_4FGH:
PUSH 07H
PUSH 06H
PUSH 05H
PUSH 04H
PUSH 03H
PUSH 02H
PUSH 01H
PUSH 00H
MOV R1,#00
MOV R2,#00
MOV R3,#00
MOV R4,#00H
MOV R5,#20H;8192
MOV R0,#36H
LCALL MUL2
MOV R0,#36H
MOV A,#0E8H;225000
ADD A,@R0
MOV @R0,A
INC R0
MOV A,#6EH
ADDC A,@R0
MOV @R0,A
INC R0
MOV A,#03H
ADDC A,@R0
MOV @R0,A
INC R0
MOV A,#00H
ADDC A,@R0
MOV @R0,A
MOV R0,#36H
MOV 07H,@R0
INC R0
MOV 06H,@R0
INC R0
MOV 05H,@R0
INC R0
MOV 04H,@R0
MOV DIV_H,#0FH
MOV DIV_M,#42H
MOV DIV_L,#40H
LCALL DIVD4
MOV D_INT,R7
NOP
MOV R0,#64H
LCALL MULTL1
MOV 07H,R1
INC R0
MOV 06H,R2
INC R0
MOV 05H,R3
INC R0
MOV 04H,R4
MOV DIV_H,#0FH
MOV DIV_M,#42H
MOV DIV_L,#40H
LCALL DIVD4
MOV D_DIV,R7
MOV R0,#36H
MOV A,D_INT
MOV B,#100
DIV AB
MOV @R0,A
INC R0
MOV A,B
MOV B,#10
DIV AB
MOV @R0,A
INC R0
XCH A,B
MOV @R0,A
MOV A,D_DIV
MOV B,#10
INC R0
DIV AB
MOV @R0,A
XCH A,B
INC R0
MOV @R0,A
POP 00H
POP 01H
POP 02H
POP 03H
POP 04H
POP 05H
POP 06H
POP 07H
RET
BCD4_aDD:
CC_0X:
ADD A,@R0
DA A
MOV R1,A
ANL A,#0FH
MOV @R0,A
CLR A
ANL 01H,#0F0H
CJNE R1,#00H,CC_1X
MOV A,#00H
LJMP CC_2X
CC_1X:
MOV A,#1H
CC_2X:
DEC R0
DJNZ R2,CC_0X
RET
display_numb:
DB 0x2a,0x50,0x95;//"0"0
DB 0x20,0x50,0x90;//"1"1
DB 0x2a,0x4a,0x94;//"2"2
DB 0x28,0x5a,0x94;//"3"3
DB 0x20,0x9a,0x91;//"4"4
DB 0x28,0x9a,0x85;//"5"5
DB 0x2a,0x5a,0x85;//"6"6
DB 0x20,0x50,0x94;//"7"7
DB 0x2a,0x9a,0x95;//"8"8
DB 0x28,0x9a,0x95;//"9"9
DB 0x22,0x5a,0x95;//"A"10
DB 0x28,0x5e,0x94;//"B"11
DB 0x2a,0x40,0x85;//"C"12
DB 0x28,0x54,0x94;//"D"13
DB 0x2a,0x4a,0x85;//"E"14
DB 0x22,0x4a,0x85;//"F"15
DB 0x2a,0x40,0x81;//"L"21;16
DB 0x22,0x50,0x9b;//"M"22;17
DB 0x32,0x50,0x93;//"N"23;18
DB 0X20,0X44,0X80;//"I"78;19
DB 0x22,0x4a,0x95;//"P"25;20
DB 0x32,0x4a,0x95;//"R"27;21
DB 0x28,0x5a,0x85;//"S"28;22
DB 0x20,0x44,0x84;//"T"29;23
DB 0x20,0x4A,0x80;//"-"77;24
DB 0x26,0x40,0x89;//"V"31;25
DB 0x21,0x40,0x80;//"mute"43;26
DB 0x20,0x41,0x80;//"INT"44;27
DB 0x20,0x41,0x80;//"RDM"50;28
DB 0x20,0x40,0x80;//51;29
DB 0x21,0x40,0x80;//"RPT"52;30
DB 0x20,0x41,0x80;//"MP3"53;31
DB 0x20,0x40,0x80;//57;32
DB 0x28,0x40,0x80;//"EQ"//64;33
DB 0x30,0x40,0x80;//"FLAT"//65;34
DB 0x20,0x48,0x80;//"POP"69;35
DB 0x20,0x50,0x80;//"OK"70;36
DB 0x20,0x40,0x81;//"CONNET"71;37
DB 0x20,0x40,0x82;//"P3"72;38
DB 0x20,0x40,0x90;//"ROCK"75;39
DB 0x21,0x40,0x80;//"cLASS"76;40
DB 0x30,0x44,0x88;//"K"41
DB 0x36,0x50,0x91;//"W"42
LL_RVTAB:
DB 0x20,0x40,0x90;//"L1"0
DB 0x20,0x50,0x90;//"L2"1
DB 0x30,0x50,0x90;//"L3"2
DB 0x30,0x50,0x98;//"L4"3
DB 0x30,0x58,0x98;//"L5"4
DB 0x38,0x58,0x98;//"L6"5
DB 0x38,0x58,0x9c;//"L7"6
SMAL_NUM:
DB 0X20,0X41,0X80;//"SUB"7
DB 0x24,0x44,0x80;//"1" 1
DB 0x26,0x42,0x83;//"2" 2
DB 0x26,0x46,0x82;//"3" 3
DB 0x24,0x47,0x80;//"4" 4
DB 0x22,0x47,0x82;//"5" 5
DB 0x22,0x47,0x83;//"6" 6
;DB 0x39,0x58,0x9C;//" "
sdfsdf:
db 0x88,0x1F,0x0c8,0x0e8,0x88,0x0a8,0x48,0x68,0x78
;--------------------------------------------------------------------------------------
MODE_RVL:
PUSH 00H
PUSH 02H
JNB P_MODE,MP3_MOD4
clr P_MODE
JB MP3_MODE,MP3_MOD2
CLR HAND_PRESS
JB MP3_STATE,MP3_MOD4
SETB MUTE_CTROL
MOV A,#7
lcall tedr_sbuf
LCALL MP3_POWER
LJMP MP3_MOD3
MP3_MOD2:
SETB MUTE_CTROL
MOV A,#0aH
lcall tedr_sbuf
lcall RADIO_VMOD;显示RADIO截面
LCALL RADIO_POWER
SETB HAND_PRESS
MP3_MOD3:
LCALL CLR_CARRY_BIT
MP3_MOD4:
POP 02h
POP 00H
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -