📄 mp3player.lis
字号:
0302 0E940000 xcall div16s
0306 7801 movw R14,R16
0308 .dbline 147
0308 ; GetDir(Cluster,Page*SONGPAGE,SONGPAGE,TRUE);
0308 81E0 ldi R24,1
030A 90E0 ldi R25,0
030C 9D83 std y+5,R25
030E 8C83 std y+4,R24
0310 85E0 ldi R24,5
0312 9B83 std y+3,R25
0314 8A83 std y+2,R24
0316 05E0 ldi R16,5
0318 10E0 ldi R17,0
031A 9701 movw R18,R14
031C 0E940000 xcall empy16s
0320 1983 std y+1,R17
0322 0883 std y+0,R16
0324 FE01 movw R30,R28
0326 0489 ldd R16,z+20
0328 1589 ldd R17,z+21
032A 2689 ldd R18,z+22
032C 3789 ldd R19,z+23
032E 0E940000 xcall _GetDir
0332 .dbline 148
0332 ; RemoteSendScreen(PLAY,(FilePtr%SONGPAGE));
0332 25E0 ldi R18,5
0334 30E0 ldi R19,0
0336 8501 movw R16,R10
0338 0E940000 xcall mod16s
033C 202F mov R18,R16
033E 02E0 ldi R16,2
0340 0E940000 xcall _RemoteSendScreen
0344 .dbline 149
0344 ; }
0344 L45:
0344 .dbline 150
0344 ; RemoteSendLine((FilePtr%SONGPAGE));
0344 25E0 ldi R18,5
0346 30E0 ldi R19,0
0348 8501 movw R16,R10
034A 0E940000 xcall mod16s
034E 0E940000 xcall _RemoteSendLine
0352 .dbline 151
0352 ; GetDir(Cluster,FilePtr,1,FALSE);
0352 2224 clr R2
0354 3324 clr R3
0356 3D82 std y+5,R3
0358 2C82 std y+4,R2
035A 81E0 ldi R24,1
035C 90E0 ldi R25,0
035E 9B83 std y+3,R25
0360 8A83 std y+2,R24
0362 B982 std y+1,R11
0364 A882 std y+0,R10
0366 FE01 movw R30,R28
0368 0489 ldd R16,z+20
036A 1589 ldd R17,z+21
036C 2689 ldd R18,z+22
036E 3789 ldd R19,z+23
0370 0E940000 xcall _GetDir
0374 .dbline 152
0374 ; PlayMP3();
0374 40D0 xcall _PlayMP3
0376 .dbline 153
0376 ; if (Key == 0x01) FilePtr = FilePtr;
0376 80910000 lds R24,_Key
037A 8130 cpi R24,1
037C 01F4 brne L47
037E .dbline 153
037E L47:
037E .dbline 154
037E ; if (Key == 0x02) FilePtr -=2;
037E 80910000 lds R24,_Key
0382 8230 cpi R24,2
0384 19F4 brne L49
0386 .dbline 154
0386 C501 movw R24,R10
0388 0297 sbiw R24,2
038A 5C01 movw R10,R24
038C L49:
038C .dbline 155
038C ; if (Key == 0x04) break;
038C 80910000 lds R24,_Key
0390 8430 cpi R24,4
0392 09F4 brne L51
0394 .dbline 155
0394 06C0 xjmp L42
0396 L51:
0396 .dbline 156
0396 ; if (Key == 0x08) break;
0396 80910000 lds R24,_Key
039A 8830 cpi R24,8
039C 09F4 brne L53
039E .dbline 156
039E 01C0 xjmp L42
03A0 L53:
03A0 .dbline 157
03A0 L41:
03A0 .dbline 139
03A0 9ACF xjmp L40
03A2 L42:
03A2 .dbline 158
03A2 ; }
03A2 ; GetDir(Cluster,Page*SONGPAGE,SONGPAGE,TRUE);
03A2 81E0 ldi R24,1
03A4 90E0 ldi R25,0
03A6 9D83 std y+5,R25
03A8 8C83 std y+4,R24
03AA 85E0 ldi R24,5
03AC 9B83 std y+3,R25
03AE 8A83 std y+2,R24
03B0 05E0 ldi R16,5
03B2 10E0 ldi R17,0
03B4 9701 movw R18,R14
03B6 0E940000 xcall empy16s
03BA 1983 std y+1,R17
03BC 0883 std y+0,R16
03BE FE01 movw R30,R28
03C0 0489 ldd R16,z+20
03C2 1589 ldd R17,z+21
03C4 2689 ldd R18,z+22
03C6 3789 ldd R19,z+23
03C8 0E940000 xcall _GetDir
03CC .dbline 159
03CC ; RemoteSendScreen(DIR,(FilePtr%SONGPAGE));
03CC 25E0 ldi R18,5
03CE 30E0 ldi R19,0
03D0 8501 movw R16,R10
03D2 0E940000 xcall mod16s
03D6 202F mov R18,R16
03D8 01E0 ldi R16,1
03DA 0E940000 xcall _RemoteSendScreen
03DE .dbline 160
03DE ; Key = 0;
03DE 2224 clr R2
03E0 20920000 sts _Key,R2
03E4 .dbline 161
03E4 ; }
03E4 L37:
03E4 .dbline 162
03E4 ; }
03E4 L34:
03E4 .dbline 163
03E4 L4:
03E4 .dbline 59
03E4 53CE xjmp L7
03E6 X1:
03E6 .dbline -2
03E6 L2:
03E6 2A96 adiw R28,10
03E8 0E940000 xcall pop_gset5
03EC 2496 adiw R28,4
03EE .dbline 0 ; func end
03EE 0895 ret
03F0 .dbsym l ch 7 c
03F0 .dbsym l LastCluster 6 l
03F0 .dbsym r MaxFile 12 i
03F0 .dbsym r Page 14 I
03F0 .dbsym r FilePtr 10 I
03F0 .dbsym l Cluster 20 l
03F0 .dbend
03F0 .dbfunc e _StackOverflowed __StackOverflowed fV
03F0 ; c -> R16
.even
03F0 __StackOverflowed::
03F0 .dbline -1
03F0 .dbline 170
03F0 ; }
03F0 ; }
03F0 ;
03F0 ; //*************************************
03F0 ; // void _StackOverflowed(char c)
03F0 ; //*************************************
03F0 ; void _StackOverflowed(char c)
03F0 ; {
03F0 .dbline 171
03F0 ; CLI();
03F0 F894 cli
03F2 L56:
03F2 .dbline 172
03F2 L57:
03F2 .dbline 172
03F2 FFCF xjmp L56
03F4 X5:
03F4 .dbline -2
03F4 L55:
03F4 .dbline 0 ; func end
03F4 0895 ret
03F6 .dbsym r c 16 c
03F6 .dbend
03F6 .dbfunc e PlayMP3 _PlayMP3 fI
03F6 ; Percent -> y+32
03F6 ; ByteSend -> y+28
03F6 ; NextCluster -> y+24
03F6 ; LBA -> y+20
03F6 ; i -> y+16
03F6 ; j -> y+12
03F6 ; TimeOut -> y+8
.even
03F6 _PlayMP3::
03F6 0E940000 xcall push_gset2
03FA A497 sbiw R28,36
03FC .dbline -1
03FC .dbline 182
03FC ; while(1);
03FC ; }
03FC ;
03FC ; //*************************************
03FC ; // int PlayMP3(void)
03FC ; //
03FC ; // return 0 -> Error
03FC ; // return 1 -> successfull play
03FC ; //*************************************
03FC ; int PlayMP3(void)
03FC ; {
03FC .dbline 188
03FC ; extern unsigned char SectorBuffer[512];
03FC ; unsigned long LBA,i,j,NextCluster,TimeOut,ByteSend,Percent;
03FC ; extern struct FileInfo File;
03FC ; extern struct BootRecord Boot;
03FC ;
03FC ; VS1001Init(SOFT);
03FC 0027 clr R16
03FE 0E940000 xcall _VS1001Init
0402 .dbline 189
0402 ; Key = 0;
0402 2224 clr R2
0404 20920000 sts _Key,R2
0408 .dbline 190
0408 ; ByteSend = 0;
0408 40E0 ldi R20,0
040A 50E0 ldi R21,0
040C 60E0 ldi R22,0
040E 70E0 ldi R23,0
0410 FE01 movw R30,R28
0412 448F std z+28,R20
0414 558F std z+29,R21
0416 668F std z+30,R22
0418 778F std z+31,R23
041A .dbline 191
041A ; NextCluster = File.FirstClust;
041A 40900601 lds R4,_File+260+2
041E 50900701 lds R5,_File+260+2+1
0422 20900401 lds R2,_File+260
0426 30900501 lds R3,_File+260+1
042A FE01 movw R30,R28
042C 208E std z+24,R2
042E 318E std z+25,R3
0430 428E std z+26,R4
0432 538E std z+27,R5
0434 24C1 xjmp L62
0436 L61:
0436 .dbline 193
0436 ; while (1)
0436 ; {
0436 .dbline 194
0436 ; LBA = Clust2LBA(NextCluster);
0436 FE01 movw R30,R28
0438 008D ldd R16,z+24
043A 118D ldd R17,z+25
043C 228D ldd R18,z+26
043E 338D ldd R19,z+27
0440 0E940000 xcall _Clust2LBA
0444 FE01 movw R30,R28
0446 048B std z+20,R16
0448 158B std z+21,R17
044A 268B std z+22,R18
044C 378B std z+23,R19
044E .dbline 195
044E ; for (i=0;i<Boot.SecPerClust;i++)
044E 40E0 ldi R20,0
0450 50E0 ldi R21,0
0452 60E0 ldi R22,0
0454 70E0 ldi R23,0
0456 FE01 movw R30,R28
0458 408B std z+16,R20
045A 518B std z+17,R21
045C 628B std z+18,R22
045E 738B std z+19,R23
0460 A4C0 xjmp L67
0462 L64:
0462 .dbline 196
0462 ; {
0462 .dbline 197
0462 ; ata_read_sector_byte(0, LBA+i, 0, 512, (unsigned char*)&SectorBuffer);
0462 80E0 ldi R24,<_SectorBuffer
0464 90E0 ldi R25,>_SectorBuffer
0466 9F83 std y+7,R25
0468 8E83 std y+6,R24
046A 80E0 ldi R24,512
046C 92E0 ldi R25,2
046E 9D83 std y+5,R25
0470 8C83 std y+4,R24
0472 2224 clr R2
0474 3324 clr R3
0476 3B82 std y+3,R3
0478 2A82 std y+2,R2
047A FE01 movw R30,R28
047C 2088 ldd R2,z+16
047E 3188 ldd R3,z+17
0480 4288 ldd R4,z+18
0482 5388 ldd R5,z+19
0484 FE01 movw R30,R28
0486 6488 ldd R6,z+20
0488 7588 ldd R7,z+21
048A 8688 ldd R8,z+22
048C 9788 ldd R9,z+23
048E 620C add R6,R2
0490 731C adc R7,R3
0492 841C adc R8,R4
0494 951C adc R9,R5
0496 8882 std y+0,R8
0498 9982 std y+1,R9
049A 9301 movw R18,R6
049C 0027 clr R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -