📄 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 C:\DATA\MP3\Player\Code2\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 C:\DATA\MP3\Player\Code2\MP3Player.c
0002 .dbsym e IsPlaying _IsPlaying c
.area text(rom, con, rel)
0000 .dbfile C:\DATA\MP3\Player\Code2\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 .dbline -2
0038 .dbline 39
0038 ; }
0038 L1:
0038 .dbline 0 ; func end
0038 00C0 xjmp _DirBrowser
003A .dbend
003A .dbfunc e DirBrowser _DirBrowser fV
003A ; ch -> <dead>
003A ; LastCluster -> y+6
003A ; MaxFile -> R14,R15
003A ; Page -> R12,R13
003A ; FilePtr -> R10,R11
003A ; Cluster -> y+20
.even
003A _DirBrowser::
003A 0E940000 xcall push_arg4
003E 0E940000 xcall push_gset5
0042 2A97 sbiw R28,10
0044 .dbline -1
0044 .dbline 45
0044 ;
0044 ; //*************************************
0044 ; // void DirBrowser(unsigned long Cluster)
0044 ; //*************************************
0044 ; void DirBrowser(unsigned long Cluster)
0044 ; {
0044 .dbline 51
0044 ; extern unsigned char text[255];
0044 ; extern struct FileInfo File;
0044 ; unsigned long LastCluster;
0044 ; unsigned char ch;
0044 ; unsigned int MaxFile;
0044 ; int FilePtr = 0;
0044 AA24 clr R10
0046 BB24 clr R11
0048 .dbline 52
0048 ; int Page = 0;
0048 CC24 clr R12
004A DD24 clr R13
004C .dbline 54
004C ;
004C ; Key = 0xff;
004C 8FEF ldi R24,255
004E 80930000 sts _Key,R24
0052 .dbline 55
0052 ; FilePtr = 0;
0052 .dbline 56
0052 ; Page = 99;
0052 83E6 ldi R24,99
0054 90E0 ldi R25,0
0056 6C01 movw R12,R24
0058 .dbline 57
0058 ; MaxFile = GetDir(Cluster,FilePtr,999,FALSE);
0058 2224 clr R2
005A 3324 clr R3
005C 3D82 std y+5,R3
005E 2C82 std y+4,R2
0060 87EE ldi R24,999
0062 93E0 ldi R25,3
0064 9B83 std y+3,R25
0066 8A83 std y+2,R24
0068 B982 std y+1,R11
006A A882 std y+0,R10
006C FE01 movw R30,R28
006E 0489 ldd R16,z+20
0070 1589 ldd R17,z+21
0072 2689 ldd R18,z+22
0074 3789 ldd R19,z+23
0076 0E940000 xcall _GetDir
007A 7801 movw R14,R16
007C B0C1 xjmp L4
007E X0:
007E .dbline 60
007E ;
007E ; while(1)
007E ; {
007E L6:
007E .dbline 62
007E .dbline 63
007E A895 wdr
0080 .dbline 64
0080 0E940000 xcall __StackCheck
0084 .dbline 65
0084 2224 clr R2
0086 20920100 sts _IsPlaying,R2
008A .dbline 66
008A L7:
008A .dbline 61
008A ; while (Key == 0)
008A 20900000 lds R2,_Key
008E 2220 tst R2
0090 B1F3 breq L6
0092 .dbline 68
0092 ; {
0092 ; WDR();
0092 ; _StackCheck();
0092 ; IsPlaying = FALSE;
0092 ; }
0092 ;
0092 ; IsPlaying = TRUE;
0092 81E0 ldi R24,1
0094 80930100 sts _IsPlaying,R24
0098 .dbline 71
0098 ; // Down
0098 ;
0098 ; if ((Key == 0x01) || (Key == 0x81) || (Key == 0xff))
0098 80910000 lds R24,_Key
009C 8130 cpi R24,1
009E 49F0 breq L12
00A0 80910000 lds R24,_Key
00A4 8138 cpi R24,129
00A6 29F0 breq L12
00A8 80910000 lds R24,_Key
00AC 8F3F cpi R24,255
00AE 09F0 breq X2
00B0 4BC0 xjmp L9
00B2 X2:
00B2 L12:
00B2 .dbline 72
00B2 ; {
00B2 .dbline 73
00B2 ; if (Key == 0x01) FilePtr++;
00B2 80910000 lds R24,_Key
00B6 8130 cpi R24,1
00B8 19F4 brne L13
00BA .dbline 73
00BA C501 movw R24,R10
00BC 0196 adiw R24,1
00BE 5C01 movw R10,R24
00C0 L13:
00C0 .dbline 74
00C0 ; if (Key == 0x81) FilePtr += SONGPAGE;
00C0 80910000 lds R24,_Key
00C4 8138 cpi R24,129
00C6 19F4 brne L15
00C8 .dbline 74
00C8 C501 movw R24,R10
00CA 0596 adiw R24,5
00CC 5C01 movw R10,R24
00CE L15:
00CE .dbline 75
00CE ; if (FilePtr >= MaxFile) FilePtr--;
00CE AE14 cp R10,R14
00D0 BF04 cpc R11,R15
00D2 18F0 brlo L17
00D4 .dbline 75
00D4 C501 movw R24,R10
00D6 0197 sbiw R24,1
00D8 5C01 movw R10,R24
00DA L17:
00DA .dbline 76
00DA ; if ((FilePtr / SONGPAGE) != Page)
00DA 25E0 ldi R18,5
00DC 30E0 ldi R19,0
00DE 8501 movw R16,R10
00E0 0E940000 xcall div16s
00E4 0C15 cp R16,R12
00E6 1D05 cpc R17,R13
00E8 29F1 breq L19
00EA .dbline 77
00EA ; {
00EA .dbline 78
00EA ; Page = FilePtr / SONGPAGE;
00EA 25E0 ldi R18,5
00EC 30E0 ldi R19,0
00EE 8501 movw R16,R10
00F0 0E940000 xcall div16s
00F4 6801 movw R12,R16
00F6 .dbline 79
00F6 ; GetDir(Cluster,Page*SONGPAGE,SONGPAGE,TRUE);
00F6 81E0 ldi R24,1
00F8 90E0 ldi R25,0
00FA 9D83 std y+5,R25
00FC 8C83 std y+4,R24
00FE 85E0 ldi R24,5
0100 9B83 std y+3,R25
0102 8A83 std y+2,R24
0104 05E0 ldi R16,5
0106 10E0 ldi R17,0
0108 9601 movw R18,R12
010A 0E940000 xcall empy16s
010E 1983 std y+1,R17
0110 0883 std y+0,R16
0112 FE01 movw R30,R28
0114 0489 ldd R16,z+20
0116 1589 ldd R17,z+21
0118 2689 ldd R18,z+22
011A 3789 ldd R19,z+23
011C 0E940000 xcall _GetDir
0120 .dbline 80
0120 ; RemoteSendScreen(DIR,(FilePtr%SONGPAGE));
0120 25E0 ldi R18,5
0122 30E0 ldi R19,0
0124 8501 movw R16,R10
0126 0E940000 xcall mod16s
012A 202F mov R18,R16
012C 01E0 ldi R16,1
012E 0E940000 xcall _RemoteSendScreen
0132 .dbline 81
0132 ; }
0132 07C0 xjmp L20
0134 L19:
0134 .dbline 83
0134 ; else
0134 ; {
0134 .dbline 84
0134 ; RemoteSendLine((FilePtr%SONGPAGE));
0134 25E0 ldi R18,5
0136 30E0 ldi R19,0
0138 8501 movw R16,R10
013A 0E940000 xcall mod16s
013E 0E940000 xcall _RemoteSendLine
0142 .dbline 85
0142 ; }
0142 L20:
0142 .dbline 86
0142 ; Key = 0;
0142 2224 clr R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -