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

📄 mp3player.lis

📁 使用硬盘制作mp3的源程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -