📄 vs1003.lis
字号:
00B6 03E0 ldi R16,3
00B8 A8DF xcall _VS1003_WriteReg
00BA .dbline 129
00BA ; VS1003_WriteReg(VS1003_SPI_AUDATA,0xB199); //采样率48k,立体声
00BA 29E9 ldi R18,45465
00BC 31EB ldi R19,177
00BE 05E0 ldi R16,5
00C0 A4DF xcall _VS1003_WriteReg
00C2 .dbline 130
00C2 ; VS1003_WriteReg(VS1003_SPI_BASS,0x0055); //设置重音
00C2 25E5 ldi R18,85
00C4 30E0 ldi R19,0
00C6 02E0 ldi R16,2
00C8 A0DF xcall _VS1003_WriteReg
00CA .dbline 132
00CA ;
00CA ; VS1003_WriteDat(0); //向vs1003发送四个字节
00CA 0027 clr R16
00CC DADF xcall _VS1003_WriteDat
00CE .dbline 133
00CE ; VS1003_WriteDat(0); //无效数据,启动spi
00CE 0027 clr R16
00D0 D8DF xcall _VS1003_WriteDat
00D2 .dbline 134
00D2 ; VS1003_WriteDat(0);
00D2 0027 clr R16
00D4 D6DF xcall _VS1003_WriteDat
00D6 .dbline 135
00D6 ; VS1003_WriteDat(0);
00D6 0027 clr R16
00D8 D4DF xcall _VS1003_WriteDat
00DA .dbline -2
00DA L6:
00DA .dbline 0 ; func end
00DA 0895 ret
00DC .dbend
00DC .dbfunc e VS1003_Init _VS1003_Init fc
.even
00DC _VS1003_Init::
00DC 0E940000 xcall push_gset2
00E0 .dbline -1
00E0 .dbline 145
00E0 ; }
00E0 ;
00E0 ;
00E0 ; //---------------------------------
00E0 ; //
00E0 ; // VS1003初始化函数
00E0 ; //
00E0 ; //---------------------------------
00E0 ; uint8 VS1003_Init(void)
00E0 ; {
00E0 .dbline 146
00E0 ; VOL=26;
00E0 8AE1 ldi R24,26
00E2 90E0 ldi R25,0
00E4 90930500 sts _VOL+1,R25
00E8 80930400 sts _VOL,R24
00EC .dbline 148
00EC ;
00EC ; VS1003_Port_Init();
00EC 89DF xcall _VS1003_Port_Init
00EE .dbline 150
00EE ;
00EE ; VS1003_CS_SET();
00EE AC9A sbi 0x15,4
00F0 .dbline 152
00F0 ;
00F0 ; VS1003_XDCS_SET();
00F0 AD9A sbi 0x15,5
00F2 .dbline 153
00F2 ; VS1003_XRESET_CLR();
00F2 AE98 cbi 0x15,6
00F4 .dbline 154
00F4 ; delay_ms(500);
00F4 04EF ldi R16,244
00F6 11E0 ldi R17,1
00F8 20E0 ldi R18,0
00FA 30E0 ldi R19,0
00FC 0E940000 xcall _delay_ms
0100 .dbline 155
0100 ; VS1003_XRESET_SET(); //使能芯片
0100 AE9A sbi 0x15,6
0102 .dbline 156
0102 ; delay_ms(500);
0102 04EF ldi R16,244
0104 11E0 ldi R17,1
0106 20E0 ldi R18,0
0108 30E0 ldi R19,0
010A 0E940000 xcall _delay_ms
010E L11:
010E .dbline 158
010E L12:
010E .dbline 158
010E ;
010E ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
010E 83B3 in R24,0x13
0110 8078 andi R24,128
0112 8038 cpi R24,128
0114 E1F7 brne L11
0116 .dbline 160
0116 ;
0116 ; VS1003_WriteReg(0x00,0x0804);
0116 24E0 ldi R18,2052
0118 38E0 ldi R19,8
011A 0027 clr R16
011C 76DF xcall _VS1003_WriteReg
011E L14:
011E .dbline 162
011E L15:
011E .dbline 162
011E ;
011E ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
011E 83B3 in R24,0x13
0120 8078 andi R24,128
0122 8038 cpi R24,128
0124 E1F7 brne L14
0126 .dbline 164
0126 ;
0126 ; VS1003_WriteReg(0x03,0x9800);
0126 20E0 ldi R18,38912
0128 38E9 ldi R19,152
012A 03E0 ldi R16,3
012C 6EDF xcall _VS1003_WriteReg
012E L17:
012E .dbline 166
012E L18:
012E .dbline 166
012E ;
012E ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
012E 83B3 in R24,0x13
0130 8078 andi R24,128
0132 8038 cpi R24,128
0134 E1F7 brne L17
0136 .dbline 168
0136 ;
0136 ; VS1003_WriteReg(0x05,0xB199);
0136 29E9 ldi R18,45465
0138 31EB ldi R19,177
013A 05E0 ldi R16,5
013C 66DF xcall _VS1003_WriteReg
013E L20:
013E .dbline 170
013E L21:
013E .dbline 170
013E ;
013E ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
013E 83B3 in R24,0x13
0140 8078 andi R24,128
0142 8038 cpi R24,128
0144 E1F7 brne L20
0146 .dbline 172
0146 ;
0146 ; VS1003_WriteReg(0x02,0x0055);
0146 25E5 ldi R18,85
0148 30E0 ldi R19,0
014A 02E0 ldi R16,2
014C 5EDF xcall _VS1003_WriteReg
014E L23:
014E .dbline 174
014E L24:
014E .dbline 174
014E ;
014E ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
014E 83B3 in R24,0x13
0150 8078 andi R24,128
0152 8038 cpi R24,128
0154 E1F7 brne L23
0156 .dbline 176
0156 ;
0156 ; VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]);
0156 20910400 lds R18,_VOL
015A 30910500 lds R19,_VOL+1
015E 02E0 ldi R16,2
0160 10E0 ldi R17,0
0162 0E940000 xcall empy16s
0166 F801 movw R30,R16
0168 80E0 ldi R24,<_VOL_BUFFER
016A 90E0 ldi R25,>_VOL_BUFFER
016C E80F add R30,R24
016E F91F adc R31,R25
0170 2591 lpm R18,Z+
0172 3491 lpm R19,Z
0174 0BE0 ldi R16,11
0176 49DF xcall _VS1003_WriteReg
0178 L26:
0178 .dbline 178
0178 L27:
0178 .dbline 178
0178 ;
0178 ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
0178 83B3 in R24,0x13
017A 8078 andi R24,128
017C 8038 cpi R24,128
017E E1F7 brne L26
0180 .dbline 179
0180 ; VS1003_WriteReg(0x05,0xB199);
0180 29E9 ldi R18,45465
0182 31EB ldi R19,177
0184 05E0 ldi R16,5
0186 41DF xcall _VS1003_WriteReg
0188 L29:
0188 .dbline 181
0188 L30:
0188 .dbline 181
0188 ;
0188 ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
0188 83B3 in R24,0x13
018A 8078 andi R24,128
018C 8038 cpi R24,128
018E E1F7 brne L29
0190 .dbline 182
0190 ; VS1003_WriteReg(0x05,0xB199);
0190 29E9 ldi R18,45465
0192 31EB ldi R19,177
0194 05E0 ldi R16,5
0196 39DF xcall _VS1003_WriteReg
0198 L32:
0198 .dbline 184
0198 L33:
0198 .dbline 184
0198 ;
0198 ; while(VS1003_DREQ_STATE() != VS1003_DREQ);
0198 83B3 in R24,0x13
019A 8078 andi R24,128
019C 8038 cpi R24,128
019E E1F7 brne L32
01A0 .dbline 186
01A0 ;
01A0 ; return 1;
01A0 01E0 ldi R16,1
01A2 .dbline -2
01A2 L10:
01A2 0E940000 xcall pop_gset2
01A6 .dbline 0 ; func end
01A6 0895 ret
01A8 .dbend
01A8 .dbfunc e VS1003_SendNull _VS1003_SendNull fV
01A8 ; i -> y+0
.even
01A8 _VS1003_SendNull::
01A8 0E940000 xcall push_gset2
01AC 2497 sbiw R28,4
01AE .dbline -1
01AE .dbline 197
01AE ;
01AE ; }
01AE ;
01AE ;
01AE ; //---------------------------------
01AE ; //
01AE ; // VS1003空数据发送函数
01AE ; //
01AE ; //---------------------------------
01AE ; void VS1003_SendNull(void)
01AE ; {
01AE .dbline 198
01AE ; uint32 i=0;
01AE 40E0 ldi R20,0
01B0 50E0 ldi R21,0
01B2 60E0 ldi R22,0
01B4 70E0 ldi R23,0
01B6 FE01 movw R30,R28
01B8 4083 std z+0,R20
01BA 5183 std z+1,R21
01BC 6283 std z+2,R22
01BE 7383 std z+3,R23
01C0 L36:
01C0 .dbline 200
01C0 ; do
01C0 ; {
01C0 .dbline 201
01C0 ; if(VS1003_DREQ_STATE()== VS1003_DREQ)
01C0 83B3 in R24,0x13
01C2 8078 andi R24,128
01C4 8038 cpi R24,128
01C6 A1F4 brne L39
01C8 .dbline 202
01C8 ; {
01C8 .dbline 203
01C8 ; VS1003_WriteDat(0x00);
01C8 0027 clr R16
01CA 5BDF xcall _VS1003_WriteDat
01CC .dbline 204
01CC ; i++;
01CC 41E0 ldi R20,1
01CE 50E0 ldi R21,0
01D0 60E0 ldi R22,0
01D2 70E0 ldi R23,0
01D4 FE01 movw R30,R28
01D6 2080 ldd R2,z+0
01D8 3180 ldd R3,z+1
01DA 4280 ldd R4,z+2
01DC 5380 ldd R5,z+3
01DE 240E add R2,R20
01E0 351E adc R3,R21
01E2 461E adc R4,R22
01E4 571E adc R5,R23
01E6 FE01 movw R30,R28
01E8 2082 std z+0,R2
01EA 3182 std z+1,R3
01EC 4282 std z+2,R4
01EE 5382 std z+3,R5
01F0 .dbline 205
01F0 ; }
01F0 L39:
01F0 .dbline 206
01F0 L37:
01F0 .dbline 206
01F0 ; }while(i<1024);
01F0 40E0 ldi R20,0
01F2 54E0 ldi R21,4
01F4 60E0 ldi R22,0
01F6 70E0 ldi R23,0
01F8 FE01 movw R30,R28
01FA 2080 ldd R2,z+0
01FC 3180 ldd R3,z+1
01FE 4280 ldd R4,z+2
0200 5380 ldd R5,z+3
0202 2416 cp R2,R20
0204 3506 cpc R3,R21
0206 4606 cpc R4,R22
0208 5706 cpc R5,R23
020A D0F2 brlo L36
020C .dbline -2
020C L35:
020C 2496 adiw R28,4
020E 0E940000 xcall pop_gset2
0212 .dbline 0 ; func end
0212 0895 ret
0214 .dbsym l i 0 l
0214 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\AVR\M\1\vs1003.c
0000 _num::
0000 .blkb 4
0004 .dbsym e num _num l
0004 _VOL::
0004 .blkb 2
0006 .dbsym e VOL _VOL i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -