⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3_player_06.lss

📁 基于ATmega64单片机以及vs1003的SD卡方案的MP3播放源代码
💻 LSS
📖 第 1 页 / 共 5 页
字号:
    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 + -