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

📄 mp3_player_06.lss

📁 MG64+VS1003+SDCARD+nokia5110 之多的MP3
💻 LSS
📖 第 1 页 / 共 5 页
字号:
							{
								temp = buffer[j++];
     fc4:	fa 01       	movw	r30, r20
     fc6:	84 81       	ldd	r24, Z+4	; 0x04
     fc8:	08 94       	sec
     fca:	a1 1c       	adc	r10, r1
     fcc:	b1 1c       	adc	r11, r1
								if(temp == 0x0d || temp == 0x0a || temp == ']' || i>(AR_LEN - 2))	/* tag ended */
     fce:	8d 30       	cpi	r24, 0x0D	; 13
     fd0:	71 f0       	breq	.+28     	; 0xfee <LrcProc+0x1f4>
     fd2:	8a 30       	cpi	r24, 0x0A	; 10
     fd4:	61 f0       	breq	.+24     	; 0xfee <LrcProc+0x1f4>
     fd6:	8d 35       	cpi	r24, 0x5D	; 93
     fd8:	51 f0       	breq	.+20     	; 0xfee <LrcProc+0x1f4>
     fda:	4f 5f       	subi	r20, 0xFF	; 255
     fdc:	5f 4f       	sbci	r21, 0xFF	; 255
     fde:	af 30       	cpi	r26, 0x0F	; 15
     fe0:	b1 05       	cpc	r27, r1
     fe2:	29 f0       	breq	.+10     	; 0xfee <LrcProc+0x1f4>
									break;
								LrcStructHead.artist[i++] = temp;
     fe4:	f9 01       	movw	r30, r18
     fe6:	81 93       	st	Z+, r24
     fe8:	9f 01       	movw	r18, r30
     fea:	11 96       	adiw	r26, 0x01	; 1
     fec:	eb cf       	rjmp	.-42     	; 0xfc4 <LrcProc+0x1ca>
							}
							LrcStructHead.artist[i] = 0;		/* need a 0 to end the string */
     fee:	af 52       	subi	r26, 0x2F	; 47
     ff0:	bc 4f       	sbci	r27, 0xFC	; 252
     ff2:	fd 01       	movw	r30, r26
     ff4:	12 a2       	std	Z+34, r1	; 0x22
     ff6:	b4 c2       	rjmp	.+1384   	; 0x1560 <__stack+0x461>
                        
							#if DEBUG
   								printf_P(PSTR(" found artist tag: %s ]"),LrcStructHead.artist);
							#else
							//	printf_P(PSTR("\r\nArtist : %s "),LrcStructHead.artist);
							#endif
	 
						}
