📄 fat.lis
字号:
01D6 .dbline 80
01D6 ;
01D6 ; SD_start_read(mulu_Clus_number++);
01D6 2980 ldd R2,y+1
01D8 3A80 ldd R3,y+2
01DA C101 movw R24,R2
01DC 0196 adiw R24,1
01DE 9A83 std y+2,R25
01E0 8983 std y+1,R24
01E2 4424 clr R4
01E4 5524 clr R5
01E6 8101 movw R16,R2
01E8 9201 movw R18,R4
01EA 0E940000 xcall _SD_start_read
01EE .dbline 81
01EE ; Read_number=16;
01EE 80E1 ldi R24,16
01F0 A82E mov R10,R24
01F2 52C0 xjmp L26
01F4 L25:
01F4 .dbline 83
01F4 ; while(Read_number--)
01F4 ; {
01F4 .dbline 85
01F4 ;
01F4 ; SD_get_date(buffer,32);
01F4 20E2 ldi R18,32
01F6 30E0 ldi R19,0
01F8 00E0 ldi R16,<_buffer
01FA 10E0 ldi R17,>_buffer
01FC 0E940000 xcall _SD_get_date
0200 .dbline 86
0200 ; if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
0200 80910000 lds R24,_buffer
0204 853E cpi R24,229
0206 19F0 breq L33
0208 41E0 ldi R20,1
020A 50E0 ldi R21,0
020C 02C0 xjmp L34
020E L33:
020E 4427 clr R20
0210 5527 clr R21
0212 L34:
0212 80910800 lds R24,_buffer+8
0216 8D34 cpi R24,77
0218 19F4 brne L35
021A 61E0 ldi R22,1
021C 70E0 ldi R23,0
021E 02C0 xjmp L36
0220 L35:
0220 6627 clr R22
0222 7727 clr R23
0224 L36:
0224 80910900 lds R24,_buffer+9
0228 8035 cpi R24,80
022A 21F4 brne L37
022C 81E0 ldi R24,1
022E 90E0 ldi R25,0
0230 7C01 movw R14,R24
0232 02C0 xjmp L38
0234 L37:
0234 EE24 clr R14
0236 FF24 clr R15
0238 L38:
0238 80910A00 lds R24,_buffer+10
023C 8333 cpi R24,51
023E 21F4 brne L39
0240 81E0 ldi R24,1
0242 90E0 ldi R25,0
0244 6C01 movw R12,R24
0246 02C0 xjmp L40
0248 L39:
0248 CC24 clr R12
024A DD24 clr R13
024C L40:
024C 1A01 movw R2,R20
024E 2622 and R2,R22
0250 3722 and R3,R23
0252 2E20 and R2,R14
0254 3F20 and R3,R15
0256 2C20 and R2,R12
0258 3D20 and R3,R13
025A 2220 tst R2
025C 11F4 brne X0
025E 3320 tst R3
0260 31F0 breq L28
0262 X0:
0262 .dbline 87
0262 ; {
0262 .dbline 89
0262 ;
0262 ; MP3_all_number++;
0262 80910000 lds R24,_MP3_all_number
0266 8F5F subi R24,255 ; addi 1
0268 80930000 sts _MP3_all_number,R24
026C .dbline 90
026C ; }
026C 15C0 xjmp L29
026E L28:
026E .dbline 91
026E ; else if(buffer[0]==0)
026E 20900000 lds R2,_buffer
0272 2220 tst R2
0274 89F4 brne L41
0276 .dbline 92
0276 ; {
0276 06C0 xjmp L44
0278 L43:
0278 .dbline 94
0278 .dbline 96
0278 20E2 ldi R18,32
027A 30E0 ldi R19,0
027C 00E0 ldi R16,<_buffer
027E 10E0 ldi R17,>_buffer
0280 0E940000 xcall _SD_get_date
0284 .dbline 97
0284 L44:
0284 .dbline 93
0284 ; while(Read_number--)
0284 2A2C mov R2,R10
0286 3324 clr R3
0288 822D mov R24,R2
028A 8150 subi R24,1
028C A82E mov R10,R24
028E 2220 tst R2
0290 99F7 brne L43
0292 .dbline 98
0292 ; {
0292 ;
0292 ; SD_get_date(buffer,32);
0292 ; }
0292 ; counter_over=1;
0292 0024 clr R0
0294 0394 inc R0
0296 0882 std y+0,R0
0298 .dbline 99
0298 ; }
0298 L41:
0298 L29:
0298 .dbline 101
0298 L26:
0298 .dbline 82
0298 2A2C mov R2,R10
029A 3324 clr R3
029C 822D mov R24,R2
029E 8150 subi R24,1
02A0 A82E mov R10,R24
02A2 2220 tst R2
02A4 09F0 breq X1
02A6 A6CF xjmp L25
02A8 X1:
02A8 .dbline 102
02A8 L23:
02A8 .dbline 77
02A8 0880 ldd R0,y+0
02AA 0020 tst R0
02AC 09F4 brne X2
02AE 93CF xjmp L22
02B0 X2:
02B0 .dbline -2
02B0 L20:
02B0 2396 adiw R28,3
02B2 0E940000 xcall pop_gset5
02B6 .dbline 0 ; func end
02B6 0895 ret
02B8 .dbsym l mulu_Clus_number 1 i
02B8 .dbsym l counter_over 0 c
02B8 .dbsym r Read_number 10 c
02B8 .dbend
02B8 .dbfunc e MP3_Directory _MP3_Directory fV
02B8 ; counter -> y+12
02B8 ; mulu_Clus_number -> y+4
02B8 ; i -> y+11
02B8 ; j -> y+10
02B8 ; Read_number -> y+8
02B8 ; number -> R10
.even
02B8 _MP3_Directory::
02B8 0E940000 xcall push_gset5
02BC A02E mov R10,R16
02BE 6197 sbiw R28,17
02C0 .dbline -1
02C0 .dbline 108
02C0 ;
02C0 ; }
02C0 ; }
02C0 ;
02C0 ; }
02C0 ;
02C0 ; //=======================================================================
02C0 ; void MP3_Directory(uint8 number)
02C0 ; {
02C0 .dbline 114
02C0 ; uint8 i,j;
02C0 ; uint8 counter;
02C0 ; uint16 Read_number;
02C0 ; uint32 mulu_Clus_number;
02C0 ;
02C0 ; Read_number=0;
02C0 0024 clr R0
02C2 1124 clr R1
02C4 1986 std y+9,R1
02C6 0886 std y+8,R0
02C8 .dbline 115
02C8 ; counter=number;
02C8 AC86 std y+12,R10
02CA .dbline 116
02CA ; mp3_info.Name_number=0;
02CA 2224 clr R2
02CC 20923400 sts _mp3_info+52,R2
02D0 .dbline 117
02D0 ; mulu_Clus_number=fat_info.Firstgengmulu;
02D0 20900300 lds R2,_fat_info+3
02D4 30900400 lds R3,_fat_info+3+1
02D8 4424 clr R4
02DA 5524 clr R5
02DC FE01 movw R30,R28
02DE 2482 std z+4,R2
02E0 3582 std z+5,R3
02E2 4682 std z+6,R4
02E4 5782 std z+7,R5
02E6 .dbline 118
02E6 ; mulu_Clus_number=mulu_Clus_number<<9;
02E6 89E0 ldi R24,9
02E8 90E0 ldi R25,0
02EA FE01 movw R30,R28
02EC 2480 ldd R2,z+4
02EE 3580 ldd R3,z+5
02F0 4680 ldd R4,z+6
02F2 5780 ldd R5,z+7
02F4 8A93 st -y,R24
02F6 8101 movw R16,R2
02F8 9201 movw R18,R4
02FA 0E940000 xcall lsl32
02FE FE01 movw R30,R28
0300 0483 std z+4,R16
0302 1583 std z+5,R17
0304 2683 std z+6,R18
0306 3783 std z+7,R19
0308 27C3 xjmp L50
030A L49:
030A .dbline 122
030A ;
030A ;
030A ; while(counter)
030A ; {
030A .dbline 123
030A ; SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer,32);
030A 80E2 ldi R24,32
030C 90E0 ldi R25,0
030E 9B83 std y+3,R25
0310 8A83 std y+2,R24
0312 80E0 ldi R24,<_buffer
0314 90E0 ldi R25,>_buffer
0316 9983 std y+1,R25
0318 8883 std y+0,R24
031A 2884 ldd R2,y+8
031C 3984 ldd R3,y+9
031E C101 movw R24,R2
0320 0196 adiw R24,1
0322 9987 std y+9,R25
0324 8887 std y+8,R24
0326 85E0 ldi R24,5
0328 90E0 ldi R25,0
032A 4424 clr R4
032C 5524 clr R5
032E 8A93 st -y,R24
0330 8101 movw R16,R2
0332 9201 movw R18,R4
0334 0E940000 xcall lsl32
0338 FE01 movw R30,R28
033A 2480 ldd R2,z+4
033C 3580 ldd R3,z+5
033E 4680 ldd R4,z+6
0340 5780 ldd R5,z+7
0342 200E add R2,R16
0344 311E adc R3,R17
0346 421E adc R4,R18
0348 531E adc R5,R19
034A 8101 movw R16,R2
034C 9201 movw R18,R4
034E 0E940000 xcall _SD_read_sector2
0352 .dbline 125
0352 ;
0352 ; if(counter>1)
0352 81E0 ldi R24,1
0354 0C84 ldd R0,y+12
0356 8015 cp R24,R0
0358 08F0 brlo X10
035A 3CC0 xjmp L52
035C X10:
035C .dbline 126
035C ; {if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
035C .dbline 126
035C 80910000 lds R24,_buffer
0360 853E cpi R24,229
0362 29F0 breq L59
0364 81E0 ldi R24,1
0366 90E0 ldi R25,0
0368 9E87 std y+14,R25
036A 8D87 std y+13,R24
036C 04C0 xjmp L60
036E L59:
036E 0024 clr R0
0370 1124 clr R1
0372 1E86 std y+14,R1
0374 0D86 std y+13,R0
0376 L60:
0376 80910800 lds R24,_buffer+8
037A 8D34 cpi R24,77
037C 21F4 brne L61
037E 81E0 ldi R24,1
0380 90E0 ldi R25,0
0382 7C01 movw R14,R24
0384 02C0 xjmp L62
0386 L61:
0386 EE24 clr R14
0388 FF24 clr R15
038A L62:
038A 80910900 lds R24,_buffer+9
038E 8035 cpi R24,80
0390 21F4 brne L63
0392 81E0 ldi R24,1
0394 90E0 ldi R25,0
0396 6C01 movw R12,R24
0398 02C0 xjmp L64
039A L63:
039A CC24 clr R12
039C DD24 clr R13
039E L64:
039E 80910A00 lds R24,_buffer+10
03A2 8333 cpi R24,51
03A4 21F4 brne L65
03A6 81E0 ldi R24,1
03A8 90E0 ldi R25,0
03AA 5C01 movw R10,R24
03AC 02C0 xjmp L66
03AE L65:
03AE AA24 clr R10
03B0 BB24 clr R11
03B2 L66:
03B2 2D84 ldd R2,y+13
03B4 3E84 ldd R3,y+14
03B6 2E20 and R2,R14
03B8 3F20 and R3,R15
03BA 2C20 and R2,R12
03BC 3D20 and R3,R13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -