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

📄 vs1003.lis

📁 M16-Mp3.rar
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 003A                   .dbsym r dat 10 i
 003A                   .dbsym r addr 12 c
 003A                   .dbend
 003A                   .dbfunc e VS1003_ReadReg _VS1003_ReadReg fi
 003A           ;           datL -> R12,R13
 003A           ;            dat -> R10,R11
 003A           ;           addr -> R14
                        .even
 003A           _VS1003_ReadReg::
 003A 0E940000          xcall push_xgset00FC
 003E E02E              mov R14,R16
 0040                   .dbline -1
 0040                   .dbline 71
 0040           ; }
 0040           ; 
 0040           ; 
 0040           ; 
 0040           ; //---------------------------------
 0040           ; //
 0040           ; // VS1003读寄存器函数 
 0040           ; // addr:VS1003内部寄存器地址
 0040           ; // dat:返回的数据
 0040           ; //
 0040           ; //---------------------------------
 0040           ; uint16 VS1003_ReadReg(uint8 addr)
 0040           ; {
 0040                   .dbline 72
 0040           ;       uint16 dat = 0x0000;
 0040                   .dbline 73
 0040           ;       uint16 datL = 0x0000;
 0040                   .dbline 75
 0040           ;               
 0040           ;       VS1003_XDCS_SET();
 0040 AD9A              sbi 0x15,5
 0042                   .dbline 76
 0042           ;       VS1003_CS_CLR();                                                                
 0042 AC98              cbi 0x15,4
 0044                   .dbline 78
 0044           ; 
 0044           ;       SPI_SrByte(VS1003_READ_COM);
 0044 03E0              ldi R16,3
 0046 0E940000          xcall _SPI_SrByte
 004A                   .dbline 79
 004A           ;       SPI_SrByte(addr);
 004A 0E2D              mov R16,R14
 004C 0E940000          xcall _SPI_SrByte
 0050                   .dbline 81
 0050           ; 
 0050           ;       dat     = SPI_SrByte(0xff);
 0050 0FEF              ldi R16,255
 0052 0E940000          xcall _SPI_SrByte
 0056 A02E              mov R10,R16
 0058 BB24              clr R11
 005A                   .dbline 82
 005A           ;       dat     = dat<<8;
 005A BA2C              mov R11,R10
 005C AA24              clr R10
 005E                   .dbline 83
 005E           ;       datL = SPI_SrByte(0xff);
 005E 0FEF              ldi R16,255
 0060 0E940000          xcall _SPI_SrByte
 0064 C02E              mov R12,R16
 0066 DD24              clr R13
 0068                   .dbline 84
 0068           ;       dat     =dat|datL;
 0068 AC28              or R10,R12
 006A BD28              or R11,R13
 006C                   .dbline 86
 006C           ;       
 006C           ;       VS1003_CS_SET();
 006C AC9A              sbi 0x15,4
 006E                   .dbline 87
 006E           ;       VS1003_XDCS_SET();
 006E AD9A              sbi 0x15,5
 0070                   .dbline 89
 0070           ;       
 0070           ;       return dat;
 0070 8501              movw R16,R10
 0072                   .dbline -2
 0072           L3:
 0072                   .dbline 0 ; func end
 0072 0C940000          xjmp pop_xgset00FC
 0076                   .dbsym r datL 12 i
 0076                   .dbsym r dat 10 i
 0076                   .dbsym r addr 14 c
 0076                   .dbend
 0076                   .dbfunc e VS1003_WriteDat _VS1003_WriteDat fV
 0076           ;            dat -> R10
                        .even
 0076           _VS1003_WriteDat::
 0076 AA92              st -y,R10
 0078 A02E              mov R10,R16
 007A                   .dbline -1
 007A                   .dbline 100
 007A           ; }
 007A           ; 
 007A           ; 
 007A           ; //---------------------------------
 007A           ; //
 007A           ; // VS1003写数据函数 
 007A           ; // dat:要写入的数据
 007A           ; //
 007A           ; //---------------------------------
 007A           ; void VS1003_WriteDat(uint8 dat)
 007A           ; {
 007A                   .dbline 101
 007A           ;       VS1003_XDCS_CLR();
 007A AD98              cbi 0x15,5
 007C                   .dbline 103
 007C           ;       
 007C           ;       VS1003_CS_CLR();
 007C AC98              cbi 0x15,4
 007E                   .dbline 105
 007E           ; 
 007E           ;       SPI_SrByte(dat);
 007E 0A2D              mov R16,R10
 0080 0E940000          xcall _SPI_SrByte
 0084                   .dbline 106
 0084           ;       VS1003_CS_SET();
 0084 AC9A              sbi 0x15,4
 0086                   .dbline 107
 0086           ;       VS1003_XDCS_SET();
 0086 AD9A              sbi 0x15,5
 0088                   .dbline -2
 0088           L4:
 0088                   .dbline 0 ; func end
 0088 A990              ld R10,y+
 008A 0895              ret
 008C                   .dbsym r dat 10 c
 008C                   .dbend
 008C                   .dbfunc e VS1003_HwRst _VS1003_HwRst fV
                        .even
 008C           _VS1003_HwRst::
 008C                   .dbline -1
 008C                   .dbline 117
 008C           ; }
 008C           ; 
 008C           ; 
 008C           ; //---------------------------------
 008C           ; //
 008C           ; //      VS1003写硬复位函数 
 008C           ; //
 008C           ; //---------------------------------
 008C           ; void VS1003_HwRst(void)
 008C           ; {
 008C                   .dbline 118
 008C           ;       VS1003_XRESET_CLR();                                            
 008C AE98              cbi 0x15,6
 008E                   .dbline 120
 008E           ;                                                                               
 008E           ;       VS1003_XRESET_SET();                                                            
 008E AE9A              sbi 0x15,6
 0090                   .dbline -2
 0090           L5:
 0090                   .dbline 0 ; func end
 0090 0895              ret
 0092                   .dbend
 0092                   .dbfunc e VS1003_SfRst _VS1003_SfRst fV
                        .even
 0092           _VS1003_SfRst::
 0092                   .dbline -1
 0092                   .dbline 130
 0092           ; }
 0092           ; 
 0092           ; 
 0092           ; //---------------------------------
 0092           ; //
 0092           ; //      VS1003软复位函数 
 0092           ; //
 0092           ; //---------------------------------
 0092           ; void VS1003_SfRst(void)
 0092           ; {
 0092                   .dbline 131
 0092           ;       VS1003_WriteReg(0x00,0x0804);                                                           //写复位
 0092 24E0              ldi R18,2052
 0094 38E0              ldi R19,8
 0096 0027              clr R16
 0098 B8DF              xcall _VS1003_WriteReg
 009A           L7:
 009A                   .dbline 133
 009A           ; 
 009A           ;       while(VS1003_DREQ_STATE() != VS1003_DREQ);                                      //等待软件复位结束
 009A           L8:
 009A                   .dbline 133
 009A 83B3              in R24,0x13
 009C 8078              andi R24,128
 009E 8038              cpi R24,128
 00A0 E1F7              brne L7
 00A2           X0:
 00A2                   .dbline 135
 00A2           ; 
 00A2           ;       VS1003_WriteReg(VS1003_SPI_CLOCKF,0x9800);                                      //设置时钟3倍频
 00A2 20E0              ldi R18,38912
 00A4 38E9              ldi R19,152
 00A6 03E0              ldi R16,3
 00A8 B0DF              xcall _VS1003_WriteReg
 00AA                   .dbline 136
 00AA           ;       VS1003_WriteReg(VS1003_SPI_AUDATA,0xB199);                                      //采样率48k,立体声
 00AA 29E9              ldi R18,45465
 00AC 31EB              ldi R19,177
 00AE 05E0              ldi R16,5
 00B0 ACDF              xcall _VS1003_WriteReg
 00B2                   .dbline 137
 00B2           ;       VS1003_WriteReg(VS1003_SPI_BASS,0x0055);                                        //设置重音
 00B2 25E5              ldi R18,85
 00B4 30E0              ldi R19,0
 00B6 02E0              ldi R16,2
 00B8 A8DF              xcall _VS1003_WriteReg
 00BA                   .dbline 139
 00BA           ;       
 00BA           ;       VS1003_WriteDat(0);                                                                                     //向vs1003发送四个字节
 00BA 0027              clr R16
 00BC DCDF              xcall _VS1003_WriteDat
 00BE                   .dbline 140
 00BE           ;       VS1003_WriteDat(0);                                                                                     //无效数据,启动spi
 00BE 0027              clr R16
 00C0 DADF              xcall _VS1003_WriteDat
 00C2                   .dbline 141
 00C2           ;       VS1003_WriteDat(0);
 00C2 0027              clr R16
 00C4 D8DF              xcall _VS1003_WriteDat
 00C6                   .dbline 142
 00C6           ;       VS1003_WriteDat(0);
 00C6 0027              clr R16
 00C8                   .dbline -2
 00C8           L6:
 00C8                   .dbline 0 ; func end
 00C8 D6CF              xjmp _VS1003_WriteDat
 00CA                   .dbend
 00CA                   .dbfunc e VS1003_Init _VS1003_Init fc
                        .even
 00CA           _VS1003_Init::
 00CA                   .dbline -1
 00CA                   .dbline 152
 00CA           ; }
 00CA           ; 
 00CA           ; 
 00CA           ; //---------------------------------
 00CA           ; //
 00CA           ; //      VS1003初始化函数 
 00CA           ; //
 00CA           ; //---------------------------------
 00CA           ; uint8 VS1003_Init(void)
 00CA           ; {
 00CA                   .dbline 153
 00CA           ;       VOL=26; 
 00CA 8AE1              ldi R24,26
 00CC 90E0              ldi R25,0
 00CE 90930500          sts _VOL+1,R25
 00D2 80930400          sts _VOL,R24
 00D6                   .dbline 155
 00D6           ;       
 00D6           ;       VS1003_Port_Init();
 00D6 94DF              xcall _VS1003_Port_Init
 00D8                   .dbline 157
 00D8           ;       
 00D8           ;       VS1003_CS_SET();
 00D8 AC9A              sbi 0x15,4
 00DA                   .dbline 159
 00DA           ; 
 00DA           ;       VS1003_XDCS_SET();
 00DA AD9A              sbi 0x15,5
 00DC                   .dbline 160
 00DC           ;       VS1003_XRESET_CLR();
 00DC AE98              cbi 0x15,6
 00DE                   .dbline 161
 00DE           ;       delay_ms(500);
 00DE 04EF              ldi R16,244
 00E0 11E0              ldi R17,1
 00E2 20E0              ldi R18,0
 00E4 30E0              ldi R19,0
 00E6 0E940000          xcall _delay_ms

⌨️ 快捷键说明

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