/**********************************************************************************************************/
						else if(strcomp_noncase("OFFSET:",&buffer[j+1]))	/* string compare to check if this is a offset tag */
     ff8:	b6 01       	movw	r22, r12
     ffa:	8d e0       	ldi	r24, 0x0D	; 13
     ffc:	91 e0       	ldi	r25, 0x01	; 1
     ffe:	0e 94 e5 06 	call	0xdca	; 0xdca <strcomp_noncase>
    1002:	88 23       	and	r24, r24
    1004:	49 f1       	breq	.+82     	; 0x1058 <LrcProc+0x25e>
						{
							j+=8;	/* count += 8 */
						
							LrcStructHead.offset = 0;	/* default value, in case the tag like this [offset:] */
    1006:	10 92 04 04 	sts	0x0404, r1
    100a:	10 92 03 04 	sts	0x0403, r1
 							LrcStructHead.sign = 1;
    100e:	81 e0       	ldi	r24, 0x01	; 1
    1010:	80 93 05 04 	sts	0x0405, r24
    1014:	f3 01       	movw	r30, r6
    1016:	01 c0       	rjmp	.+2      	; 0x101a <LrcProc+0x220>
    1018:	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++];
    101a:	40 85       	ldd	r20, Z+8	; 0x08

								#if DEBUG
									USART_putchar(temp);
								#endif
                                                       
								if(temp == ']')break;	/* tag end */
    101c:	4d 35       	cpi	r20, 0x5D	; 93
    101e:	09 f4       	brne	.+2      	; 0x1022 <LrcProc+0x228>
    1020:	d4 c1       	rjmp	.+936    	; 0x13ca <__stack+0x2cb>
								if(temp == '-')			/* sign */
    1022:	4d 32       	cpi	r20, 0x2D	; 45
    1024:	19 f4       	brne	.+6      	; 0x102c <LrcProc+0x232>
								{
									LrcStructHead.sign = 0;
    1026:	10 92 05 04 	sts	0x0405, r1
    102a:	f6 cf       	rjmp	.-20     	; 0x1018 <LrcProc+0x21e>
									continue;
								}
								LrcStructHead.offset *= 10;			/* calculate the value */
    102c:	80 91 03 04 	lds	r24, 0x0403
    1030:	90 91 04 04 	lds	r25, 0x0404
    1034:	9c 01       	movw	r18, r24
    1036:	b3 e0       	ldi	r27, 0x03	; 3
    1038:	22 0f       	add	r18, r18
    103a:	33 1f       	adc	r19, r19
    103c:	ba 95       	dec	r27
    103e:	e1 f7       	brne	.-8      	; 0x1038 <LrcProc+0x23e>
    1040:	88 0f       	add	r24, r24
    1042:	99 1f       	adc	r25, r25
    1044:	82 0f       	add	r24, r18
    1046:	93 1f       	adc	r25, r19
								LrcStructHead.offset += (temp-0x30);
    1048:	84 0f       	add	r24, r20
    104a:	91 1d       	adc	r25, r1
    104c:	c0 97       	sbiw	r24, 0x30	; 48
    104e:	90 93 04 04 	sts	0x0404, r25
    1052:	80 93 03 04 	sts	0x0403, r24
    1056:	e0 cf       	rjmp	.-64     	; 0x1018 <LrcProc+0x21e>
							}
                                           
							#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 */
    1058:	b6 01       	movw	r22, r12
    105a:	85 e1       	ldi	r24, 0x15	; 21
    105c:	91 e0       	ldi	r25, 0x01	; 1
    105e:	0e 94 e5 06 	call	0xdca	; 0xdca <strcomp_noncase>
    1062:	88 23       	and	r24, r24
    1064:	a1 f0       	breq	.+40     	; 0x108e <LrcProc+0x294>
						{											/* but we do not need this tag */
							j+=4;
    1066:	24 e0       	ldi	r18, 0x04	; 4
    1068:	30 e0       	ldi	r19, 0x00	; 0
    106a:	a2 0e       	add	r10, r18
    106c:	b3 1e       	adc	r11, r19
    106e:	f3 01       	movw	r30, r6
                                              
							#if DEBUG
								printf_P(PSTR(" found by tag: "));
							#endif
                                               
							while(1)
							{
								temp = buffer[j++];
    1070:	84 81       	ldd	r24, Z+4	; 0x04
    1072:	08 94       	sec
    1074:	a1 1c       	adc	r10, r1
    1076:	b1 1c       	adc	r11, r1

								#if DEBUG
									USART_putchar(temp);
								#endif
                                                       
								if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
    1078:	8d 30       	cpi	r24, 0x0D	; 13
    107a:	09 f4       	brne	.+2      	; 0x107e <LrcProc+0x284>
    107c:	71 c2       	rjmp	.+1250   	; 0x1560 <__stack+0x461>
    107e:	8a 30       	cpi	r24, 0x0A	; 10
    1080:	09 f4       	brne	.+2      	; 0x1084 <LrcProc+0x28a>
    1082:	6e c2       	rjmp	.+1244   	; 0x1560 <__stack+0x461>
    1084:	31 96       	adiw	r30, 0x01	; 1
    1086:	8d 35       	cpi	r24, 0x5D	; 93
    1088:	09 f4       	brne	.+2      	; 0x108c <LrcProc+0x292>
    108a:	6a c2       	rjmp	.+1236   	; 0x1560 <__stack+0x461>
    108c:	f1 cf       	rjmp	.-30     	; 0x1070 <LrcProc+0x276>
							}
						}
/**********************************************************************************************************/									 
						else if(strcomp_noncase("AL:",&buffer[j+1]))	/* string compare to check if this is a album tag */
    108e:	b6 01       	movw	r22, r12
    1090:	89 e1       	ldi	r24, 0x19	; 25
    1092:	91 e0       	ldi	r25, 0x01	; 1
    1094:	0e 94 e5 06 	call	0xdca	; 0xdca <strcomp_noncase>
    1098:	88 23       	and	r24, r24
    109a:	a1 f0       	breq	.+40     	; 0x10c4 <LrcProc+0x2ca>
						{
							j+=4;
    109c:	64 e0       	ldi	r22, 0x04	; 4
    109e:	70 e0       	ldi	r23, 0x00	; 0
    10a0:	a6 0e       	add	r10, r22
    10a2:	b7 1e       	adc	r11, r23
    10a4:	f3 01       	movw	r30, r6

							#if DEBUG
								printf_P(PSTR(" found al tag: "));
							#else
							//	printf_P(PSTR("\r\nAlbum  : "));
							#endif

							while(1)
							{
								temp = buffer[j++];   
    10a6:	84 81       	ldd	r24, Z+4	; 0x04
    10a8:	08 94       	sec
    10aa:	a1 1c       	adc	r10, r1
    10ac:	b1 1c       	adc	r11, r1
								if(temp == 0x0d || temp == 0x0a || temp == ']' ||i>30)break;
    10ae:	8d 30       	cpi	r24, 0x0D	; 13
    10b0:	09 f4       	brne	.+2      	; 0x10b4 <LrcProc+0x2ba>
    10b2:	56 c2       	rjmp	.+1196   	; 0x1560 <__stack+0x461>
    10b4:	8a 30       	cpi	r24, 0x0A	; 10
    10b6:	09 f4       	brne	.+2      	; 0x10ba <LrcProc+0x2c0>
    10b8:	53 c2       	rjmp	.+1190   	; 0x1560 <__stack+0x461>
    10ba:	31 96       	adiw	r30, 0x01	; 1
    10bc:	8d 35       	cpi	r24, 0x5D	; 93
    10be:	09 f4       	brne	.+2      	; 0x10c2 <LrcProc+0x2c8>
    10c0:	4f c2       	rjmp	.+1182   	; 0x1560 <__stack+0x461>
    10c2:	f1 cf       	rjmp	.-30     	; 0x10a6 <LrcProc+0x2ac>
							//	USART_putchar(temp);
							}
						}
/**********************************************************************************************************/									   
						else		/* otherwise this must the time tag or other not recognize tag */
						{
							j+=1;
    10c4:	08 94       	sec
    10c6:	a1 1c       	adc	r10, r1
    10c8:	b1 1c       	adc	r11, r1
							/****************************************************************/
							if(sector == totalsect && j == leftbytes + 1) goto end; /* if the file is end */
    10ca:	79 85       	ldd	r23, Y+9	; 0x09
    10cc:	88 85       	ldd	r24, Y+8	; 0x08
    10ce:	78 17       	cp	r23, r24
    10d0:	39 f4       	brne	.+14     	; 0x10e0 <LrcProc+0x2e6>
    10d2:	8e 81       	ldd	r24, Y+6	; 0x06
    10d4:	9f 81       	ldd	r25, Y+7	; 0x07
    10d6:	01 96       	adiw	r24, 0x01	; 1
    10d8:	a8 16       	cp	r10, r24
    10da:	b9 06       	cpc	r11, r25
    10dc:	09 f4       	brne	.+2      	; 0x10e0 <LrcProc+0x2e6>
    10de:	7a c2       	rjmp	.+1268   	; 0x15d4 <__stack+0x4d5>
							if(j == 512)	/* wether the sector is end, need to read the next sector */
    10e0:	90 e0       	ldi	r25, 0x00	; 0
    10e2:	a9 16       	cp	r10, r25
    10e4:	92 e0       	ldi	r25, 0x02	; 2
    10e6:	b9 06       	cpc	r11, r25
    10e8:	09 f0       	breq	.+2      	; 0x10ec <LrcProc+0x2f2>
    10ea:	4b c0       	rjmp	.+150    	; 0x1182 <__stack+0x83>
							{
								if(part == (SectorsPerClust - 1))	/* if need to read next cluster */
    10ec:	aa 85       	ldd	r26, Y+10	; 0x0a
    10ee:	2a 2f       	mov	r18, r26
    10f0:	33 27       	eor	r19, r19
    10f2:	80 91 5a 07 	lds	r24, 0x075A
    10f6:	90 91 5b 07 	lds	r25, 0x075B
    10fa:	01 97       	sbiw	r24, 0x01	; 1
    10fc:	28 17       	cp	r18, r24
    10fe:	39 07       	cpc	r19, r25
    1100:	69 f5       	brne	.+90     	; 0x115c <__stack+0x5d>
								{
									//p=FAT_NextCluster_NEW(p);//读下一簇数据			//read next cluster
									p=FAT_NextCluster(p);
    1102:	c8 01       	movw	r24, r16
    1104:	b7 01       	movw	r22, r14
    1106:	0e 94 7e 14 	call	0x28fc	; 0x28fc <FAT_NextCluster>
    110a:	7b 01       	movw	r14, r22
    110c:	8c 01       	movw	r16, r24
									if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff))//如果无后续簇则结束,	//no more cluster  
    110e:	6f 3f       	cpi	r22, 0xFF	; 255
    1110:	bf ef       	ldi	r27, 0xFF	; 255
    1112:	7b 07       	cpc	r23, r27
    1114:	bf ef       	ldi	r27, 0xFF	; 255
    1116:	8b 07       	cpc	r24, r27
    1118:	bf e0       	ldi	r27, 0x0F	; 15
    111a:	9b 07       	cpc	r25, r27
    111c:	09 f4       	brne	.+2      	; 0x1120 <__stack+0x21>
    111e:	5a c2       	rjmp	.+1204   	; 0x15d4 <__stack+0x4d5>
    1120:	68 5f       	subi	r22, 0xF8	; 248
    1122:	7f 4f       	sbci	r23, 0xFF	; 255
    1124:	8f 4f       	sbci	r24, 0xFF	; 255
    1126:	9f 40       	sbci	r25, 0x0F	; 15
    1128:	09 f4       	brne	.+2      	; 0x112c <__stack+0x2d>
    112a:	54 c2       	rjmp	.+1192   	; 0x15d4 <__stack+0x4d5>
    112c:	80 91 c5 07 	lds	r24, 0x07C5
    1130:	88 23       	and	r24, r24
    1132:	51 f4       	brne	.+20     	; 0x1148 <__stack+0x49>
    1134:	ff ef       	ldi	r31, 0xFF	; 255
    1136:	ef 16       	cp	r14, r31
    1138:	ff ef       	ldi	r31, 0xFF	; 255
    113a:	ff 06       	cpc	r15, r31
    113c:	f0 e0       	ldi	r31, 0x00	; 0
    113e:	0f 07       	cpc	r16, r31
    1140:	f0 e0       	ldi	r31, 0x00	; 0
    1142:	1f 07       	cpc	r17, r31
    1144:	09 f4       	brne	.+2      	; 0x1148 <__stack+0x49>
    1146:	46 c2       	rjmp	.+1164   	; 0x15d4 <__stack+0x4d5>
									{
										#if DEBUG
											printf_P(PSTR("\r\nNo next cluster or read next cluster error"));
										#endif
										goto end;
									}
									part = 0;	/* clear the part count */
									if(FAT_LoadPartCluster(p,part,buffer))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -