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

📄 fat16.s

📁 AVR单片机做的MP3
💻 S
📖 第 1 页 / 共 4 页
字号:
;       filename -> R10,R11
	.even
_show::
	rcall push_gset5
	mov R14,R18
	movw R10,R16
	sbiw R28,24
	.dbline -1
	.dbline 395
; }
; void show( uint8 filename[2],uint8 location,uint8 loca)
; {
	.dbline 396
;  uint16 i,j=0;
	clr R0
	clr R1
	std y+20,R1
	std y+19,R0
	.dbline 397
;  uint8 x,y,location1,loca1,findflag=0;
	std y+23,R0
	.dbline 399
;  uint32 temp,temp1,temp2,start;
;  x=filename[0];
	movw R30,R10
	ldd R2,z+0
	std y+21,R2
	.dbline 400
;  y=filename[1];
	ldd R2,z+1
	std y+22,R2
	.dbline 401
;  location1=location;
	mov R10,R14
	.dbline 402
;  loca1=loca;
	ldd R12,y+34
	.dbline 403
;  if(!longfileflag)
	lds R2,_longfileflag
	tst R2
	breq X8
	rjmp L159
X8:
	.dbline 404
;  {
	.dbline 405
;  if((x<0xb0))
	ldd R24,y+21
	cpi R24,176
	brsh L161
	.dbline 406
;  {
	.dbline 407
;   if((x>=0x30)&&(x<0x61))
	cpi R24,48
	brlo L163
	cpi R24,97
	brsh L163
	.dbline 408
;   {
	.dbline 409
;   y=128+x;
	subi R24,128    ; addi 128
	std y+22,R24
	.dbline 410
;   x=163;
	ldi R24,163
	std y+21,R24
	.dbline 411
;   }
	rjmp L164
L163:
	.dbline 413
;   else
;   {
	.dbline 414
;   show_chin(zero,location,1,loca);
	ldd R0,y+34
	std y+2,R0
	ldi R24,1
	std y+0,R24
	mov R18,R14
	ldi R16,<_zero
	ldi R17,>_zero
	rcall _show_chin
	.dbline 415
;   return;
	rjmp L158
L164:
	.dbline 417
;   }
;  }
L161:
	.dbline 418
;  x=x-0xa1;
	ldd R24,y+21
	subi R24,161
	std y+21,R24
	.dbline 419
;  y=y-0xa1;
	ldd R24,y+22
	subi R24,161
	std y+22,R24
	.dbline 420
;  temp=x*94;
	ldi R24,94
	ldd R0,y+21
	mul R24,R0
	movw R2,R0
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	movw R30,R28
	std z+3,R2
	std z+4,R3
	std z+5,R4
	std z+6,R5
	.dbline 421
;  temp=temp+y;
	ldd R2,y+22
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+3
	ldd R7,z+4
	ldd R8,z+5
	ldd R9,z+6
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+3,R6
	std z+4,R7
	std z+5,R8
	std z+6,R9
	.dbline 422
;  }
	rjmp L160
L159:
	.dbline 424
;  else
;  {
	.dbline 425
;  start=ClusConvLBA(unicodestart);
	lds R16,_unicodestart
	lds R17,_unicodestart+1
	rcall _ClusConvLBA
	movw R30,R28
	std z+7,R16
	std z+8,R17
	std z+9,R18
	std z+10,R19
	.dbline 426
;  for(i=0;i<16;i++)
	clr R14
	clr R15
	rjmp L168
L165:
	.dbline 427
;   {
	.dbline 428
;    ReadBlock(start+i);
	movw R2,R14
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+7
	ldd R7,z+8
	ldd R8,z+9
	ldd R9,z+10
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R16,R6
	movw R18,R8
	rcall _ReadBlock
	.dbline 429
;    for(j=0;j<512;j+=2)
	clr R0
	clr R1
	std y+20,R1
	std y+19,R0
	rjmp L172
L169:
	.dbline 430
;      {
	.dbline 431
;       if((x==BUFFER[j])&&(y==BUFFER[j+1]))
	ldi R24,<_BUFFER
	ldi R25,>_BUFFER
	ldd R30,y+19
	ldd R31,y+20
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R0,y+21
	cp R0,R2
	breq X9
	rjmp L173
X9:
	ldd R30,y+19
	ldd R31,y+20
	adiw R30,1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R0,y+22
	cp R0,R2
	breq X10
	rjmp L173
X10:
	.dbline 432
; 	   {
	.dbline 433
; 	     findflag=1;
	clr R0
	inc R0
	std y+23,R0
	.dbline 434
; 	     temp=i<<8;
	movw R2,R14
	mov R3,R2
	clr R2
	clr R4
	clr R5
	movw R30,R28
	std z+3,R2
	std z+4,R3
	std z+5,R4
	std z+6,R5
	.dbline 435
; 		 temp=temp+(j>>1);
	ldd R2,y+19
	ldd R3,y+20
	lsr R3
	ror R2
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+3
	ldd R7,z+4
	ldd R8,z+5
	ldd R9,z+6
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+3,R6
	std z+4,R7
	std z+5,R8
	std z+6,R9
	.dbline 436
; 		 temp=temp+1410;
	ldi R20,130
	ldi R21,5
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+3
	ldd R3,z+4
	ldd R4,z+5
	ldd R5,z+6
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+3,R2
	std z+4,R3
	std z+5,R4
	std z+6,R5
	.dbline 437
; 		 break;
	rjmp L171
L173:
	.dbline 439
L170:
	.dbline 429
	ldd R24,y+19
	ldd R25,y+20
	adiw R24,2
	std y+20,R25
	std y+19,R24
L172:
	.dbline 429
	ldd R24,y+19
	ldd R25,y+20
	cpi R24,0
	ldi R30,2
	cpc R25,R30
	brsh X11
	rjmp L169
X11:
L171:
	.dbline 441
; 	   }
; 	 }
;   
;   if(findflag)  
	ldd R0,y+23
	tst R0
	breq L175
	.dbline 442
;    {
	.dbline 443
;     break;
	rjmp L167
L175:
	.dbline 445
;    }
;  if((!findflag)&&(i==15))
	ldd R0,y+23
	tst R0
	brne L177
	movw R24,R14
	cpi R24,15
	ldi R30,0
	cpc R25,R30
	brne L177
	.dbline 446
;    {
	.dbline 447
;    show_chin(zero,location1,1,loca1);
	std y+2,R12
	ldi R24,1
	std y+0,R24
	mov R18,R10
	ldi R16,<_zero
	ldi R17,>_zero
	rcall _show_chin
	.dbline 448
;    return;
	rjmp L158
L177:
	.dbline 450
L166:
	.dbline 426
	movw R24,R14
	adiw R24,1
	movw R14,R24
L168:
	.dbline 426
	movw R24,R14
	cpi R24,16
	ldi R30,0
	cpc R25,R30
	brsh X12
	rjmp L165
X12:
L167:
	.dbline 451
;    }
;   }
;  }
L160:
	.dbline 452
;  temp=temp<<5;
	ldi R24,5
	ldi R25,0
	movw R30,R28
	ldd R2,z+3
	ldd R3,z+4
	ldd R4,z+5
	ldd R5,z+6
	st -y,R24
	movw R16,R2
	movw R18,R4
	rcall lsl32
	movw R30,R28
	std z+3,R16
	std z+4,R17
	std z+5,R18
	std z+6,R19
	.dbline 453
;  temp1=temp>>9;
	ldi R24,9
	ldi R25,0
	movw R30,R28
	ldd R2,z+3
	ldd R3,z+4
	ldd R4,z+5
	ldd R5,z+6
	st -y,R24
	movw R16,R2
	movw R18,R4
	rcall lsr32
	movw R30,R28
	std z+11,R16
	std z+12,R17
	std z+13,R18
	std z+14,R19
	.dbline 454
;  temp2=temp%512;
	ldi R20,255
	ldi R21,1
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+3
	ldd R3,z+4
	ldd R4,z+5
	ldd R5,z+6
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	movw R30,R28
	std z+15,R2
	std z+16,R3
	std z+17,R4
	std z+18,R5
	.dbline 455
;  start=ClusConvLBA(zikustart);
	lds R16,_zikustart
	lds R17,_zikustart+1
	rcall _ClusConvLBA
	movw R30,R28
	std z+7,R16
	std z+8,R17
	std z+9,R18
	std z+10,R19
	.dbline 456
;  start=start+temp1;
	movw R30,R28
	ldd R2,z+11
	ldd R3,z+12
	ldd R4,z+13
	ldd R5,z+14
	movw R30,R28
	ldd R6,z+7
	ldd R7,z+8
	ldd R8,z+9
	ldd R9,z+10
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+7,R6
	std z+8,R7
	std z+9,R8
	std z+10,R9
	.dbline 457
;  ReadBlock(start);
	movw R30,R28
	ldd R16,z+7
	ldd R17,z+8
	ldd R18,z+9
	ldd R19,z+10
	rcall _ReadBlock
	.dbline 458
;  show_chin(BUFFER+(uint16)(temp2),location1,1,loca1);
	std y+2,R12
	ldi R24,1
	std y+0,R24
	mov R18,R10
	ldi R24,<_BUFFER
	ldi R25,>_BUFFER
	movw R30,R28
	ldd R16,z+15
	ldd R17,z+16
	add R16,R24
	adc R17,R25
	rcall _show_chin
	.dbline -2
L158:
	adiw R28,24
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l temp2 15 l
	.dbsym l temp1 11 l
	.dbsym r loca1 12 c
	.dbsym r location1 10 c
	.dbsym l start 7 l
	.dbsym l findflag 23 c
	.dbsym r i 14 i
	.dbsym l y 22 c
	.dbsym l x 21 c
	.dbsym l temp 3 l
	.dbsym l j 19 i
	.dbsym l loca 34 c
	.dbsym r location 14 c
	.dbsym r filename 10 pc
	.dbend
	.area lit(rom, con, rel)
L180:
	.byte 210,244,193,191,53,48
L181:
	.byte 187,182,211,173,202,185,211,195
L182:
	.byte 'M,48,'P,48,51,48
	.area text(rom, con, rel)
	.dbfile D:\ICCFIL~1\五键MP3ICC\fat16.c
	.dbfunc e playmp3 _playmp3 fV
;            mp3 -> y+15
;          test2 -> y+9
;        welcome -> y+1
;           song -> R20,R21
	.even
_playmp3::
	rcall push_gset1
	sbiw R28,21
	.dbline -1
	.dbline 461
; }
; void playmp3(void)
; {
	.dbline 462
;  uint16 song=0;
	clr R20
	clr R21
	.dbline 463
;  uint8 test2[6]="音量50";
	ldi R24,<L180
	ldi R25,>L180
	movw R30,R28
	adiw R30,9
	ldi R16,6
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 464
;  uint8 welcome[8]="欢迎使用";
	ldi R24,<L181
	ldi R25,>L181
	movw R30,R28
	adiw R30,1
	ldi R16,8
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 465
;  uint8 mp3[6]="M0P030"; 
	ldi R24,<L182
	ldi R25,>L182
	movw R30,R28
	adiw R30,15
	ldi R16,6
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 466
;  zikustart=Getfile_start();
	rcall _Getfile_start
	sts _zikustart+1,R17
	sts _zikustart,R16
	.dbline 467
;  show(welcome,0,0);
	clr R2
	std y+0,R2
	clr R18
	movw R16,R28
	subi R16,255  ; offset = 1
	sbci R17,255
	rcall _show
	.dbline 468
;   show(welcome+2,15,0);
	clr R2
	std y+0,R2
	ldi R18,15
	movw R16,R28
	subi R16,253  ; offset = 3
	sbci R17,255
	rcall _show
	.dbline 469
;    show(welcome+4,30,0);
	clr R2
	std y+0,R2
	ldi R18,30
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall _show
	.dbline 470
;     show(welcome+6,45,0);
	clr R2
	std y+0,R2
	ldi R18,45
	movw R16,R28
	subi R16,249  ; offset = 7
	sbci R17,255
	rcall _show
	.dbline 471
;  show(test2,76,0);
	clr R2
	std y+0,R2
	ldi R18,76
	movw R16,R28
	subi R16,247  ; offset = 9
	sbci R17,255
	rcall _show
	.dbline 472
;   show(test2+2,92,0);
	clr R2
	std y+0,R2
	ldi R18,92
	movw R16,R28
	subi R16,245  ; offset = 11
	sbci R17,255
	rcall _show
	.dbline 473
;    show(test2+4,108,0);
	clr R2
	std y+0,R2
	ldi R18,108
	movw R16,R28
	subi R16,243  ; offset = 13
	sbci R17,255
	rcall _show
	.dbline 474
;     show(mp3,76,1);
	ldi R24,1
	std y+0,R24
	ldi R18,76
	movw R16,R28
	subi R16,241  ; offset = 15
	sbci R17,255
	rcall _show
	.dbline 475
;  show(mp3+2,91,1);
	ldi R24,1
	std y+0,R24
	ldi R18,91
	movw R16,R28
	subi R16,239  ; offset = 17
	sbci R17,255
	rcall _show
	.dbline 476
;  show(mp3+4,106,1);
	ldi R24,1
	std y+0,R24
	ldi R18,106
	movw R16,R28
	subi R16,237  ; offset = 19
	sbci R17,255
	rcall _show
	.dbline 477
;  delay(3000);
	ldi R16,3000
	ldi R17,11
	rcall _delay
	.dbline 478
;  unicodestart=Getfile_start();
	rcall _Getfile_start
	sts _unicodestart+1,R17
	sts _unicodestart,R16
	rjmp L191
L190:
	.dbline 480
	.dbline 481
	rcall _GetNextmp3
	movw R20,R16
	.dbline 482
	rcall _Readfile
	.dbline 483
	rcall _VS1003B_SoftReset
	.dbline 484
	ldi R16,500
	ldi R17,1
	rcall _delay
	.dbline 485
L191:
	.dbline 479
	rjmp L190
X13:
	.dbline -2
L179:
	adiw R28,21
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym l mp3 15 A[6:6]c
	.dbsym l test2 9 A[6:6]c
	.dbsym l welcome 1 A[8:8]c
	.dbsym r song 20 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\ICCFIL~1\五键MP3ICC\fat16.c
_BPB_HiddSec:
	.blkb 4
	.dbsym s BPB_HiddSec _BPB_HiddSec l
_BPB_FATSz16:
	.blkb 2
	.dbsym s BPB_FATSz16 _BPB_FATSz16 i
_BPB_TotSec16:
	.blkb 2
	.dbsym s BPB_TotSec16 _BPB_TotSec16 i
_BPB_RootEntCnt:
	.blkb 2
	.dbsym s BPB_RootEntCnt _BPB_RootEntCnt i
_BPB_NumFATs:
	.blkb 1
	.dbsym s BPB_NumFATs _BPB_NumFATs c
_BPB_RsvdSecCnt:
	.blkb 2
	.dbsym s BPB_RsvdSecCnt _BPB_RsvdSecCnt i
_BPB_SecPerClus::
	.blkb 1
	.dbsym e BPB_SecPerClus _BPB_SecPerClus c
_FileIndex:
	.blkb 12
	.dbstruct 0 12 .4
	.dbfield 0 m i
	.dbfield 2 ClusID i
	.dbfield 4 i l
	.dbfield 8 LBA l
	.dbend
	.dbsym s FileIndex _FileIndex S[.4]
_fileid:
	.blkb 32
	.dbsym s fileid _fileid S[.3]
_unicodestart:
	.blkb 2
	.dbsym s unicodestart _unicodestart i

⌨️ 快捷键说明

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