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

📄 vs1001.lis

📁 diy硬盘mp3的程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module vs1001.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DATA\MP3\Player\Code\vs1001.c
 0000                   .dbfunc e WriteByteSPI _WriteByteSPI fc
 0000           ;           byte -> R16
                        .even
 0000           _WriteByteSPI::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include "vs1001.h"
 0000           ; #include "generic.h"
 0000           ; #include "remote.h"
 0000           ; 
 0000           ; //*************************************
 0000           ; // unsigned char byte void WriteByteSPI(unsigned char byte)
 0000           ; //*************************************
 0000           ; unsigned char WriteByteSPI(unsigned char byte)
 0000           ; {
 0000                   .dbline 12
 0000           ; SPDR = byte;
 0000 0FB9              out 0xf,R16
 0002           L2:
 0002                   .dbline 13
 0002           L3:
 0002                   .dbline 13
 0002           ; while(!(SPSR & (1<<SPIF))); // Wait Queue off
 0002 779B              sbis 0xe,7
 0004 FECF              rjmp L2
 0006                   .dbline 14
 0006           ; return SPDR;
 0006 0FB1              in R16,0xf
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbsym r byte 16 c
 000A                   .dbend
 000A                   .dbfunc e VS1001_Read _VS1001_Read fV
 000A           ;          pData -> R22,R23
 000A           ;          Count -> R20,R21
 000A           ;        Address -> R10
                        .even
 000A           _VS1001_Read::
 000A 0E940000          xcall push_gset3
 000E A901              movw R20,R18
 0010 A02E              mov R10,R16
 0012 6E81              ldd R22,y+6
 0014 7F81              ldd R23,y+7
 0016                   .dbline -1
 0016                   .dbline 21
 0016           ; }
 0016           ; 
 0016           ; //*************************************
 0016           ; // void VS1001_Read(unsigned char Address,int Count,unsigned int *pData)
 0016           ; //*************************************
 0016           ; void VS1001_Read(unsigned char Address,int Count,unsigned int *pData)
 0016           ; {
 0016                   .dbline 22
 0016           ; PORT_MP3_OUT &= ~XCS;            // XCS Low
 0016 C498              cbi 0x18,4
 0018                   .dbline 23
 0018           ; WriteByteSPI(VS1001_READ);
 0018 03E0              ldi R16,3
 001A F2DF              xcall _WriteByteSPI
 001C                   .dbline 24
 001C           ; WriteByteSPI(Address);
 001C 0A2D              mov R16,R10
 001E F0DF              xcall _WriteByteSPI
 0020 1AC0              xjmp L7
 0022           L6:
 0022                   .dbline 26
 0022                   .dbline 27
 0022 0027              clr R16
 0024 EDDF              xcall _WriteByteSPI
 0026 202E              mov R2,R16
 0028 3324              clr R3
 002A 322C              mov R3,R2
 002C 2224              clr R2
 002E FB01              movw R30,R22
 0030 3182              std z+1,R3
 0032 2082              std z+0,R2
 0034                   .dbline 28
 0034 6E5F              subi R22,254  ; offset = 2
 0036 7F4F              sbci R23,255
 0038 0027              clr R16
 003A EF93              push R30
 003C FF93              push R31
 003E E0DF              xcall _WriteByteSPI
 0040 3F90              pop R3
 0042 2F90              pop R2
 0044 402E              mov R4,R16
 0046 5524              clr R5
 0048 F101              movw R30,R2
 004A 6080              ldd R6,z+0
 004C 7180              ldd R7,z+1
 004E 6428              or R6,R4
 0050 7528              or R7,R5
 0052 7182              std z+1,R7
 0054 6082              std z+0,R6
 0056                   .dbline 29
 0056           L7:
 0056                   .dbline 25
 0056           ; while(Count--)
 0056 1A01              movw R2,R20
 0058 4150              subi R20,1
 005A 5040              sbci R21,0
 005C 2220              tst R2
 005E 09F7              brne L6
 0060 3320              tst R3
 0062 F9F6              brne L6
 0064           X0:
 0064                   .dbline 30
 0064           ;                         {
 0064           ;                         *pData = WriteByteSPI(0) << 8;
 0064           ;                         *pData++ |= WriteByteSPI(0);
 0064           ;                         }
 0064           ; PORT_MP3_OUT |= XCS;             // XCS High
 0064 C49A              sbi 0x18,4
 0066                   .dbline 31
 0066           ; delay_us(5);
 0066 05E0              ldi R16,5
 0068 10E0              ldi R17,0
 006A 0E940000          xcall _delay_us
 006E                   .dbline -2
 006E                   .dbline 32
 006E           ; }
 006E           L5:
 006E 0E940000          xcall pop_gset3
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbsym r pData 22 pi
 0074                   .dbsym r Count 20 I
 0074                   .dbsym r Address 10 c
 0074                   .dbend
 0074                   .dbfunc e VS1001_Write _VS1001_Write fV
 0074           ;          pData -> R22,R23
 0074           ;          Count -> R20,R21
 0074           ;        Address -> R10
                        .even
 0074           _VS1001_Write::
 0074 0E940000          xcall push_gset3
 0078 A901              movw R20,R18
 007A A02E              mov R10,R16
 007C 6E81              ldd R22,y+6
 007E 7F81              ldd R23,y+7
 0080                   .dbline -1
 0080                   .dbline 38
 0080           ; 
 0080           ; //*************************************
 0080           ; // void VS1001_Write(unsigned char Address,int Count,unsigned int *pData)
 0080           ; //*************************************
 0080           ; void VS1001_Write(unsigned char Address,int Count,unsigned int *pData)
 0080           ; {
 0080                   .dbline 39
 0080           ; PORT_MP3_OUT &= ~XCS;            // XCS Low
 0080 C498              cbi 0x18,4
 0082                   .dbline 40
 0082           ; WriteByteSPI(VS1001_WRITE);
 0082 02E0              ldi R16,2
 0084 BDDF              xcall _WriteByteSPI
 0086                   .dbline 41
 0086           ; WriteByteSPI(Address);
 0086 0A2D              mov R16,R10
 0088 BBDF              xcall _WriteByteSPI
 008A 09C0              xjmp L11
 008C           L10:
 008C                   .dbline 43
 008C                   .dbline 44
 008C FB01              movw R30,R22
 008E 0081              ldd R16,z+0
 0090 1181              ldd R17,z+1
 0092 012F              mov R16,R17
 0094 1127              clr R17
 0096 B4DF              xcall _WriteByteSPI
 0098                   .dbline 45
 0098 FB01              movw R30,R22
 009A 0081              ldd R16,z+0
 009C B1DF              xcall _WriteByteSPI
 009E                   .dbline 46
 009E           L11:
 009E                   .dbline 42
 009E           ; while(Count--)
 009E 1A01              movw R2,R20
 00A0 4150              subi R20,1
 00A2 5040              sbci R21,0
 00A4 2220              tst R2
 00A6 91F7              brne L10
 00A8 3320              tst R3
 00AA 81F7              brne L10
 00AC           X1:
 00AC                   .dbline 47
 00AC           ;                         {
 00AC           ;                         WriteByteSPI((unsigned char) ((*pData) >> 8)); 
 00AC           ;                         WriteByteSPI((unsigned char) *pData); 
 00AC           ;                         }
 00AC           ; PORT_MP3_OUT |= XCS;             // XCS High
 00AC C49A              sbi 0x18,4
 00AE                   .dbline 48
 00AE           ; delay_us(5);
 00AE 05E0              ldi R16,5
 00B0 10E0              ldi R17,0
 00B2 0E940000          xcall _delay_us
 00B6                   .dbline -2
 00B6                   .dbline 49
 00B6           ; }
 00B6           L9:
 00B6 0E940000          xcall pop_gset3
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbsym r pData 22 pi
 00BC                   .dbsym r Count 20 I
 00BC                   .dbsym r Address 10 c
 00BC                   .dbend
 00BC                   .dbfunc e VS1001_Stream _VS1001_Stream fV
 00BC           ;            Qte -> R22
 00BC           ;           Data -> R20,R21
                        .even
 00BC           _VS1001_Stream::
 00BC 0E940000          xcall push_gset2
 00C0 622F              mov R22,R18
 00C2 A801              movw R20,R16
 00C4                   .dbline -1
 00C4                   .dbline 55
 00C4           ; 
 00C4           ; //*************************************
 00C4           ; // void VS1001_Stream(unsigned char Data,unsigned char Qte)
 00C4           ; //*************************************
 00C4           ; void VS1001_Stream(unsigned char *Data,unsigned char Qte)
 00C4           ; {
 00C4 0EC0              xjmp L15
 00C6           L14:
 00C6                   .dbline 57
 00C6           ; while(Qte--)
 00C6           ;                       {
 00C6                   .dbline 58
 00C6           ;                       PORT_MP3_OUT |= BSYNC;             // BSYNC High
 00C6 C59A              sbi 0x18,5
 00C8                   .dbline 59
 00C8           ;                       WDR();
 00C8 A895              wdr
 00CA                   .dbline 60
 00CA           ;                       WDR();
 00CA A895              wdr
 00CC                   .dbline 61
 00CC           ;                       SPDR = *Data++;
 00CC FA01              movw R30,R20
 00CE 2190              ld R2,Z+
 00D0 AF01              movw R20,R30
 00D2 2FB8              out 0xf,R2
 00D4                   .dbline 62
 00D4           ;                       delay_us(1);
 00D4 01E0              ldi R16,1
 00D6 10E0              ldi R17,0
 00D8 0E940000          xcall _delay_us
 00DC                   .dbline 63
 00DC           ;                       PORT_MP3_OUT &= ~BSYNC;            // BSYNC Low
 00DC C598              cbi 0x18,5
 00DE           L17:
 00DE                   .dbline 64
 00DE           L18:
 00DE                   .dbline 64
 00DE 779B              sbis 0xe,7
 00E0 FECF              rjmp L17
 00E2                   .dbline 65
 00E2           L15:
 00E2                   .dbline 56
 00E2 262E              mov R2,R22
 00E4 3324              clr R3
 00E6 6150              subi R22,1
 00E8 2220              tst R2
 00EA 69F7              brne L14
 00EC                   .dbline -2
 00EC                   .dbline 66
 00EC           ;                       while(!(SPSR & (1<<SPIF)));    // Wait Queue off
 00EC           ;                       }
 00EC           ; }
 00EC           L13:
 00EC 0E940000          xcall pop_gset2
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r Qte 22 c

⌨️ 快捷键说明

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