📄 mp3_player_06.lss
字号:
bb1: 00 20 f8 24 24 04 00 02 03 02 02 00 00 40 a0 a0 . .$$........@..
bc1: 60 20 00 07 0a 0a 0a 04 04 fc 20 20 c0 00 02 03 ` ........ ....
bd1: 02 00 03 02 00 20 e4 00 00 00 00 02 03 02 00 00 ..... ..........
be1: 00 00 20 e4 00 00 08 08 08 07 00 00 04 fc 80 e0 .. .............
bf1: 20 20 02 03 02 00 03 02 04 04 fc 00 00 00 02 02 ..............
c01: 03 02 02 00 e0 20 e0 20 c0 00 03 00 03 00 03 00 ..... . ........
c11: 20 e0 20 20 c0 00 02 03 02 00 03 02 00 c0 20 20 . ..........
c21: c0 00 00 01 02 02 01 00 20 e0 20 20 c0 00 08 0f ........ . ....
c31: 0a 02 01 00 00 c0 20 20 e0 00 00 01 02 0a 0f 08 ...... ........
c41: 20 e0 40 20 20 00 02 03 02 00 00 00 00 60 a0 a0 .@ ........`..
c51: 20 00 00 02 02 02 03 00 00 20 f8 20 00 00 00 00 ........ . ....
c61: 01 02 02 00 20 e0 00 20 e0 00 00 01 02 02 03 02 .... .. ........
c71: 20 e0 20 80 60 20 00 00 03 01 00 00 60 80 e0 80 . .` ......`...
c81: 60 00 00 03 00 03 00 00 20 60 80 60 20 00 02 03 `....... `.` ...
c91: 00 03 02 00 20 e0 20 80 60 20 08 08 07 01 00 00 .... . .` ......
ca1: 00 20 a0 60 20 00 00 02 03 02 02 00 00 00 20 de . .` ......... .
cb1: 02 00 00 00 00 07 04 00 00 00 00 ff 00 00 00 00 ................
cc1: 00 0f 00 00 00 02 de 20 00 00 00 04 07 00 00 00 ....... ........
cd1: 02 01 02 04 04 02 00 00 00 00 00 00 00 .............
00000cde <__ctors_end>:
cde: 11 24 eor r1, r1
ce0: 1f be out 0x3f, r1 ; 63
ce2: cf ef ldi r28, 0xFF ; 255
ce4: d0 e1 ldi r29, 0x10 ; 16
ce6: de bf out 0x3e, r29 ; 62
ce8: cd bf out 0x3d, r28 ; 61
00000cea <__do_copy_data>:
cea: 11 e0 ldi r17, 0x01 ; 1
cec: a0 e0 ldi r26, 0x00 ; 0
cee: b1 e0 ldi r27, 0x01 ; 1
cf0: e2 eb ldi r30, 0xB2 ; 178
cf2: f3 e8 ldi r31, 0x83 ; 131
cf4: 02 c0 rjmp .+4 ; 0xcfa <.do_copy_data_start>
00000cf6 <.do_copy_data_loop>:
cf6: 05 90 lpm r0, Z+
cf8: 0d 92 st X+, r0
00000cfa <.do_copy_data_start>:
cfa: aa 34 cpi r26, 0x4A ; 74
cfc: b1 07 cpc r27, r17
cfe: d9 f7 brne .-10 ; 0xcf6 <.do_copy_data_loop>
00000d00 <__do_clear_bss>:
d00: 1a e0 ldi r17, 0x0A ; 10
d02: aa e4 ldi r26, 0x4A ; 74
d04: b1 e0 ldi r27, 0x01 ; 1
d06: 01 c0 rjmp .+2 ; 0xd0a <.do_clear_bss_start>
00000d08 <.do_clear_bss_loop>:
d08: 1d 92 st X+, r1
00000d0a <.do_clear_bss_start>:
d0a: a8 30 cpi r26, 0x08 ; 8
d0c: b1 07 cpc r27, r17
d0e: e1 f7 brne .-8 ; 0xd08 <.do_clear_bss_loop>
d10: 0e 94 9c 12 call 0x2538 ; 0x2538 <main>
d14: 0c 94 d8 41 jmp 0x83b0 ; 0x83b0 <_exit>
00000d18 <__bad_interrupt>:
d18: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000d1c <ClearTrackInfo>:
uint8 track[128]; /* stroe the information of songs (bit set indicate songs has been played) */
void ClearTrackInfo() /* cleare the array track[128] */
{
d1c: 80 e0 ldi r24, 0x00 ; 0
d1e: 90 e0 ldi r25, 0x00 ; 0
uint8 i;
for(i=0;i<128;i++)track[i] = 0;
d20: e8 2f mov r30, r24
d22: ff 27 eor r31, r31
d24: ea 5f subi r30, 0xFA ; 250
d26: fb 4f sbci r31, 0xFB ; 251
d28: 10 82 st Z, r1
d2a: 01 96 adiw r24, 0x01 ; 1
d2c: 80 38 cpi r24, 0x80 ; 128
d2e: 91 05 cpc r25, r1
d30: b9 f7 brne .-18 ; 0xd20 <ClearTrackInfo+0x4>
d32: 08 95 ret
00000d34 <SetTrack>:
}
uint8 SetTrack(uint16 songs)/* set the track bit, return 1 means the song has been played */
{
d34: 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;
d36: 9c 01 movw r18, r24
d38: 43 e0 ldi r20, 0x03 ; 3
d3a: 36 95 lsr r19
d3c: 27 95 ror r18
d3e: 4a 95 dec r20
d40: e1 f7 brne .-8 ; 0xd3a <SetTrack+0x6>
d42: e2 2f mov r30, r18
d44: ff 27 eor r31, r31
d46: ea 5f subi r30, 0xFA ; 250
d48: fb 4f sbci r31, 0xFB ; 251
d4a: 40 81 ld r20, Z
d4c: 9c 01 movw r18, r24
d4e: 27 70 andi r18, 0x07 ; 7
d50: 30 70 andi r19, 0x00 ; 0
d52: 84 2f mov r24, r20
d54: 99 27 eor r25, r25
d56: 02 2e mov r0, r18
d58: 02 c0 rjmp .+4 ; 0xd5e <SetTrack+0x2a>
d5a: 95 95 asr r25
d5c: 87 95 ror r24
d5e: 0a 94 dec r0
d60: e2 f7 brpl .-8 ; 0xd5a <SetTrack+0x26>
d62: 80 ff sbrs r24, 0
d64: 03 c0 rjmp .+6 ; 0xd6c <SetTrack+0x38>
d66: 81 e0 ldi r24, 0x01 ; 1
d68: 90 e0 ldi r25, 0x00 ; 0
d6a: 08 95 ret
else
{
track[byte_offset] |= 1<<bit_offset;
d6c: 81 e0 ldi r24, 0x01 ; 1
d6e: 90 e0 ldi r25, 0x00 ; 0
d70: 02 c0 rjmp .+4 ; 0xd76 <SetTrack+0x42>
d72: 88 0f add r24, r24
d74: 99 1f adc r25, r25
d76: 2a 95 dec r18
d78: e2 f7 brpl .-8 ; 0xd72 <SetTrack+0x3e>
d7a: 48 2b or r20, r24
d7c: 40 83 st Z, r20
d7e: 80 e0 ldi r24, 0x00 ; 0
d80: 90 e0 ldi r25, 0x00 ; 0
return 0;
}
}
d82: 08 95 ret
00000d84 <Delay>:
/*void nextline()
{
USART_putchar(0x0d);
USART_putchar(0x0a);
}*/
void Delay(uint16 n)//延时
{
d84: 01 c0 rjmp .+2 ; 0xd88 <Delay+0x4>
while(n--)asm("nop");
d86: 00 00 nop
d88: 01 97 sbiw r24, 0x01 ; 1
d8a: 2f ef ldi r18, 0xFF ; 255
d8c: 8f 3f cpi r24, 0xFF ; 255
d8e: 92 07 cpc r25, r18
d90: d1 f7 brne .-12 ; 0xd86 <Delay+0x2>
d92: 08 95 ret
00000d94 <Timer1_Initial>:
}
//Timer initialization offer seed of the srandom()
void Timer1_Initial()
{
d94: 1d bc out 0x2d, r1 ; 45
TCNT1H=0x00;
TCNT1L=0x00;
d96: 1c bc out 0x2c, r1 ; 44
TCCR1A=0x03;
d98: 83 e0 ldi r24, 0x03 ; 3
d9a: 8f bd out 0x2f, r24 ; 47
TCCR1B=0x01;
d9c: 81 e0 ldi r24, 0x01 ; 1
d9e: 8e bd out 0x2e, r24 ; 46
ICR1H=0xff;
da0: 8f ef ldi r24, 0xFF ; 255
da2: 87 bd out 0x27, r24 ; 39
ICR1L=0xff;
da4: 86 bd out 0x26, r24 ; 38
da6: 08 95 ret
00000da8 <strcomp>:
}
uint8 strcomp(uint8 * src, uint8 * dst) /* String compare */
{
da8: dc 01 movw r26, r24
daa: fb 01 movw r30, r22
dac: 08 c0 rjmp .+16 ; 0xdbe <strcomp+0x16>
while(*src)
{
if(*src++ != *dst++)return 0;
dae: 80 81 ld r24, Z
db0: 98 17 cp r25, r24
db2: 19 f0 breq .+6 ; 0xdba <strcomp+0x12>
db4: 80 e0 ldi r24, 0x00 ; 0
db6: 90 e0 ldi r25, 0x00 ; 0
db8: 08 95 ret
dba: 11 96 adiw r26, 0x01 ; 1
dbc: 31 96 adiw r30, 0x01 ; 1
dbe: 9c 91 ld r25, X
dc0: 99 23 and r25, r25
dc2: a9 f7 brne .-22 ; 0xdae <strcomp+0x6>
dc4: 81 e0 ldi r24, 0x01 ; 1
dc6: 90 e0 ldi r25, 0x00 ; 0
}
return 1;
}
dc8: 08 95 ret
00000dca <strcomp_noncase>:
uint8 strcomp_noncase(uint8 * src, uint8 * dst)/*we should make sure the src is upcase*/
{
dca: dc 01 movw r26, r24
dcc: fb 01 movw r30, r22
dce: 0c c0 rjmp .+24 ; 0xde8 <strcomp_noncase+0x1e>
uint8 * p1 = src, * p2 = dst;
while(*p1)
{
if((*p1 == *p2) || ((*p1<*p2)&&((*p2-*p1) == 0x20 )) )
dd0: 80 81 ld r24, Z
dd2: 28 17 cp r18, r24
dd4: 39 f0 breq .+14 ; 0xde4 <strcomp_noncase+0x1a>
dd6: 28 17 cp r18, r24
dd8: 68 f4 brcc .+26 ; 0xdf4 <strcomp_noncase+0x2a>
dda: 99 27 eor r25, r25
ddc: 82 1b sub r24, r18
dde: 91 09 sbc r25, r1
de0: 80 97 sbiw r24, 0x20 ; 32
de2: 41 f4 brne .+16 ; 0xdf4 <strcomp_noncase+0x2a>
{
p1 ++;
de4: 11 96 adiw r26, 0x01 ; 1
p2 ++;
de6: 31 96 adiw r30, 0x01 ; 1
de8: 2c 91 ld r18, X
dea: 22 23 and r18, r18
dec: 89 f7 brne .-30 ; 0xdd0 <strcomp_noncase+0x6>
dee: 81 e0 ldi r24, 0x01 ; 1
df0: 90 e0 ldi r25, 0x00 ; 0
df2: 08 95 ret
df4: 80 e0 ldi r24, 0x00 ; 0
df6: 90 e0 ldi r25, 0x00 ; 0
}
else return 0;
}
return 1;
}
df8: 08 95 ret
00000dfa <LrcProc>:
/* Lyric proccess fuction */
#if FIX_DIRECTORY
uint8 LrcProc(uint8 *LongNameBuffer, uint8 isLongName) /* 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, uint8 isLongName) /* Parameter is the song's long name or short name, note: do not contain the extention*/
#endif
{
dfa: 2f 92 push r2
dfc: 3f 92 push r3
dfe: 4f 92 push r4
e00: 5f 92 push r5
e02: 6f 92 push r6
e04: 7f 92 push r7
e06: 8f 92 push r8
e08: 9f 92 push r9
e0a: af 92 push r10
e0c: bf 92 push r11
e0e: cf 92 push r12
e10: df 92 push r13
e12: ef 92 push r14
e14: ff 92 push r15
e16: 0f 93 push r16
e18: 1f 93 push r17
e1a: cf 93 push r28
e1c: df 93 push r29
e1e: cd b7 in r28, 0x3d ; 61
e20: de b7 in r29, 0x3e ; 62
e22: 2c 97 sbiw r28, 0x0c ; 12
e24: 0f b6 in r0, 0x3f ; 63
e26: f8 94 cli
e28: de bf out 0x3e, r29 ; 62
e2a: 0f be out 0x3f, r0 ; 63
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -