📄 mp3_player_06.lss
字号:
175c: 12 82 std Z+2, r1 ; 0x02
#if DEBUG
printf_P(PSTR(" found title tag: %s ]"),LrcStructHead.title);
#else
printf_P(PSTR("\r\nTitle : %s "),LrcStructHead.title);
175e: 89 ee ldi r24, 0xE9 ; 233
1760: 93 e0 ldi r25, 0x03 ; 3
1762: 9f 93 push r25
1764: 8f 93 push r24
1766: 85 eb ldi r24, 0xB5 ; 181
1768: 98 e0 ldi r25, 0x08 ; 8
176a: 2f c0 rjmp .+94 ; 0x17ca <LrcProc+0x248>
#endif
}
/**********************************************************************************************************/
else if(strcomp_noncase("AR:",&buffer[j+1])) /* string compare to check if this is a artist tag */
176c: b3 01 movw r22, r6
176e: 89 e0 ldi r24, 0x09 ; 9
1770: 91 e0 ldi r25, 0x01 ; 1
1772: 0e 94 a9 0a call 0x1552 ; 0x1552 <strcomp_noncase>
1776: 88 23 and r24, r24
1778: 89 f1 breq .+98 ; 0x17dc <LrcProc+0x25a>
{
j+=4; /* count += 4 */
177a: 24 e0 ldi r18, 0x04 ; 4
177c: 30 e0 ldi r19, 0x00 ; 0
177e: a2 0e add r10, r18
1780: b3 1e adc r11, r19
1782: a6 01 movw r20, r12
1784: a0 e0 ldi r26, 0x00 ; 0
1786: b0 e0 ldi r27, 0x00 ; 0
1788: 29 e0 ldi r18, 0x09 ; 9
178a: 34 e0 ldi r19, 0x04 ; 4
while(1) /* store the content */
{
temp = buffer[j++];
178c: fa 01 movw r30, r20
178e: 84 81 ldd r24, Z+4 ; 0x04
1790: 08 94 sec
1792: a1 1c adc r10, r1
1794: b1 1c adc r11, r1
if(temp == 0x0d || temp == 0x0a || temp == ']' || i>(AR_LEN - 2)) /* tag ended */
1796: 8d 30 cpi r24, 0x0D ; 13
1798: 71 f0 breq .+28 ; 0x17b6 <LrcProc+0x234>
179a: 8a 30 cpi r24, 0x0A ; 10
179c: 61 f0 breq .+24 ; 0x17b6 <LrcProc+0x234>
179e: 8d 35 cpi r24, 0x5D ; 93
17a0: 51 f0 breq .+20 ; 0x17b6 <LrcProc+0x234>
17a2: 4f 5f subi r20, 0xFF ; 255
17a4: 5f 4f sbci r21, 0xFF ; 255
17a6: af 30 cpi r26, 0x0F ; 15
17a8: b1 05 cpc r27, r1
17aa: 29 f0 breq .+10 ; 0x17b6 <LrcProc+0x234>
break;
LrcStructHead.artist[i++] = temp;
17ac: f9 01 movw r30, r18
17ae: 81 93 st Z+, r24
17b0: 9f 01 movw r18, r30
17b2: 11 96 adiw r26, 0x01 ; 1
17b4: eb cf rjmp .-42 ; 0x178c <LrcProc+0x20a>
}
LrcStructHead.artist[i] = 0; /* need a 0 to end the string */
17b6: a9 51 subi r26, 0x19 ; 25
17b8: bc 4f sbci r27, 0xFC ; 252
17ba: fd 01 movw r30, r26
17bc: 12 a2 std Z+34, r1 ; 0x22
#if DEBUG
printf_P(PSTR(" found artist tag: %s ]"),LrcStructHead.artist);
#else
printf_P(PSTR("\r\nArtist : %s "),LrcStructHead.artist);
17be: 89 e0 ldi r24, 0x09 ; 9
17c0: 94 e0 ldi r25, 0x04 ; 4
17c2: 9f 93 push r25
17c4: 8f 93 push r24
17c6: 86 ea ldi r24, 0xA6 ; 166
17c8: 98 e0 ldi r25, 0x08 ; 8
17ca: 9f 93 push r25
17cc: 8f 93 push r24
17ce: 0e 94 96 48 call 0x912c ; 0x912c <printf_P>
17d2: 0f 90 pop r0
17d4: 0f 90 pop r0
17d6: 0f 90 pop r0
17d8: 0f 90 pop r0
17da: e6 c2 rjmp .+1484 ; 0x1da8 <LrcProc+0x826>
#endif
}
/**********************************************************************************************************/
else if(strcomp_noncase("OFFSET:",&buffer[j+1])) /* string compare to check if this is a offset tag */
17dc: b3 01 movw r22, r6
17de: 8d e0 ldi r24, 0x0D ; 13
17e0: 91 e0 ldi r25, 0x01 ; 1
17e2: 0e 94 a9 0a call 0x1552 ; 0x1552 <strcomp_noncase>
17e6: 88 23 and r24, r24
17e8: 49 f1 breq .+82 ; 0x183c <LrcProc+0x2ba>
{
j+=8; /* count += 8 */
LrcStructHead.offset = 0; /* default value, in case the tag like this [offset:] */
17ea: 10 92 1a 04 sts 0x041A, r1
17ee: 10 92 19 04 sts 0x0419, r1
LrcStructHead.sign = 1;
17f2: 81 e0 ldi r24, 0x01 ; 1
17f4: 80 93 1b 04 sts 0x041B, r24
17f8: f6 01 movw r30, r12
17fa: 01 c0 rjmp .+2 ; 0x17fe <LrcProc+0x27c>
17fc: 31 96 adiw r30, 0x01 ; 1
#if DEBUG
printf_P(PSTR(" found offset tag: "));
#else
//printf_P(PSTR("\r\n"));
#endif
while(1) /* proceed the offset */
{
temp = buffer[j++];
17fe: 40 85 ldd r20, Z+8 ; 0x08
#if DEBUG
USART_putchar(temp);
#endif
if(temp == ']')break; /* tag end */
1800: 4d 35 cpi r20, 0x5D ; 93
1802: 09 f4 brne .+2 ; 0x1806 <LrcProc+0x284>
1804: e8 c1 rjmp .+976 ; 0x1bd6 <LrcProc+0x654>
if(temp == '-') /* sign */
1806: 4d 32 cpi r20, 0x2D ; 45
1808: 19 f4 brne .+6 ; 0x1810 <LrcProc+0x28e>
{
LrcStructHead.sign = 0;
180a: 10 92 1b 04 sts 0x041B, r1
180e: f6 cf rjmp .-20 ; 0x17fc <LrcProc+0x27a>
continue;
}
LrcStructHead.offset *= 10; /* calculate the value */
1810: 80 91 19 04 lds r24, 0x0419
1814: 90 91 1a 04 lds r25, 0x041A
1818: 9c 01 movw r18, r24
181a: b3 e0 ldi r27, 0x03 ; 3
181c: 22 0f add r18, r18
181e: 33 1f adc r19, r19
1820: ba 95 dec r27
1822: e1 f7 brne .-8 ; 0x181c <LrcProc+0x29a>
1824: 88 0f add r24, r24
1826: 99 1f adc r25, r25
1828: 82 0f add r24, r18
182a: 93 1f adc r25, r19
LrcStructHead.offset += (temp-0x30);
182c: 84 0f add r24, r20
182e: 91 1d adc r25, r1
1830: c0 97 sbiw r24, 0x30 ; 48
1832: 90 93 1a 04 sts 0x041A, r25
1836: 80 93 19 04 sts 0x0419, r24
183a: e0 cf rjmp .-64 ; 0x17fc <LrcProc+0x27a>
}
#if DEBUG
printf_P(PSTR("the value in the structure is : %d"),LrcStructHead.offset);
#endif
}
/**********************************************************************************************************/
else if(strcomp_noncase("BY:",&buffer[j+1])) /* string compare to check if this is a By tag */
183c: b3 01 movw r22, r6
183e: 85 e1 ldi r24, 0x15 ; 21
1840: 91 e0 ldi r25, 0x01 ; 1
1842: 0e 94 a9 0a call 0x1552 ; 0x1552 <strcomp_noncase>
1846: 88 23 and r24, r24
1848: a1 f0 breq .+40 ; 0x1872 <LrcProc+0x2f0>
{ /* but we do not need this tag */
j+=4;
184a: 24 e0 ldi r18, 0x04 ; 4
184c: 30 e0 ldi r19, 0x00 ; 0
184e: a2 0e add r10, r18
1850: b3 1e adc r11, r19
1852: f6 01 movw r30, r12
#if DEBUG
printf_P(PSTR(" found by tag: "));
#endif
while(1)
{
temp = buffer[j++];
1854: 84 81 ldd r24, Z+4 ; 0x04
1856: 08 94 sec
1858: a1 1c adc r10, r1
185a: b1 1c adc r11, r1
#if DEBUG
USART_putchar(temp);
#endif
if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
185c: 8d 30 cpi r24, 0x0D ; 13
185e: 09 f4 brne .+2 ; 0x1862 <LrcProc+0x2e0>
1860: a3 c2 rjmp .+1350 ; 0x1da8 <LrcProc+0x826>
1862: 8a 30 cpi r24, 0x0A ; 10
1864: 09 f4 brne .+2 ; 0x1868 <LrcProc+0x2e6>
1866: a0 c2 rjmp .+1344 ; 0x1da8 <LrcProc+0x826>
1868: 31 96 adiw r30, 0x01 ; 1
186a: 8d 35 cpi r24, 0x5D ; 93
186c: 09 f4 brne .+2 ; 0x1870 <LrcProc+0x2ee>
186e: 9c c2 rjmp .+1336 ; 0x1da8 <LrcProc+0x826>
1870: f1 cf rjmp .-30 ; 0x1854 <LrcProc+0x2d2>
}
}
/**********************************************************************************************************/
else if(strcomp_noncase("AL:",&buffer[j+1])) /* string compare to check if this is a album tag */
1872: b3 01 movw r22, r6
1874: 89 e1 ldi r24, 0x19 ; 25
1876: 91 e0 ldi r25, 0x01 ; 1
1878: 0e 94 a9 0a call 0x1552 ; 0x1552 <strcomp_noncase>
187c: 88 23 and r24, r24
187e: 01 f1 breq .+64 ; 0x18c0 <LrcProc+0x33e>
{
j+=4;
1880: 64 e0 ldi r22, 0x04 ; 4
1882: 70 e0 ldi r23, 0x00 ; 0
1884: a6 0e add r10, r22
1886: b7 1e adc r11, r23
#if DEBUG
printf_P(PSTR(" found al tag: "));
#else
printf_P(PSTR("\r\nAlbum : "));
1888: 8a e9 ldi r24, 0x9A ; 154
188a: 98 e0 ldi r25, 0x08 ; 8
188c: 9f 93 push r25
188e: 8f 93 push r24
1890: 0e 94 96 48 call 0x912c ; 0x912c <printf_P>
1894: 0f 90 pop r0
1896: 0f 90 pop r0
#endif
while(1)
{
temp = buffer[j++];
1898: f6 01 movw r30, r12
189a: 84 81 ldd r24, Z+4 ; 0x04
189c: 08 94 sec
189e: a1 1c adc r10, r1
18a0: b1 1c adc r11, r1
if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
18a2: 8d 30 cpi r24, 0x0D ; 13
18a4: 09 f4 brne .+2 ; 0x18a8 <LrcProc+0x326>
18a6: 80 c2 rjmp .+1280 ; 0x1da8 <LrcProc+0x826>
18a8: 8a 30 cpi r24, 0x0A ; 10
18aa: 09 f4 brne .+2 ; 0x18ae <LrcProc+0x32c>
18ac: 7d c2 rjmp .+1274 ; 0x1da8 <LrcProc+0x826>
18ae: 08 94 sec
18b0: c1 1c adc r12, r1
18b2: d1 1c adc r13, r1
18b4: 8d 35 cpi r24, 0x5D ; 93
18b6: 09 f4 brne .+2 ; 0x18ba <LrcProc+0x338>
18b8: 77 c2 rjmp .+1262 ; 0x1da8 <LrcProc+0x826>
USART_putchar(temp);
18ba: 0e 94 fa 36 call 0x6df4 ; 0x6df4 <USART_putchar>
18be: ec cf rjmp .-40 ; 0x1898 <LrcProc+0x316>
}
}
/**********************************************************************************************************/
else /* otherwise this must the time tag or other not recognize tag */
{
j+=1;
18c0: 08 94 sec
18c2: a1 1c adc r10, r1
18c4: b1 1c adc r11, r1
/****************************************************************/
if(sector == totalsect && j == leftbytes + 1) goto end; /* if the file is end */
18c6: f9 85 ldd r31, Y+9 ; 0x09
18c8: 28 85 ldd r18, Y+8 ; 0x08
18ca: f2 17 cp r31, r18
18cc: 39 f4 brne .+14 ; 0x18dc <LrcProc+0x35a>
18ce: 8e 81 ldd r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -