📄 mp3player.lis
字号:
.module MP3Player.c
.area data(ram, con, rel)
0000 _Key::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\IccPro\Mp3Ide\MP3Player.c
0001 .dbsym e Key _Key c
0001 _IsPlaying::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile G:\IccPro\Mp3Ide\MP3Player.c
0002 .dbsym e IsPlaying _IsPlaying c
.area text(rom, con, rel)
0000 .dbfile G:\IccPro\Mp3Ide\MP3Player.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 25
0000 ; #include <iom128v.h>
0000 ; #include "fat.h"
0000 ; #include "ata.h"
0000 ; #include "vs1001.h"
0000 ; #include "remote.h"
0000 ; #include "main.h"
0000 ; #include "generic.h"
0000 ; #include "usb.h"
0000 ; #include <string.h>
0000 ; #include <stdio.h>
0000 ; #include <macros.h>
0000 ;
0000 ; //******************************************************************
0000 ; //* MAIN Global Variable
0000 ; //******************************************************************
0000 ; unsigned char SectorBuffer[512];
0000 ; unsigned char RemoteTextLine[5][40];
0000 ; volatile unsigned char Key = 0;
0000 ; volatile unsigned char IsPlaying = FALSE;
0000 ;
0000 ; //*************************************
0000 ; // void main(void)
0000 ; //*************************************
0000 ; void main(void)
0000 ; {
0000 .dbline 26
0000 ; InitRemote();
0000 0E940000 xcall _InitRemote
0004 .dbline 27
0004 ; InitUSB();
0004 0E940000 xcall _InitUSB
0008 .dbline 28
0008 ; WDR();
0008 A895 wdr
000A .dbline 29
000A ; WDTCR = 0x0f; // Watch Dog enable
000A 8FE0 ldi R24,15
000C 81BD out 0x21,R24
000E .dbline 30
000E ; VS1001Init(HARD);
000E 01E0 ldi R16,1
0010 0E940000 xcall _VS1001Init
0014 .dbline 31
0014 ; init_ata(0);
0014 0027 clr R16
0016 0E940000 xcall _init_ata
001A .dbline 32
001A ; Reg_Test();
001A 0E940000 xcall _Reg_Test
001E .dbline 33
001E ; InitFat();
001E 0E940000 xcall _InitFat
0022 .dbline 34
0022 ; VS1001_SetVolume(50,50);
0022 22E3 ldi R18,50
0024 02E3 ldi R16,50
0026 0E940000 xcall _VS1001_SetVolume
002A .dbline 35
002A ; Sine_Sweep();
002A 0E940000 xcall _Sine_Sweep
002E .dbline 36
002E ; SEI();
002E 7894 sei
0030 .dbline 38
0030 ;
0030 ; DirBrowser(2);
0030 02E0 ldi R16,2
0032 10E0 ldi R17,0
0034 20E0 ldi R18,0
0036 30E0 ldi R19,0
0038 01D0 xcall _DirBrowser
003A .dbline -2
003A L1:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
003C .dbfunc e DirBrowser _DirBrowser fV
003C ; ch -> <dead>
003C ; LastCluster -> y+6
003C ; MaxFile -> R12,R13
003C ; Page -> R14,R15
003C ; FilePtr -> R10,R11
003C ; Cluster -> y+20
.even
003C _DirBrowser::
003C 0E940000 xcall push_arg4
0040 0E940000 xcall push_gset5
0044 2A97 sbiw R28,10
0046 .dbline -1
0046 .dbline 45
0046 ; }
0046 ;
0046 ; //*************************************
0046 ; // void DirBrowser(unsigned long Cluster)
0046 ; //*************************************
0046 ; void DirBrowser(unsigned long Cluster)
0046 ; {
0046 .dbline 51
0046 ; extern unsigned char text[255];
0046 ; extern struct FileInfo File;
0046 ; unsigned long LastCluster;
0046 ; unsigned char ch;
0046 ; unsigned int MaxFile;
0046 ; int FilePtr = 0;
0046 AA24 clr R10
0048 BB24 clr R11
004A .dbline 52
004A ; int Page = 0;
004A EE24 clr R14
004C FF24 clr R15
004E .dbline 54
004E ;
004E ; Key = 0xff;
004E 8FEF ldi R24,255
0050 80930000 sts _Key,R24
0054 .dbline 55
0054 ; FilePtr = 0;
0054 .dbline 56
0054 ; Page = 99;
0054 83E6 ldi R24,99
0056 90E0 ldi R25,0
0058 7C01 movw R14,R24
005A .dbline 57
005A ; MaxFile = GetDir(Cluster,FilePtr,999,FALSE);
005A 2224 clr R2
005C 3324 clr R3
005E 3D82 std y+5,R3
0060 2C82 std y+4,R2
0062 87EE ldi R24,999
0064 93E0 ldi R25,3
0066 9B83 std y+3,R25
0068 8A83 std y+2,R24
006A B982 std y+1,R11
006C A882 std y+0,R10
006E FE01 movw R30,R28
0070 0489 ldd R16,z+20
0072 1589 ldd R17,z+21
0074 2689 ldd R18,z+22
0076 3789 ldd R19,z+23
0078 0E940000 xcall _GetDir
007C 6801 movw R12,R16
007E B2C1 xjmp L4
0080 X0:
0080 .dbline 60
0080 ;
0080 ; while(1)
0080 ; {
0080 L6:
0080 .dbline 62
0080 .dbline 63
0080 A895 wdr
0082 .dbline 64
0082 0E940000 xcall __StackCheck
0086 .dbline 65
0086 2224 clr R2
0088 20920100 sts _IsPlaying,R2
008C .dbline 66
008C L7:
008C .dbline 61
008C ; while (Key == 0)
008C 20900000 lds R2,_Key
0090 2220 tst R2
0092 B1F3 breq L6
0094 .dbline 68
0094 ; {
0094 ; WDR();
0094 ; _StackCheck();
0094 ; IsPlaying = FALSE;
0094 ; }
0094 ;
0094 ; IsPlaying = TRUE;
0094 81E0 ldi R24,1
0096 80930100 sts _IsPlaying,R24
009A .dbline 71
009A ; // Down
009A ;
009A ; if ((Key == 0x01) || (Key == 0x81) || (Key == 0xff))
009A 80910000 lds R24,_Key
009E 8130 cpi R24,1
00A0 49F0 breq L12
00A2 80910000 lds R24,_Key
00A6 8138 cpi R24,129
00A8 29F0 breq L12
00AA 80910000 lds R24,_Key
00AE 8F3F cpi R24,255
00B0 09F0 breq X2
00B2 4BC0 xjmp L9
00B4 X2:
00B4 L12:
00B4 .dbline 72
00B4 ; {
00B4 .dbline 73
00B4 ; if (Key == 0x01) FilePtr++;
00B4 80910000 lds R24,_Key
00B8 8130 cpi R24,1
00BA 19F4 brne L13
00BC .dbline 73
00BC C501 movw R24,R10
00BE 0196 adiw R24,1
00C0 5C01 movw R10,R24
00C2 L13:
00C2 .dbline 74
00C2 ; if (Key == 0x81) FilePtr += SONGPAGE;
00C2 80910000 lds R24,_Key
00C6 8138 cpi R24,129
00C8 19F4 brne L15
00CA .dbline 74
00CA C501 movw R24,R10
00CC 0596 adiw R24,5
00CE 5C01 movw R10,R24
00D0 L15:
00D0 .dbline 75
00D0 ; if (FilePtr >= MaxFile) FilePtr--;
00D0 AC14 cp R10,R12
00D2 BD04 cpc R11,R13
00D4 18F0 brlo L17
00D6 .dbline 75
00D6 C501 movw R24,R10
00D8 0197 sbiw R24,1
00DA 5C01 movw R10,R24
00DC L17:
00DC .dbline 76
00DC ; if ((FilePtr / SONGPAGE) != Page)
00DC 25E0 ldi R18,5
00DE 30E0 ldi R19,0
00E0 8501 movw R16,R10
00E2 0E940000 xcall div16s
00E6 0E15 cp R16,R14
00E8 1F05 cpc R17,R15
00EA 29F1 breq L19
00EC .dbline 77
00EC ; {
00EC .dbline 78
00EC ; Page = FilePtr / SONGPAGE;
00EC 25E0 ldi R18,5
00EE 30E0 ldi R19,0
00F0 8501 movw R16,R10
00F2 0E940000 xcall div16s
00F6 7801 movw R14,R16
00F8 .dbline 79
00F8 ; GetDir(Cluster,Page*SONGPAGE,SONGPAGE,TRUE);
00F8 81E0 ldi R24,1
00FA 90E0 ldi R25,0
00FC 9D83 std y+5,R25
00FE 8C83 std y+4,R24
0100 85E0 ldi R24,5
0102 9B83 std y+3,R25
0104 8A83 std y+2,R24
0106 05E0 ldi R16,5
0108 10E0 ldi R17,0
010A 9701 movw R18,R14
010C 0E940000 xcall empy16s
0110 1983 std y+1,R17
0112 0883 std y+0,R16
0114 FE01 movw R30,R28
0116 0489 ldd R16,z+20
0118 1589 ldd R17,z+21
011A 2689 ldd R18,z+22
011C 3789 ldd R19,z+23
011E 0E940000 xcall _GetDir
0122 .dbline 80
0122 ; RemoteSendScreen(DIR,(FilePtr%SONGPAGE));
0122 25E0 ldi R18,5
0124 30E0 ldi R19,0
0126 8501 movw R16,R10
0128 0E940000 xcall mod16s
012C 202F mov R18,R16
012E 01E0 ldi R16,1
0130 0E940000 xcall _RemoteSendScreen
0134 .dbline 81
0134 ; }
0134 07C0 xjmp L20
0136 L19:
0136 .dbline 83
0136 ; else
0136 ; {
0136 .dbline 84
0136 ; RemoteSendLine((FilePtr%SONGPAGE));
0136 25E0 ldi R18,5
0138 30E0 ldi R19,0
013A 8501 movw R16,R10
013C 0E940000 xcall mod16s
0140 0E940000 xcall _RemoteSendLine
0144 .dbline 85
0144 ; }
0144 L20:
0144 .dbline 86
0144 ; Key = 0;
0144 2224 clr R2
0146 20920000 sts _Key,R2
014A .dbline 87
014A ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -