📄 mp3_player_06.lss
字号:
13a9: c0 00 00 01 02 02 01 00 20 e0 20 20 c0 00 08 0f ........ . ....
13b9: 0a 02 01 00 00 c0 20 20 e0 00 00 01 02 0a 0f 08 ...... ........
13c9: 20 e0 40 20 20 00 02 03 02 00 00 00 00 60 a0 a0 .@ ........`..
13d9: 20 00 00 02 02 02 03 00 00 20 f8 20 00 00 00 00 ........ . ....
13e9: 01 02 02 00 20 e0 00 20 e0 00 00 01 02 02 03 02 .... .. ........
13f9: 20 e0 20 80 60 20 00 00 03 01 00 00 60 80 e0 80 . .` ......`...
1409: 60 00 00 03 00 03 00 00 20 60 80 60 20 00 02 03 `....... `.` ...
1419: 00 03 02 00 20 e0 20 80 60 20 08 08 07 01 00 00 .... . .` ......
1429: 00 20 a0 60 20 00 00 02 03 02 02 00 00 00 20 de . .` ......... .
1439: 02 00 00 00 00 07 04 00 00 00 00 ff 00 00 00 00 ................
1449: 00 0f 00 00 00 02 de 20 00 00 00 04 07 00 00 00 ....... ........
1459: 02 01 02 04 04 02 00 00 00 00 00 00 00 .............
00001466 <__ctors_end>:
1466: 11 24 eor r1, r1
1468: 1f be out 0x3f, r1 ; 63
146a: cf ef ldi r28, 0xFF ; 255
146c: d0 e1 ldi r29, 0x10 ; 16
146e: de bf out 0x3e, r29 ; 62
1470: cd bf out 0x3d, r28 ; 61
00001472 <__do_copy_data>:
1472: 11 e0 ldi r17, 0x01 ; 1
1474: a0 e0 ldi r26, 0x00 ; 0
1476: b1 e0 ldi r27, 0x01 ; 1
1478: e0 e2 ldi r30, 0x20 ; 32
147a: f9 e9 ldi r31, 0x99 ; 153
147c: 02 c0 rjmp .+4 ; 0x1482 <.do_copy_data_start>
0000147e <.do_copy_data_loop>:
147e: 05 90 lpm r0, Z+
1480: 0d 92 st X+, r0
00001482 <.do_copy_data_start>:
1482: a0 36 cpi r26, 0x60 ; 96
1484: b1 07 cpc r27, r17
1486: d9 f7 brne .-10 ; 0x147e <.do_copy_data_loop>
00001488 <__do_clear_bss>:
1488: 1a e0 ldi r17, 0x0A ; 10
148a: a0 e6 ldi r26, 0x60 ; 96
148c: b1 e0 ldi r27, 0x01 ; 1
148e: 01 c0 rjmp .+2 ; 0x1492 <.do_clear_bss_start>
00001490 <.do_clear_bss_loop>:
1490: 1d 92 st X+, r1
00001492 <.do_clear_bss_start>:
1492: ae 31 cpi r26, 0x1E ; 30
1494: b1 07 cpc r27, r17
1496: e1 f7 brne .-8 ; 0x1490 <.do_clear_bss_loop>
1498: 0e 94 24 19 call 0x3248 ; 0x3248 <main>
149c: 0c 94 8f 4c jmp 0x991e ; 0x991e <_exit>
000014a0 <__bad_interrupt>:
14a0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000014a4 <ClearTrackInfo>:
uint8 track[128]; /* stroe the information of songs (bit set indicate songs has been played) */
void ClearTrackInfo() /* cleare the array track[128] */
{
14a4: 80 e0 ldi r24, 0x00 ; 0
14a6: 90 e0 ldi r25, 0x00 ; 0
uint8 i;
for(i=0;i<128;i++)track[i] = 0;
14a8: e8 2f mov r30, r24
14aa: ff 27 eor r31, r31
14ac: e4 5e subi r30, 0xE4 ; 228
14ae: fb 4f sbci r31, 0xFB ; 251
14b0: 10 82 st Z, r1
14b2: 01 96 adiw r24, 0x01 ; 1
14b4: 80 38 cpi r24, 0x80 ; 128
14b6: 91 05 cpc r25, r1
14b8: b9 f7 brne .-18 ; 0x14a8 <ClearTrackInfo+0x4>
14ba: 08 95 ret
000014bc <SetTrack>:
}
uint8 SetTrack(uint16 songs)/* set the track bit, return 1 means the song has been played */
{
14bc: 01 97 sbiw r24, 0x01 ; 1
uint8 byte_offset;
uint8 bit_offset;
songs--;
byte_offset = songs/8;
bit_offset = songs%8;
if(track[byte_offset] & (1<<bit_offset))return 1;
14be: 9c 01 movw r18, r24
14c0: 43 e0 ldi r20, 0x03 ; 3
14c2: 36 95 lsr r19
14c4: 27 95 ror r18
14c6: 4a 95 dec r20
14c8: e1 f7 brne .-8 ; 0x14c2 <SetTrack+0x6>
14ca: e2 2f mov r30, r18
14cc: ff 27 eor r31, r31
14ce: e4 5e subi r30, 0xE4 ; 228
14d0: fb 4f sbci r31, 0xFB ; 251
14d2: 40 81 ld r20, Z
14d4: 9c 01 movw r18, r24
14d6: 27 70 andi r18, 0x07 ; 7
14d8: 30 70 andi r19, 0x00 ; 0
14da: 84 2f mov r24, r20
14dc: 99 27 eor r25, r25
14de: 02 2e mov r0, r18
14e0: 02 c0 rjmp .+4 ; 0x14e6 <SetTrack+0x2a>
14e2: 95 95 asr r25
14e4: 87 95 ror r24
14e6: 0a 94 dec r0
14e8: e2 f7 brpl .-8 ; 0x14e2 <SetTrack+0x26>
14ea: 80 ff sbrs r24, 0
14ec: 03 c0 rjmp .+6 ; 0x14f4 <SetTrack+0x38>
14ee: 81 e0 ldi r24, 0x01 ; 1
14f0: 90 e0 ldi r25, 0x00 ; 0
14f2: 08 95 ret
else
{
track[byte_offset] |= 1<<bit_offset;
14f4: 81 e0 ldi r24, 0x01 ; 1
14f6: 90 e0 ldi r25, 0x00 ; 0
14f8: 02 c0 rjmp .+4 ; 0x14fe <SetTrack+0x42>
14fa: 88 0f add r24, r24
14fc: 99 1f adc r25, r25
14fe: 2a 95 dec r18
1500: e2 f7 brpl .-8 ; 0x14fa <SetTrack+0x3e>
1502: 48 2b or r20, r24
1504: 40 83 st Z, r20
1506: 80 e0 ldi r24, 0x00 ; 0
1508: 90 e0 ldi r25, 0x00 ; 0
return 0;
}
}
150a: 08 95 ret
0000150c <Delay>:
/*void nextline()
{
USART_putchar(0x0d);
USART_putchar(0x0a);
}*/
void Delay(uint16 n)//延时
{
150c: 01 c0 rjmp .+2 ; 0x1510 <Delay+0x4>
while(n--)asm("nop");
150e: 00 00 nop
1510: 01 97 sbiw r24, 0x01 ; 1
1512: 2f ef ldi r18, 0xFF ; 255
1514: 8f 3f cpi r24, 0xFF ; 255
1516: 92 07 cpc r25, r18
1518: d1 f7 brne .-12 ; 0x150e <Delay+0x2>
151a: 08 95 ret
0000151c <Timer1_Initial>:
}
//Timer initialization offer seed of the srandom()
void Timer1_Initial()
{
151c: 1d bc out 0x2d, r1 ; 45
TCNT1H=0x00;
TCNT1L=0x00;
151e: 1c bc out 0x2c, r1 ; 44
TCCR1A=0x03;
1520: 83 e0 ldi r24, 0x03 ; 3
1522: 8f bd out 0x2f, r24 ; 47
TCCR1B=0x01;
1524: 81 e0 ldi r24, 0x01 ; 1
1526: 8e bd out 0x2e, r24 ; 46
ICR1H=0xff;
1528: 8f ef ldi r24, 0xFF ; 255
152a: 87 bd out 0x27, r24 ; 39
ICR1L=0xff;
152c: 86 bd out 0x26, r24 ; 38
152e: 08 95 ret
00001530 <strcomp>:
}
uint8 strcomp(uint8 * src, uint8 * dst) /* String compare */
{
1530: dc 01 movw r26, r24
1532: fb 01 movw r30, r22
1534: 08 c0 rjmp .+16 ; 0x1546 <strcomp+0x16>
while(*src)
{
if(*src++ != *dst++)return 0;
1536: 80 81 ld r24, Z
1538: 98 17 cp r25, r24
153a: 19 f0 breq .+6 ; 0x1542 <strcomp+0x12>
153c: 80 e0 ldi r24, 0x00 ; 0
153e: 90 e0 ldi r25, 0x00 ; 0
1540: 08 95 ret
1542: 11 96 adiw r26, 0x01 ; 1
1544: 31 96 adiw r30, 0x01 ; 1
1546: 9c 91 ld r25, X
1548: 99 23 and r25, r25
154a: a9 f7 brne .-22 ; 0x1536 <strcomp+0x6>
154c: 81 e0 ldi r24, 0x01 ; 1
154e: 90 e0 ldi r25, 0x00 ; 0
}
return 1;
}
1550: 08 95 ret
00001552 <strcomp_noncase>:
uint8 strcomp_noncase(uint8 * src, uint8 * dst)/*we should make sure the src is upcase*/
{
1552: dc 01 movw r26, r24
1554: fb 01 movw r30, r22
1556: 0c c0 rjmp .+24 ; 0x1570 <strcomp_noncase+0x1e>
uint8 * p1 = src, * p2 = dst;
while(*p1)
{
if((*p1 == *p2) || ((*p1<*p2)&&((*p2-*p1) == 0x20 )) )
1558: 80 81 ld r24, Z
155a: 28 17 cp r18, r24
155c: 39 f0 breq .+14 ; 0x156c <strcomp_noncase+0x1a>
155e: 28 17 cp r18, r24
1560: 68 f4 brcc .+26 ; 0x157c <strcomp_noncase+0x2a>
1562: 99 27 eor r25, r25
1564: 82 1b sub r24, r18
1566: 91 09 sbc r25, r1
1568: 80 97 sbiw r24, 0x20 ; 32
156a: 41 f4 brne .+16 ; 0x157c <strcomp_noncase+0x2a>
{
p1 ++;
156c: 11 96 adiw r26, 0x01 ; 1
p2 ++;
156e: 31 96 adiw r30, 0x01 ; 1
1570: 2c 91 ld r18, X
1572: 22 23 and r18, r18
1574: 89 f7 brne .-30 ; 0x1558 <strcomp_noncase+0x6>
1576: 81 e0 ldi r24, 0x01 ; 1
1578: 90 e0 ldi r25, 0x00 ; 0
157a: 08 95 ret
157c: 80 e0 ldi r24, 0x00 ; 0
157e: 90 e0 ldi r25, 0x00 ; 0
}
else return 0;
}
return 1;
}
1580: 08 95 ret
00001582 <LrcProc>:
/* Lyric proccess fuction */
#if FIX_DIRECTORY
uint8 LrcProc(uint8 *LongNameBuffer) /* Parameter is the song's long name or short name, note: do not contain the extention*/
#else
uint8 LrcProc(uint8 *LongNameBuffer,WORD music_record_addr) /* Parameter is the song's long name or short name, note: do not contain the extention*/
#endif
{
1582: 2f 92 push r2
1584: 3f 92 push r3
1586: 4f 92 push r4
1588: 5f 92 push r5
158a: 6f 92 push r6
158c: 7f 92 push r7
158e: 8f 92 push r8
1590: 9f 92 push r9
1592: af 92 push r10
1594: bf 92 push r11
1596: cf 92 push r12
1598: df 92 push r13
159a: ef 92 push r14
159c: ff 92 push r15
159e: 0f 93 push r16
15a0: 1f 93 push r17
15a2: cf 93 push r28
15a4: df 93 push r29
15a6: cd b7 in r28, 0x3d ; 61
15a8: de b7 in r29, 0x3e ; 62
15aa: 2c 97 sbiw r28, 0x0c ; 12
15ac: 0f b6 in r0, 0x3f ; 63
15ae: f8 94 cli
15b0: de bf out 0x3e, r29 ; 62
15b2: 0f be out 0x3f, r0 ; 63
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -