📄 mp3_player_06.lss
字号:
1148: 94 01 movw r18, r8
114a: 40 e0 ldi r20, 0x00 ; 0
114c: 50 e0 ldi r21, 0x00 ; 0
114e: c8 01 movw r24, r16
1150: b7 01 movw r22, r14
1152: 0e 94 42 14 call 0x2884 ; 0x2884 <FAT_LoadPartCluster>
1156: 88 23 and r24, r24
1158: 71 f0 breq .+28 ; 0x1176 <__stack+0x77>
115a: ac c2 rjmp .+1368 ; 0x16b4 <__stack+0x5b5>
{
#if DEBUG
printf_P(PSTR("\r\nERROR: Faild to load a sector"));
#endif
free(buffer);
return 1;
}
}
else /* else just read the next part of the cluster */
{
part ++; /* part ++ */
115c: 2a 85 ldd r18, Y+10 ; 0x0a
115e: 2f 5f subi r18, 0xFF ; 255
1160: 2a 87 std Y+10, r18 ; 0x0a
if(FAT_LoadPartCluster(p,part,buffer))
1162: 42 2f mov r20, r18
1164: 55 27 eor r21, r21
1166: 94 01 movw r18, r8
1168: c8 01 movw r24, r16
116a: b7 01 movw r22, r14
116c: 0e 94 42 14 call 0x2884 ; 0x2884 <FAT_LoadPartCluster>
1170: 88 23 and r24, r24
1172: 11 f0 breq .+4 ; 0x1178 <__stack+0x79>
1174: 9f c2 rjmp .+1342 ; 0x16b4 <__stack+0x5b5>
{
#if DEBUG
printf_P(PSTR("\r\nERROR: Faild to load a sector"));
#endif
free(buffer);
return 1;
1176: 1a 86 std Y+10, r1 ; 0x0a
}
}
sector ++; /* sector count +=1 */
1178: 39 85 ldd r19, Y+9 ; 0x09
117a: 3f 5f subi r19, 0xFF ; 255
117c: 39 87 std Y+9, r19 ; 0x09
117e: aa 24 eor r10, r10
1180: bb 24 eor r11, r11
1182: 1a 82 std Y+2, r1 ; 0x02
1184: 19 82 std Y+1, r1 ; 0x01
1186: 44 24 eor r4, r4
1188: 55 24 eor r5, r5
118a: 66 24 eor r6, r6
118c: 77 24 eor r7, r7
118e: 1c 86 std Y+12, r1 ; 0x0c
1190: 1b 86 std Y+11, r1 ; 0x0b
1192: 05 c0 rjmp .+10 ; 0x119e <__stack+0x9f>
1194: 62 e0 ldi r22, 0x02 ; 2
1196: 70 e0 ldi r23, 0x00 ; 0
1198: 7a 83 std Y+2, r23 ; 0x02
119a: 69 83 std Y+1, r22 ; 0x01
119c: 1d 82 std Y+5, r1 ; 0x05
j = 0; /* loop value clear to 0*/
}
/********************************************************/
min = 0; /* clear the temp variable for time to 0 */
sec = 0;
ms = 0;
i = 0; /* for tag use, to ditermin tag like [XX:XX] & [XX:XX:XX] */
while(1)
{
temp = buffer[j++];
119e: f4 01 movw r30, r8
11a0: ea 0d add r30, r10
11a2: fb 1d adc r31, r11
11a4: d0 80 ld r13, Z
11a6: 08 94 sec
11a8: a1 1c adc r10, r1
11aa: b1 1c adc r11, r1
#if DEBUG
USART_putchar(temp);
#endif
/**********************************************************/
if(sector == totalsect && j == leftbytes + 1) goto end; /* file end */
11ac: 79 85 ldd r23, Y+9 ; 0x09
11ae: 88 85 ldd r24, Y+8 ; 0x08
11b0: 78 17 cp r23, r24
11b2: 39 f4 brne .+14 ; 0x11c2 <__stack+0xc3>
11b4: 8e 81 ldd r24, Y+6 ; 0x06
11b6: 9f 81 ldd r25, Y+7 ; 0x07
11b8: 01 96 adiw r24, 0x01 ; 1
11ba: a8 16 cp r10, r24
11bc: b9 06 cpc r11, r25
11be: 09 f4 brne .+2 ; 0x11c2 <__stack+0xc3>
11c0: 09 c2 rjmp .+1042 ; 0x15d4 <__stack+0x4d5>
if(j == 512) /* need to read next sector */
11c2: 90 e0 ldi r25, 0x00 ; 0
11c4: a9 16 cp r10, r25
11c6: 92 e0 ldi r25, 0x02 ; 2
11c8: b9 06 cpc r11, r25
11ca: 09 f0 breq .+2 ; 0x11ce <__stack+0xcf>
11cc: 4b c0 rjmp .+150 ; 0x1264 <__stack+0x165>
{
if(part == (SectorsPerClust - 1)) /* if need to read next cluster */
11ce: aa 85 ldd r26, Y+10 ; 0x0a
11d0: 2a 2f mov r18, r26
11d2: 33 27 eor r19, r19
11d4: 80 91 5a 07 lds r24, 0x075A
11d8: 90 91 5b 07 lds r25, 0x075B
11dc: 01 97 sbiw r24, 0x01 ; 1
11de: 28 17 cp r18, r24
11e0: 39 07 cpc r19, r25
11e2: 69 f5 brne .+90 ; 0x123e <__stack+0x13f>
{
//p=FAT_NextCluster_NEW(p);//读下一簇数据 //read next cluster
p=FAT_NextCluster(p);
11e4: c8 01 movw r24, r16
11e6: b7 01 movw r22, r14
11e8: 0e 94 7e 14 call 0x28fc ; 0x28fc <FAT_NextCluster>
11ec: 7b 01 movw r14, r22
11ee: 8c 01 movw r16, r24
if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff))//如果无后续簇则结束, //no more cluster
11f0: 6f 3f cpi r22, 0xFF ; 255
11f2: bf ef ldi r27, 0xFF ; 255
11f4: 7b 07 cpc r23, r27
11f6: bf ef ldi r27, 0xFF ; 255
11f8: 8b 07 cpc r24, r27
11fa: bf e0 ldi r27, 0x0F ; 15
11fc: 9b 07 cpc r25, r27
11fe: 09 f4 brne .+2 ; 0x1202 <__stack+0x103>
1200: e9 c1 rjmp .+978 ; 0x15d4 <__stack+0x4d5>
1202: 68 5f subi r22, 0xF8 ; 248
1204: 7f 4f sbci r23, 0xFF ; 255
1206: 8f 4f sbci r24, 0xFF ; 255
1208: 9f 40 sbci r25, 0x0F ; 15
120a: 09 f4 brne .+2 ; 0x120e <__stack+0x10f>
120c: e3 c1 rjmp .+966 ; 0x15d4 <__stack+0x4d5>
120e: 80 91 c5 07 lds r24, 0x07C5
1212: 88 23 and r24, r24
1214: 51 f4 brne .+20 ; 0x122a <__stack+0x12b>
1216: ff ef ldi r31, 0xFF ; 255
1218: ef 16 cp r14, r31
121a: ff ef ldi r31, 0xFF ; 255
121c: ff 06 cpc r15, r31
121e: f0 e0 ldi r31, 0x00 ; 0
1220: 0f 07 cpc r16, r31
1222: f0 e0 ldi r31, 0x00 ; 0
1224: 1f 07 cpc r17, r31
1226: 09 f4 brne .+2 ; 0x122a <__stack+0x12b>
1228: d5 c1 rjmp .+938 ; 0x15d4 <__stack+0x4d5>
{
#if DEBUG
printf_P(PSTR("\r\nNo next cluster or read next cluster error"));
#endif
goto end;
}
part = 0; /* clear the part count */
if(FAT_LoadPartCluster(p,part,buffer))
122a: 94 01 movw r18, r8
122c: 40 e0 ldi r20, 0x00 ; 0
122e: 50 e0 ldi r21, 0x00 ; 0
1230: c8 01 movw r24, r16
1232: b7 01 movw r22, r14
1234: 0e 94 42 14 call 0x2884 ; 0x2884 <FAT_LoadPartCluster>
1238: 88 23 and r24, r24
123a: 71 f0 breq .+28 ; 0x1258 <__stack+0x159>
123c: 3b c2 rjmp .+1142 ; 0x16b4 <__stack+0x5b5>
{
#if DEBUG
printf_P(PSTR("\r\nERROR: Faild to load a sector"));
#endif
free(buffer);
return 1;
}
}
else /* else just read the next part of the cluster */
{
part ++; /* part ++ */
123e: 2a 85 ldd r18, Y+10 ; 0x0a
1240: 2f 5f subi r18, 0xFF ; 255
1242: 2a 87 std Y+10, r18 ; 0x0a
if(FAT_LoadPartCluster(p,part,buffer))
1244: 42 2f mov r20, r18
1246: 55 27 eor r21, r21
1248: 94 01 movw r18, r8
124a: c8 01 movw r24, r16
124c: b7 01 movw r22, r14
124e: 0e 94 42 14 call 0x2884 ; 0x2884 <FAT_LoadPartCluster>
1252: 88 23 and r24, r24
1254: 11 f0 breq .+4 ; 0x125a <__stack+0x15b>
1256: 2e c2 rjmp .+1116 ; 0x16b4 <__stack+0x5b5>
{
#if DEBUG
printf_P(PSTR("\r\nERROR: Faild to load a sector"));
#endif
free(buffer);
return 1;
1258: 1a 86 std Y+10, r1 ; 0x0a
}
}
sector ++; /* sector count +=1 */
125a: 39 85 ldd r19, Y+9 ; 0x09
125c: 3f 5f subi r19, 0xFF ; 255
125e: 39 87 std Y+9, r19 ; 0x09
1260: aa 24 eor r10, r10
1262: bb 24 eor r11, r11
j = 0; /* loop value clear to 0*/
}
/***********************************************/
if((temp < '0' || temp > '9') && temp != ':' && temp != '.')break; /* end or not a leagal ch*/
1264: 8d 2d mov r24, r13
1266: 80 53 subi r24, 0x30 ; 48
1268: 8b 30 cpi r24, 0x0B ; 11
126a: 28 f0 brcs .+10 ; 0x1276 <__stack+0x177>
126c: 6e e2 ldi r22, 0x2E ; 46
126e: d6 16 cp r13, r22
1270: 09 f4 brne .+2 ; 0x1274 <__stack+0x175>
1272: 90 cf rjmp .-224 ; 0x1194 <__stack+0x95>
1274: 63 c0 rjmp .+198 ; 0x133c <__stack+0x23d>
if(temp == ':'){i=1;continue;}
1276: 7a e3 ldi r23, 0x3A ; 58
1278: d7 16 cp r13, r23
127a: 29 f4 brne .+10 ; 0x1286 <__stack+0x187>
127c: 81 e0 ldi r24, 0x01 ; 1
127e: 90 e0 ldi r25, 0x00 ; 0
1280: 9a 83 std Y+2, r25 ; 0x02
1282: 89 83 std Y+1, r24 ; 0x01
1284: 8c cf rjmp .-232 ; 0x119e <__stack+0x9f>
if(temp == '.'){i=2;mscnt = 0;continue;}
1286: 9e e2 ldi r25, 0x2E ; 46
1288: d9 16 cp r13, r25
128a: 09 f4 brne .+2 ; 0x128e <__stack+0x18f>
128c: 83 cf rjmp .-250 ; 0x1194 <__stack+0x95>
/* calculate the value */
if(i==0)min = min*10 + (temp-0x30);
128e: a9 81 ldd r26, Y+1 ; 0x01
1290: ba 81 ldd r27, Y+2 ; 0x02
1292: ab 2b or r26, r27
1294: 89 f4 brne .+34 ; 0x12b8 <__stack+0x1b9>
1296: c2 01 movw r24, r4
1298: e3 e0 ldi r30, 0x03 ; 3
129a: 88 0f add r24, r24
129c: 99 1f adc r25, r25
129e: ea 95 dec r30
12a0: e1 f7 brne .-8 ; 0x129a <__stack+0x19b>
12a2: 44 0c add r4, r4
12a4: 55 1c adc r5, r5
12a6: 48 0e add r4, r24
12a8: 59 1e adc r5, r25
12aa: 4d 0c add r4, r13
12ac: 51 1c adc r5, r1
12ae: e0 ed ldi r30, 0xD0 ; 208
12b0: ff ef ldi r31, 0xFF ; 255
12b2: 4e 0e add r4, r30
12b4: 5f 1e adc r5, r31
12b6: 73 cf rjmp .-282 ; 0x119e <__stack+0x9f>
else if(i==1)sec = sec*10 + (temp-0x30);
12b8: 29 81 ldd r18, Y+1 ; 0x01
12ba: 3a 81 ldd r19, Y+2 ; 0x02
12bc: 21 30 cpi r18, 0x01 ; 1
12be: 31 05 cpc r19, r1
12c0: 89 f4 brne .+34 ; 0x12e4 <__stack+0x1e5>
12c2: c3 01 movw r24, r6
12c4: 63 e0 ldi r22, 0x03 ; 3
12c6: 88 0f add r24, r24
12c8: 99 1f adc r25, r25
12ca: 6a 95 dec r22
12cc: e1 f7 brne .-8 ; 0x12c6 <__stack+0x1c7>
12ce: 66 0c add r6, r6
12d0: 77 1c adc r7, r7
12d2: 68 0e add r6, r24
12d4: 79 1e adc r7, r25
12d6: 6d 0c add r6, r13
12d8: 71 1c adc r7, r1
12da: 60 ed ldi r22, 0xD0 ; 208
12dc: 7f ef ldi r23, 0xFF ; 255
12de: 66 0e add r6, r22
12e0: 77 1e adc r7, r23
12e2: 5d cf rjmp .-326 ; 0x119e <__stack+0x9f>
else
{
if(mscnt == 0)
12e4: 7d 81 ldd r23, Y+5 ; 0x05
12e6: 77 23 and r23, r23
12e8: 69 f4 brne .+26 ; 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -