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

📄 mp3_player_06.lss

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