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

📄 vs1003.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module vs1003.c
                        .area lit(rom, con, rel)
 0000           _VOL_BUFFER::
 0000 9191              .word 37265
 0002 8C8C              .word 35980
 0004 8787              .word 34695
 0006 8282              .word 33410
 0008 7D7D              .word 32125
 000A 7878              .word 30840
 000C 7373              .word 29555
 000E 6E6E              .word 28270
 0010 6969              .word 26985
 0012 6464              .word 25700
 0014 5F5F              .word 24415
 0016 5A5A              .word 23130
 0018 5555              .word 21845
 001A 5050              .word 20560
 001C 4B4B              .word 19275
 001E 4646              .word 17990
 0020 4141              .word 16705
 0022 3C3C              .word 15420
 0024 3737              .word 14135
 0026 3232              .word 12850
 0028 2D2D              .word 11565
 002A 2828              .word 10280
 002C 2323              .word 8995
 002E 1E1E              .word 7710
 0030 1919              .word 6425
 0032 1414              .word 5140
 0034 0F0F              .word 3855
 0036 0A0A              .word 2570
 0038 0505              .word 1285
 003A 0000              .word 0
 003C                   .dbfile C:\AVR\M\1\vs1003.c
 003C                   .dbsym e VOL_BUFFER _VOL_BUFFER A[60:30]ki
                        .area text(rom, con, rel)
 0000                   .dbfile C:\AVR\M\1\vs1003.c
 0000                   .dbfunc e VS1003_Port_Init _VS1003_Port_Init fV
                        .even
 0000           _VS1003_Port_Init::
 0000                   .dbline -1
 0000                   .dbline 23
 0000           ; 
 0000           ; #include "vs1003.h"
 0000           ; 
 0000           ; uint32 num; 
 0000           ; 
 0000           ; uint16  VOL;  // 音量
 0000           ; 
 0000           ; // 音量数据表
 0000           ; const uint16 VOL_BUFFER[30] =
 0000           ; { 
 0000           ;       0x9191,0x8c8c,0x8787,0x8282,0x7d7d,0x7878,0x7373,0x6e6e,0x6969,0x6464,
 0000           ;       0x5f5f,0x5a5a,0x5555,0x5050,0x4b4b,0x4646,0x4141,0x3c3c,0x3737,0x3232,
 0000           ;       0x2d2d,0x2828,0x2323,0x1e1e,0x1919,0x1414,0x0f0f,0x0a0a,0x0505,0x0000
 0000           ; };
 0000           ; 
 0000           ; 
 0000           ; //---------------------------------
 0000           ; //
 0000           ; // VS1003接口初始化函数 
 0000           ; //
 0000           ; //---------------------------------
 0000           ; void VS1003_Port_Init()
 0000           ; { 
 0000                   .dbline 24
 0000           ;       VS1003_XRESET_OUT();
 0000 A69A              sbi 0x14,6
 0002                   .dbline 25
 0002           ;       VS1003_XDCS_OUT();
 0002 A59A              sbi 0x14,5
 0004                   .dbline 26
 0004           ;       VS1003_CS_OUT();
 0004 A49A              sbi 0x14,4
 0006                   .dbline 27
 0006           ;       VS1003_DREQ_IN();       
 0006 A798              cbi 0x14,7
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e VS1003_WriteReg _VS1003_WriteReg fV
 000A           ;            dat -> R20,R21
 000A           ;           addr -> R22
                        .even
 000A           _VS1003_WriteReg::
 000A 0E940000          xcall push_gset2
 000E A901              movw R20,R18
 0010 602F              mov R22,R16
 0012                   .dbline -1
 0012                   .dbline 39
 0012           ; }
 0012           ; 
 0012           ; 
 0012           ; //---------------------------------
 0012           ; //
 0012           ; // VS1003写寄存器函数 
 0012           ; // addr:VS1003内部寄存器地址
 0012           ; // dat:要写入的数据
 0012           ; //
 0012           ; //---------------------------------
 0012           ; void VS1003_WriteReg(uint8 addr,uint16 dat)
 0012           ; {
 0012                   .dbline 40
 0012           ;       VS1003_XDCS_SET();                                                              
 0012 AD9A              sbi 0x15,5
 0014                   .dbline 41
 0014           ;       VS1003_CS_CLR();                                                                        // 片选VS1003
 0014 AC98              cbi 0x15,4
 0016                   .dbline 43
 0016           ;       
 0016           ;       SPI_SrByte(VS1003_WRITE_COM);                                                           
 0016 02E0              ldi R16,2
 0018 0E940000          xcall _SPI_SrByte
 001C                   .dbline 45
 001C           ;       
 001C           ;       SPI_SrByte(addr);
 001C 062F              mov R16,R22
 001E 0E940000          xcall _SPI_SrByte
 0022                   .dbline 47
 0022           ;       
 0022           ;       SPI_SrByte((uint8)(dat>>8));
 0022 8A01              movw R16,R20
 0024 012F              mov R16,R17
 0026 1127              clr R17
 0028 0E940000          xcall _SPI_SrByte
 002C                   .dbline 48
 002C           ;       SPI_SrByte((uint8)(dat));
 002C 042F              mov R16,R20
 002E 0E940000          xcall _SPI_SrByte
 0032                   .dbline 50
 0032           ;       
 0032           ;       VS1003_CS_SET();                                                                  // 取消片选VS1003
 0032 AC9A              sbi 0x15,4
 0034                   .dbline 51
 0034           ;       VS1003_XDCS_SET();
 0034 AD9A              sbi 0x15,5
 0036                   .dbline -2
 0036           L2:
 0036 0E940000          xcall pop_gset2
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbsym r dat 20 i
 003C                   .dbsym r addr 22 c
 003C                   .dbend
 003C                   .dbfunc e VS1003_ReadReg _VS1003_ReadReg fi
 003C           ;           datL -> R22,R23
 003C           ;            dat -> R20,R21
 003C           ;           addr -> R10
                        .even
 003C           _VS1003_ReadReg::
 003C 0E940000          xcall push_gset3
 0040 A02E              mov R10,R16
 0042                   .dbline -1
 0042                   .dbline 64
 0042           ; }
 0042           ; 
 0042           ; 
 0042           ; 
 0042           ; //---------------------------------
 0042           ; //
 0042           ; // VS1003读寄存器函数 
 0042           ; // addr:VS1003内部寄存器地址
 0042           ; // dat:返回的数据
 0042           ; //
 0042           ; //---------------------------------
 0042           ; uint16 VS1003_ReadReg(uint8 addr)
 0042           ; {
 0042                   .dbline 65
 0042           ;       uint16 dat = 0x0000;
 0042 4427              clr R20
 0044 5527              clr R21
 0046                   .dbline 66
 0046           ;       uint16 datL = 0x0000;
 0046 6627              clr R22
 0048 7727              clr R23
 004A                   .dbline 68
 004A           ;               
 004A           ;       VS1003_XDCS_SET();
 004A AD9A              sbi 0x15,5
 004C                   .dbline 69
 004C           ;       VS1003_CS_CLR();                                                                
 004C AC98              cbi 0x15,4
 004E                   .dbline 71
 004E           ; 
 004E           ;       SPI_SrByte(VS1003_READ_COM);
 004E 03E0              ldi R16,3
 0050 0E940000          xcall _SPI_SrByte
 0054                   .dbline 72
 0054           ;       SPI_SrByte(addr);
 0054 0A2D              mov R16,R10
 0056 0E940000          xcall _SPI_SrByte
 005A                   .dbline 74
 005A           ; 
 005A           ;       dat     = SPI_SrByte(0xff);
 005A 0FEF              ldi R16,255
 005C 0E940000          xcall _SPI_SrByte
 0060 402F              mov R20,R16
 0062 5527              clr R21
 0064                   .dbline 75
 0064           ;       dat     = dat<<8;
 0064 542F              mov R21,R20
 0066 4427              clr R20
 0068                   .dbline 76
 0068           ;       datL = SPI_SrByte(0xff);
 0068 0FEF              ldi R16,255
 006A 0E940000          xcall _SPI_SrByte
 006E 602F              mov R22,R16
 0070 7727              clr R23
 0072                   .dbline 77
 0072           ;       dat     =dat|datL;
 0072 462B              or R20,R22
 0074 572B              or R21,R23
 0076                   .dbline 79
 0076           ;       
 0076           ;       VS1003_CS_SET();
 0076 AC9A              sbi 0x15,4
 0078                   .dbline 80
 0078           ;       VS1003_XDCS_SET();
 0078 AD9A              sbi 0x15,5
 007A                   .dbline 82
 007A           ;       
 007A           ;       return dat;
 007A 8A01              movw R16,R20
 007C                   .dbline -2
 007C           L3:
 007C 0E940000          xcall pop_gset3
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r datL 22 i
 0082                   .dbsym r dat 20 i
 0082                   .dbsym r addr 10 c
 0082                   .dbend
 0082                   .dbfunc e VS1003_WriteDat _VS1003_WriteDat fV
 0082           ;            dat -> R20
                        .even
 0082           _VS1003_WriteDat::
 0082 0E940000          xcall push_gset1
 0086 402F              mov R20,R16
 0088                   .dbline -1
 0088                   .dbline 93
 0088           ; }
 0088           ; 
 0088           ; 
 0088           ; //---------------------------------
 0088           ; //
 0088           ; // VS1003写数据函数 
 0088           ; // dat:要写入的数据
 0088           ; //
 0088           ; //---------------------------------
 0088           ; void VS1003_WriteDat(uint8 dat)
 0088           ; {
 0088                   .dbline 94
 0088           ;       VS1003_XDCS_CLR();
 0088 AD98              cbi 0x15,5
 008A                   .dbline 96
 008A           ;       
 008A           ;       VS1003_CS_CLR();
 008A AC98              cbi 0x15,4
 008C                   .dbline 98
 008C           ; 
 008C           ;       SPI_SrByte(dat);
 008C 042F              mov R16,R20
 008E 0E940000          xcall _SPI_SrByte
 0092                   .dbline 99
 0092           ;       VS1003_CS_SET();
 0092 AC9A              sbi 0x15,4
 0094                   .dbline 100
 0094           ;       VS1003_XDCS_SET();
 0094 AD9A              sbi 0x15,5
 0096                   .dbline -2
 0096           L4:
 0096 0E940000          xcall pop_gset1
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r dat 20 c
 009C                   .dbend
 009C                   .dbfunc e VS1003_HwRst _VS1003_HwRst fV
                        .even
 009C           _VS1003_HwRst::
 009C                   .dbline -1
 009C                   .dbline 110
 009C           ; }
 009C           ; 
 009C           ; 
 009C           ; //---------------------------------
 009C           ; //
 009C           ; //      VS1003写硬复位函数 
 009C           ; //
 009C           ; //---------------------------------
 009C           ; void VS1003_HwRst(void)
 009C           ; {
 009C                   .dbline 111
 009C           ;       VS1003_XRESET_CLR();                                            
 009C AE98              cbi 0x15,6
 009E                   .dbline 113
 009E           ;                                                                               
 009E           ;       VS1003_XRESET_SET();                                                            
 009E AE9A              sbi 0x15,6
 00A0                   .dbline -2
 00A0           L5:
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbend
 00A2                   .dbfunc e VS1003_SfRst _VS1003_SfRst fV
                        .even
 00A2           _VS1003_SfRst::
 00A2                   .dbline -1
 00A2                   .dbline 123
 00A2           ; }
 00A2           ; 
 00A2           ; 
 00A2           ; //---------------------------------
 00A2           ; //
 00A2           ; //      VS1003软复位函数 
 00A2           ; //
 00A2           ; //---------------------------------
 00A2           ; void VS1003_SfRst(void)
 00A2           ; {
 00A2                   .dbline 124
 00A2           ;       VS1003_WriteReg(0x00,0x0804);                                                           //写复位
 00A2 24E0              ldi R18,2052
 00A4 38E0              ldi R19,8
 00A6 0027              clr R16
 00A8 B0DF              xcall _VS1003_WriteReg
 00AA           L7:
 00AA                   .dbline 126
 00AA           L8:
 00AA                   .dbline 126
 00AA           ; 
 00AA           ;       while(VS1003_DREQ_STATE() != VS1003_DREQ);                                      //等待软件复位结束
 00AA 83B3              in R24,0x13
 00AC 8078              andi R24,128
 00AE 8038              cpi R24,128
 00B0 E1F7              brne L7
 00B2                   .dbline 128
 00B2           ; 
 00B2           ;       VS1003_WriteReg(VS1003_SPI_CLOCKF,0x9800);                                      //设置时钟3倍频
 00B2 20E0              ldi R18,38912
 00B4 38E9              ldi R19,152

⌨️ 快捷键说明

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