📄 mp3.lst
字号:
0BDC 1E31 ADC R3,R17
0BDD 1E42 ADC R4,R18
0BDE 1E53 ADC R5,R19
0BDF 0135 MOVW R6,R10
0BE0 2488 CLR R8
0BE1 2499 CLR R9
0BE2 0C26 ADD R2,R6
0BE3 1C37 ADC R3,R7
0BE4 1C48 ADC R4,R8
0BE5 1C59 ADC R5,R9
0BE6 92300114 STS 0x114,R3
0BE8 92200113 STS 0x113,R2
(0063)
(0064)
(0065) return 0;
0BEA 2700 CLR R16
0BEB 9626 ADIW R28,6
0BEC 940E1CC2 CALL pop_gset5
0BEE 9508 RET
_Mp3_number_Counter:
mulu_Clus_number --> Y+1
counter_over --> Y+0
Read_number --> R10
0BEF 940E1CC5 CALL push_gset5
0BF1 9723 SBIW R28,3
(0066) }
(0067)
(0068) //=======================================================================
(0069) void Mp3_number_Counter(void)
(0070) {
(0071) uint8 Read_number;
(0072) uint8 counter_over=0;
0BF2 2400 CLR R0
0BF3 8208 STD Y+0,R0
(0073) uint16 mulu_Clus_number;
(0074)
(0075) mulu_Clus_number=fat_info.Firstgengmulu;
0BF4 90200111 LDS R2,fat_info+3
0BF6 90300112 LDS R3,0x112
0BF8 823A STD Y+2,R3
0BF9 8229 STD Y+1,R2
0BFA C069 RJMP 0x0C64
(0076)
(0077) while(!counter_over)
(0078) {
(0079)
(0080) SD_start_read(mulu_Clus_number++);
0BFB 8029 LDD R2,Y+1
0BFC 803A LDD R3,Y+2
0BFD 01C1 MOVW R24,R2
0BFE 9601 ADIW R24,1
0BFF 839A STD Y+2,R25
0C00 8389 STD Y+1,R24
0C01 2444 CLR R4
0C02 2455 CLR R5
0C03 0181 MOVW R16,R2
0C04 0192 MOVW R18,R4
0C05 940E1527 CALL _SD_start_read
(0081) Read_number=16;
0C07 E180 LDI R24,0x10
0C08 2EA8 MOV R10,R24
0C09 C052 RJMP 0x0C5C
(0082) while(Read_number--)
(0083) {
(0084)
(0085) SD_get_date(buffer,32);
0C0A E220 LDI R18,0x20
0C0B E030 LDI R19,0
0C0C E105 LDI R16,0x15
0C0D E011 LDI R17,1
0C0E 940E1552 CALL _SD_get_date
(0086) if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
0C10 91800115 LDS R24,buffer
0C12 3E85 CPI R24,0xE5
0C13 F019 BEQ 0x0C17
0C14 E041 LDI R20,1
0C15 E050 LDI R21,0
0C16 C002 RJMP 0x0C19
0C17 2744 CLR R20
0C18 2755 CLR R21
0C19 9180011D LDS R24,0x11D
0C1B 348D CPI R24,0x4D
0C1C F419 BNE 0x0C20
0C1D E061 LDI R22,1
0C1E E070 LDI R23,0
0C1F C002 RJMP 0x0C22
0C20 2766 CLR R22
0C21 2777 CLR R23
0C22 9180011E LDS R24,0x11E
0C24 3580 CPI R24,0x50
0C25 F421 BNE 0x0C2A
0C26 E081 LDI R24,1
0C27 E090 LDI R25,0
0C28 017C MOVW R14,R24
0C29 C002 RJMP 0x0C2C
0C2A 24EE CLR R14
0C2B 24FF CLR R15
0C2C 9180011F LDS R24,0x11F
0C2E 3383 CPI R24,0x33
0C2F F421 BNE 0x0C34
0C30 E081 LDI R24,1
0C31 E090 LDI R25,0
0C32 016C MOVW R12,R24
0C33 C002 RJMP 0x0C36
0C34 24CC CLR R12
0C35 24DD CLR R13
0C36 011A MOVW R2,R20
0C37 2226 AND R2,R22
0C38 2237 AND R3,R23
0C39 202E AND R2,R14
0C3A 203F AND R3,R15
0C3B 202C AND R2,R12
0C3C 203D AND R3,R13
0C3D 2022 TST R2
0C3E F411 BNE 0x0C41
0C3F 2033 TST R3
0C40 F031 BEQ 0x0C47
(0087) {
(0088)
(0089) MP3_all_number++;
0C41 91800317 LDS R24,MP3_all_number
0C43 5F8F SUBI R24,0xFF
0C44 93800317 STS MP3_all_number,R24
(0090) }
0C46 C015 RJMP 0x0C5C
(0091) else if(buffer[0]==0)
0C47 90200115 LDS R2,buffer
0C49 2022 TST R2
0C4A F489 BNE 0x0C5C
(0092) {
0C4B C006 RJMP 0x0C52
(0093) while(Read_number--)
(0094) {
(0095)
(0096) SD_get_date(buffer,32);
0C4C E220 LDI R18,0x20
0C4D E030 LDI R19,0
0C4E E105 LDI R16,0x15
0C4F E011 LDI R17,1
0C50 940E1552 CALL _SD_get_date
0C52 2C2A MOV R2,R10
0C53 2433 CLR R3
0C54 2D82 MOV R24,R2
0C55 5081 SUBI R24,1
0C56 2EA8 MOV R10,R24
0C57 2022 TST R2
0C58 F799 BNE 0x0C4C
(0097) }
(0098) counter_over=1;
0C59 2400 CLR R0
0C5A 9403 INC R0
0C5B 8208 STD Y+0,R0
0C5C 2C2A MOV R2,R10
0C5D 2433 CLR R3
0C5E 2D82 MOV R24,R2
0C5F 5081 SUBI R24,1
0C60 2EA8 MOV R10,R24
0C61 2022 TST R2
0C62 F009 BEQ 0x0C64
0C63 CFA6 RJMP 0x0C0A
0C64 8008 LDD R0,Y+0
0C65 2000 TST R0
0C66 F409 BNE 0x0C68
0C67 CF93 RJMP 0x0BFB
0C68 9623 ADIW R28,3
0C69 940E1CC2 CALL pop_gset5
0C6B 9508 RET
_MP3_Directory:
counter --> Y+12
mulu_Clus_number --> Y+4
i --> Y+11
j --> Y+10
Read_number --> Y+8
number --> R10
0C6C 940E1CC5 CALL push_gset5
0C6E 2EA0 MOV R10,R16
0C6F 9761 SBIW R28,0x11
(0099) }
(0100)
(0101) }
(0102) }
(0103)
(0104) }
(0105)
(0106) //=======================================================================
(0107) void MP3_Directory(uint8 number)
(0108) {
(0109) uint8 i,j;
(0110) uint8 counter;
(0111) uint16 Read_number;
(0112) uint32 mulu_Clus_number;
(0113)
(0114) Read_number=0;
0C70 2400 CLR R0
0C71 2411 CLR R1
0C72 8619 STD Y+9,R1
0C73 8608 STD Y+8,R0
(0115) counter=number;
0C74 86AC STD Y+12,R10
(0116) mp3_info.Name_number=0;
0C75 2422 CLR R2
0C76 92200109 STS 0x109,R2
(0117) mulu_Clus_number=fat_info.Firstgengmulu;
0C78 90200111 LDS R2,fat_info+3
0C7A 90300112 LDS R3,0x112
0C7C 2444 CLR R4
0C7D 2455 CLR R5
0C7E 01FE MOVW R30,R28
0C7F 8224 STD Z+4,R2
0C80 8235 STD Z+5,R3
0C81 8246 STD Z+6,R4
0C82 8257 STD Z+7,R5
(0118) mulu_Clus_number=mulu_Clus_number<<9;
0C83 E089 LDI R24,0x9
0C84 E090 LDI R25,0
0C85 01FE MOVW R30,R28
0C86 8024 LDD R2,Z+4
0C87 8035 LDD R3,Z+5
0C88 8046 LDD R4,Z+6
0C89 8057 LDD R5,Z+7
0C8A 938A ST R24,-Y
0C8B 0181 MOVW R16,R2
0C8C 0192 MOVW R18,R4
0C8D 940E1D3E CALL lsl32
0C8F 01FE MOVW R30,R28
0C90 8304 STD Z+4,R16
0C91 8315 STD Z+5,R17
0C92 8326 STD Z+6,R18
0C93 8337 STD Z+7,R19
0C94 C327 RJMP 0x0FBC
(0119)
(0120)
(0121) while(counter)
(0122) {
(0123) SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer,32);
0C95 E280 LDI R24,0x20
0C96 E090 LDI R25,0
0C97 839B STD Y+3,R25
0C98 838A STD Y+2,R24
0C99 E185 LDI R24,0x15
0C9A E091 LDI R25,1
0C9B 8399 STD Y+1,R25
0C9C 8388 STD Y+0,R24
0C9D 8428 LDD R2,Y+8
0C9E 8439 LDD R3,Y+9
0C9F 01C1 MOVW R24,R2
0CA0 9601 ADIW R24,1
0CA1 8799 STD Y+9,R25
0CA2 8788 STD Y+8,R24
0CA3 E085 LDI R24,5
0CA4 E090 LDI R25,0
0CA5 2444 CLR R4
0CA6 2455 CLR R5
0CA7 938A ST R24,-Y
0CA8 0181 MOVW R16,R2
0CA9 0192 MOVW R18,R4
0CAA 940E1D3E CALL lsl32
0CAC 01FE MOVW R30,R28
0CAD 8024 LDD R2,Z+4
0CAE 8035 LDD R3,Z+5
0CAF 8046 LDD R4,Z+6
0CB0 8057 LDD R5,Z+7
0CB1 0E20 ADD R2,R16
0CB2 1E31 ADC R3,R17
0CB3 1E42 ADC R4,R18
0CB4 1E53 ADC R5,R19
0CB5 0181 MOVW R16,R2
0CB6 0192 MOVW R18,R4
0CB7 940E1567 CALL _SD_read_sector2
(0124)
(0125) if(counter>1)
0CB9 E081 LDI R24,1
0CBA 840C LDD R0,Y+12
0CBB 1580 CP R24,R0
0CBC F008 BCS 0x0CBE
0CBD C03C RJMP 0x0CFA
(0126) {if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
0CBE 91800115 LDS R24,buffer
0CC0 3E85 CPI R24,0xE5
0CC1 F029 BEQ 0x0CC7
0CC2 E081 LDI R24,1
0CC3 E090 LDI R25,0
0CC4 879E STD Y+14,R25
0CC5 878D STD Y+13,R24
0CC6 C004 RJMP 0x0CCB
0CC7 2400 CLR R0
0CC8 2411 CLR R1
0CC9 861E STD Y+14,R1
0CCA 860D STD Y+13,R0
0CCB 9180011D LDS R24,0x11D
0CCD 348D CPI R24,0x4D
0CCE F421 BNE 0x0CD3
0CCF E081 LDI R24,1
0CD0 E090 LDI R25,0
0CD1 017C MOVW R14,R24
0CD2 C002 RJMP 0x0CD5
0CD3 24EE CLR R14
0CD4 24FF CLR R15
0CD5 9180011E LDS R24,0x11E
0CD7 3580 CPI R24,0x50
0CD8 F421 BNE 0x0CDD
0CD9 E081 LDI R24,1
0CDA E090 LDI R25,0
0CDB 016C MOVW R12,R24
0CDC C002 RJMP 0x0CDF
0CDD 24CC CLR R12
0CDE 24DD CLR R13
0CDF 9180011F LDS R24,0x11F
0CE1 3383 CPI R24,0x33
0CE2 F421 BNE 0x0CE7
0CE3 E081 LDI R24,1
0CE4 E090 LDI R25,0
0CE5 015C MOVW R10,R24
0CE6 C002 RJMP 0x0CE9
0CE7 24AA CLR R10
0CE8 24BB CLR R11
0CE9 842D LDD R2,Y+13
0CEA 843E LDD R3,Y+14
0CEB 202E AND R2,R14
0CEC 203F AND R3,R15
0CED 202C AND R2,R12
0CEE 203D AND R3,R13
0CEF 202A AND R2,R10
0CF0 203B AND R3,R11
0CF1 2022 TST R2
0CF2 F419 BNE 0x0CF6
0CF3 2033 TST R3
0CF4 F409 BNE 0x0CF6
0CF5 C2C6 RJMP 0x0FBC
(0127) counter--;
0CF6 840C LDD R0,Y+12
0CF7 940A DEC R0
0CF8 860C STD Y+12,R0
(0128) }
0CF9 C2C2 RJMP 0x0FBC
(0129) else if((buffer[0]!=0XE5)&(buffer[11]==0x0f)&(buffer[12]==0x00))
0CFA 91800115 LDS R24,buffer
0CFC 3E85 CPI R24,0xE5
0CFD F021 BEQ 0x0D02
0CFE E081 LDI R24,1
0CFF E090 LDI R25,0
0D00 017C MOVW R14,R24
0D01 C002 RJMP 0x0D04
0D02 24EE CLR R14
0D03 24FF CLR R15
0D04 91800120 LDS R24,0x120
0D06 308F CPI R24,0xF
0D07 F421 BNE 0x0D0C
0D08 E081 LDI R24,1
0D09 E090 LDI R25,0
0D0A 016C MOVW R12,R24
0D0B C002 RJMP 0x0D0E
0D0C 24CC CLR R12
0D0D 24DD CLR R13
0D0E 90200121 LDS R2,0x121
0D10 2022 TST R2
0D11 F421 BNE 0x0D16
0D12 E081 LDI R24,1
0D13 E090 LDI R25,0
0D14 015C MOVW R10,R24
0D15 C002 RJMP 0x0D18
0D16 24AA CLR R10
0D17 24BB CLR R11
0D18 0117 MOVW R2,R14
0D19 202C AND R2,R12
0D1A 203D AND R3,R13
0D1B 202A AND R2,R10
0D1C 203B AND R3,R11
0D1D 2022 TST R2
0D1E F419 BNE 0x0D22
0D1F 2033 TST R3
0D20 F409 BNE 0x0D22
0D21 C250 RJMP 0x0F72
(0130) {i=buffer[0]-0x40;
0D22 91800115 LDS R24,buffer
0D24 5480 SUBI R24,0x40
0D25 878B STD Y+11,R24
(0131) for(j=0;j<i;j++)
0D26 2400 CLR R0
0D27 860A STD Y+10,R0
0D28 C032 RJMP 0x0D5B
(0132) {
(0133) SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer+(((int)j+1)<<5),32);
0D29 E280 LDI R24,0x20
0D2A E090 LDI R25,0
0D2B 839B STD Y+3,R25
0D2C 838A STD Y+2,R24
0D2D E025 LDI R18,5
0D2E E030 LDI R19,0
0D2F 850A LDD R16,Y+10
0D30 2711 CLR R17
0D31 5F0F SUBI R16,0xFF
0D32 4F1F SBCI R17,0xFF
0D33 940E1D37 CALL lsl16
0D35 0118 MOVW R2,R16
0D36 E185 LDI R24,0x15
0D37 E091 LDI R25,1
0D38 0E28 ADD R2,R24
0D39 1E39 ADC R3,R25
0D3A 8239 STD Y+1,R3
0D3B 8228 STD Y+0,R2
0D3C 8428 LDD R2,Y+8
0D3D 8439 LDD R3,Y+9
0D3E 01C1 MOVW R24,R2
0D3F 9601 ADIW R24,1
0D40 8799 STD Y+9,R25
0D41 8788 STD Y+8,R24
0D42 E085 LDI R24,5
0D43 E090 LDI R25,0
0D44 2444 CLR R4
0D45 2455 CLR R5
0D46 938A ST R24,-Y
0D47 0181 MOVW R16,R2
0D48 0192 MOVW R18,R4
0D49 940E1D3E CALL lsl32
0D4B 01FE MOVW R30,R28
0D4C 8024 LDD R2,Z+4
0D4D 8035 LDD R3,Z+5
0D4E 8046 LDD R4,Z+6
0D4F 8057 LDD R5,Z+7
0D50 0E20 ADD R2,R16
0D51 1E31 ADC R3,R17
0D52 1E42 ADC R4,R18
0D53 1E53 ADC R5,R19
0D54 0181 MOVW R16,R2
0D55 0192 MOVW R18,R4
0D56 940E1567 CALL _SD_read_sector2
0D58 840A LDD R0,Y+10
0D59 9403 INC R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -