?? m16_vs1003_test.lst
字號:
16B E18D LDI R24,0x1D
16C 9390 00AE STS VOL+1,R25
16E 9380 00AD STS VOL,R24
170 C022 RJMP 0x0193
(0105) else VOL+=2;
171 9180 00AD LDS R24,VOL
173 9190 00AE LDS R25,VOL+1
175 9602 ADIW R24,2
176 9390 00AE STS VOL+1,R25
178 9380 00AD STS VOL,R24
(0106) }
17A C018 RJMP 0x0193
(0107) else
(0108) {
(0109) if(VOL<2)VOL=0;
17B 9180 00AD LDS R24,VOL
17D 9190 00AE LDS R25,VOL+1
17F 3082 CPI R24,2
180 E0E0 LDI R30,0
181 079E CPC R25,R30
182 F438 BCC 0x018A
183 2422 CLR R2
184 2433 CLR R3
185 9230 00AE STS VOL+1,R3
187 9220 00AD STS VOL,R2
189 C009 RJMP 0x0193
(0110) else VOL-=2;
18A 9180 00AD LDS R24,VOL
18C 9190 00AE LDS R25,VOL+1
18E 9702 SBIW R24,2
18F 9390 00AE STS VOL+1,R25
191 9380 00AD STS VOL,R24
(0111) }
(0112)
(0113) VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]); // 送音量數據
193 E680 LDI R24,0x60
194 E090 LDI R25,0
195 91E0 00AD LDS R30,VOL
197 91F0 00AE LDS R31,VOL+1
199 0FEE LSL R30
19A 1FFF ROL R31
19B 0FE8 ADD R30,R24
19C 1FF9 ADC R31,R25
19D 8120 LD R18,Z
19E 8131 LDD R19,Z+1
19F E00B LDI R16,0xB
1A0 940E 02BB CALL _VS1003_WriteReg
(0114)
(0115) while(VS1003_DREQ_STATE() != VS1003_DREQ); // 等待
1A2 B383 IN R24,0x13
1A3 7880 ANDI R24,0x80
1A4 3880 CPI R24,0x80
1A5 F7E1 BNE 0x01A2
(0116)
(0117) key_num = 0;
1A6 2422 CLR R2
1A7 9220 03B8 STS key_num,R2
(0118) vol_flag=0;
1A9 24AA CLR R10
(0119) }
(0120)
(0121)
(0122) //----------------- 換曲操作 -----------------//
(0123)
(0124) if(music_next!=0||music_last!=0)
1AA 20CC TST R12
1AB F411 BNE 0x01AE
1AC 20EE TST R14
1AD F069 BEQ 0x01BB
(0125) {
(0126) data_pointer=512;
1AE E080 LDI R24,0
1AF E092 LDI R25,2
1B0 8B9B STD Y+19,R25
1B1 8B8A STD Y+18,R24
(0127) i=8;
1B2 E048 LDI R20,0x8
1B3 E050 LDI R21,0
1B4 E060 LDI R22,0
1B5 E070 LDI R23,0
1B6 874A STD Y+10,R20
1B7 875B STD Y+11,R21
1B8 876C STD Y+12,R22
1B9 877D STD Y+13,R23
(0128) }
1BA C04D RJMP 0x0208
(0129)
(0130) //---------------- 音樂數據送入 ------------------//
(0131) else if(VS1003_DREQ_STATE()== VS1003_DREQ&&play_flag!=0)
1BB B383 IN R24,0x13
1BC 7880 ANDI R24,0x80
1BD 3880 CPI R24,0x80
1BE F009 BEQ 0x01C0
1BF C048 RJMP 0x0208
1C0 880C LDD R0,Y+20
1C1 2000 TST R0
1C2 F409 BNE 0x01C4
1C3 C044 RJMP 0x0208
(0132) {
(0133) for(n=0;n<32;n++)
1C4 E040 LDI R20,0
1C5 E050 LDI R21,0
1C6 E060 LDI R22,0
1C7 E070 LDI R23,0
1C8 834A STD Y+2,R20
1C9 835B STD Y+3,R21
1CA 836C STD Y+4,R22
1CB 837D STD Y+5,R23
1CC C01E RJMP 0x01EB
(0134) {
(0135) VS1003_WriteDat(Fat_Buffer[data_pointer]); // 發送數據
1CD EF8A LDI R24,0xFA
1CE E090 LDI R25,0
1CF 89EA LDD R30,Y+18
1D0 89FB LDD R31,Y+19
1D1 0FE8 ADD R30,R24
1D2 1FF9 ADC R31,R25
1D3 8100 LD R16,Z
1D4 940E 02F1 CALL _VS1003_WriteDat
(0136) data_pointer++;
1D6 898A LDD R24,Y+18
1D7 899B LDD R25,Y+19
1D8 9601 ADIW R24,1
1D9 8B9B STD Y+19,R25
1DA 8B8A STD Y+18,R24
1DB E041 LDI R20,1
1DC E050 LDI R21,0
1DD E060 LDI R22,0
1DE E070 LDI R23,0
1DF 802A LDD R2,Y+2
1E0 803B LDD R3,Y+3
1E1 804C LDD R4,Y+4
1E2 805D LDD R5,Y+5
1E3 0E24 ADD R2,R20
1E4 1E35 ADC R3,R21
1E5 1E46 ADC R4,R22
1E6 1E57 ADC R5,R23
1E7 822A STD Y+2,R2
1E8 823B STD Y+3,R3
1E9 824C STD Y+4,R4
1EA 825D STD Y+5,R5
1EB E240 LDI R20,0x20
1EC E050 LDI R21,0
1ED E060 LDI R22,0
1EE E070 LDI R23,0
1EF 802A LDD R2,Y+2
1F0 803B LDD R3,Y+3
1F1 804C LDD R4,Y+4
1F2 805D LDD R5,Y+5
1F3 1624 CP R2,R20
1F4 0635 CPC R3,R21
1F5 0646 CPC R4,R22
1F6 0657 CPC R5,R23
1F7 F2A8 BCS 0x01CD
(0137) }
(0138) size_buf+=32;
1F8 E240 LDI R20,0x20
1F9 E050 LDI R21,0
1FA E060 LDI R22,0
1FB E070 LDI R23,0
1FC 802E LDD R2,Y+6
1FD 803F LDD R3,Y+7
1FE 8448 LDD R4,Y+8
1FF 8459 LDD R5,Y+9
200 0E24 ADD R2,R20
201 1E35 ADC R3,R21
202 1E46 ADC R4,R22
203 1E57 ADC R5,R23
204 822E STD Y+6,R2
205 823F STD Y+7,R3
206 8648 STD Y+8,R4
207 8659 STD Y+9,R5
(0139) }
(0140)
(0141) if(size_buf>=fsize[music_num]-64)
208 EF8A LDI R24,0xFA
209 E092 LDI R25,2
20A 89ED LDD R30,Y+21
20B 27FF CLR R31
20C 0FEE LSL R30
20D 1FFF ROL R31
20E 0FEE LSL R30
20F 1FFF ROL R31
210 0FE8 ADD R30,R24
211 1FF9 ADC R31,R25
212 8020 LD R2,Z
213 8031 LDD R3,Z+1
214 8042 LDD R4,Z+2
215 8053 LDD R5,Z+3
216 E440 LDI R20,0x40
217 E050 LDI R21,0
218 E060 LDI R22,0
219 E070 LDI R23,0
21A 1A24 SUB R2,R20
21B 0A35 SBC R3,R21
21C 0A46 SBC R4,R22
21D 0A57 SBC R5,R23
21E 806E LDD R6,Y+6
21F 807F LDD R7,Y+7
220 8488 LDD R8,Y+8
221 8499 LDD R9,Y+9
222 1462 CP R6,R2
223 0473 CPC R7,R3
224 0484 CPC R8,R4
225 0495 CPC R9,R5
226 F0A0 BCS 0x023B
(0142) {
(0143) data_pointer=512;
227 E080 LDI R24,0
228 E092 LDI R25,2
229 8B9B STD Y+19,R25
22A 8B8A STD Y+18,R24
(0144) i=8;
22B E048 LDI R20,0x8
22C E050 LDI R21,0
22D E060 LDI R22,0
22E E070 LDI R23,0
22F 874A STD Y+10,R20
230 875B STD Y+11,R21
231 876C STD Y+12,R22
232 877D STD Y+13,R23
(0145) size_buf=0;
233 E040 LDI R20,0
234 E050 LDI R21,0
235 E060 LDI R22,0
236 E070 LDI R23,0
237 834E STD Y+6,R20
238 835F STD Y+7,R21
239 8768 STD Y+8,R22
23A 8779 STD Y+9,R23
(0146) }
(0147)
(0148) }while(data_pointer<511);
23B 898A LDD R24,Y+18
23C 899B LDD R25,Y+19
23D 3F8F CPI R24,0xFF
23E E0E1 LDI R30,1
23F 079E CPC R25,R30
240 F408 BCC 0x0242
241 CED8 RJMP 0x011A
(0149)
(0150) data_pointer=0;
242 2400 CLR R0
243 2411 CLR R1
244 8A1B STD Y+19,R1
245 8A0A STD Y+18,R0
246 E041 LDI R20,1
247 E050 LDI R21,0
248 E060 LDI R22,0
249 E070 LDI R23,0
24A 842A LDD R2,Y+10
24B 843B LDD R3,Y+11
24C 844C LDD R4,Y+12
24D 845D LDD R5,Y+13
24E 0E24 ADD R2,R20
24F 1E35 ADC R3,R21
250 1E46 ADC R4,R22
251 1E57 ADC R5,R23
252 862A STD Y+10,R2
253 863B STD Y+11,R3
254 864C STD Y+12,R4
255 865D STD Y+13,R5
256 E048 LDI R20,0x8
257 E050 LDI R21,0
258 E060 LDI R22,0
259 E070 LDI R23,0
25A 842A LDD R2,Y+10
25B 843B LDD R3,Y+11
25C 844C LDD R4,Y+12
25D 845D LDD R5,Y+13
25E 1624 CP R2,R20
25F 0635 CPC R3,R21
260 0646 CPC R4,R22
261 0657 CPC R5,R23
262 F408 BCC 0x0264
263 CE89 RJMP 0x00ED
(0151)
(0152) }
(0153)
(0154) //---------- 下一簇 ------------//
(0155) num = FatNextCluster(num);
264 850E LDD R16,Y+14
265 851F LDD R17,Y+15
266 8928 LDD R18,Y+16
267 8939 LDD R19,Y+17
268 940E 0B18 CALL _FatNextCluster
26A 870E STD Y+14,R16
26B 871F STD Y+15,R17
26C 8B28 STD Y+16,R18
26D 8B39 STD Y+17,R19
(0156)
(0157) if(num==CLUST_EOFE||music_next!=0||music_last!=0)
26E EF4F LDI R20,0xFF
26F EF5F LDI R21,0xFF
270 EF6F LDI R22,0xFF
271 EF7F LDI R23,0xFF
272 842E LDD R2,Y+14
273 843F LDD R3,Y+15
274 8848 LDD R4,Y+16
275 8859 LDD R5,Y+17
276 1624 CP R2,R20
277 0635 CPC R3,R21
278 0646 CPC R4,R22
279 0657 CPC R5,R23
27A F021 BEQ 0x027F
27B 20CC TST R12
27C F411 BNE 0x027F
27D 20EE TST R14
27E F199 BEQ 0x02B2
(0158) {
(0159) if(music_last!=0)
27F 20EE TST R14
280 F061 BEQ 0x028D
(0160) {
(0161) if(music_num>0)music_num--;
281 E080 LDI R24,0
282 880D LDD R0,Y+21
283 1580 CP R24,R0
284 F418 BCC 0x0288
285 940A DEC R0
286 8A0D STD Y+21,R0
287 C010 RJMP 0x0298
(0162) else music_num = fcount-1;
288 9180 034A LDS R24,fcount
28A 5081 SUBI R24,1
28B 8B8D STD Y+21,R24
(0163) }
28C C00B RJMP 0x0298
(0164)
(0165) else
(0166) {
(0167) if(music_num<fcount-1)music_num++;
28D 9180 034A LDS R24,fcount
28F 5081 SUBI R24,1
290 880D LDD R0,Y+21
291 1608 CP R0,R24
292 F418 BCC 0x0296
293 9403 INC R0
294 8A0D STD Y+21,R0
295 C002 RJMP 0x0298
(0168) else music_num=0;
296 2400 CLR R0
297 8A0D STD Y+21,R0
(0169) }
(0170)
(0171) num = fclust[music_num];
298 E48B LDI R24,0x4B
299 E093 LDI R25,3
29A 89ED LDD R30,Y+21
29B 27FF CLR R31
29C 0FEE LSL R30
29D 1FFF ROL R31
29E 0FEE LSL R30
29F 1FFF ROL R31
2A0 0FE8 ADD R30,R24
2A1 1FF9 ADC R31,R25
2A2 8020 LD R2,Z
2A3 8031 LDD R3,Z+1
2A4 8042 LDD R4,Z+2
2A5 8053 LDD R5,Z+3
2A6 862E STD Y+14,R2
2A7 863F STD Y+15,R3
2A8 8A48 STD Y+16,R4
2A9 8A59 STD Y+17,R5
(0172) play_flag=1;
2AA 2400 CLR R0
2AB 9403 INC R0
2AC 8A0C STD Y+20,R0
(0173) music_next = 0;
2AD 24CC CLR R12
(0174) music_last = 0;
2AE 24EE CLR R14
(0175) key_num=0;
2AF 2422 CLR R2
2B0 9220 03B8 STS key_num,R2
2B2 CE31 RJMP 0x00E4
2B3 9666 ADIW R28,0x16
2B4 940C 0DEC JMP pop_xgsetF0FC
FILE: C:\DOCUME~1\浪仔\桌面\教學實驗板\M16_VS1003_test\vs1003.c
(0001)
(0002) //---------------------------- VS1003驅動程序 ----------------------------
(0003) //
(0004) //簡化版VS1003驅動程序
(0005) //整理日期:2009.7.8
(0006) //
(0007) //------------------------------------------------------------------------
(0008)
(0009) #include "vs1003.h"
(0010)
(0011) uint32 num;
(0012)
(0013) uint16 VOL; // 音量
(0014)
(0015) // 音量數據表
(0016) const uint16 VOL_BUFFER[30] =
(0017) {
(0018) 0x9191,0x8c8c,0x8787,0x8282,0x7d7d,0x7878,0x7373,0x6e6e,0x6969,0x6464,
(0019) 0x5f5f,0x5a5a,0x5555,0x5050,0x4b4b,0x4646,0x4141,0x3c3c,0x3737,0x3232,
(0020) 0x2d2d,0x2828,0x2323,0x1e1e,0x1919,0x1414,0x0f0f,0x0a0a,0x0505,0x0000
(0021) };
(0022)
(0023)
(0024) //---------------------------------
(0025) //
(0026) // VS1003接口初始化函數
(0027) //
(0028) //---------------------------------
(0029) void VS1003_Port_Init()
(0030) {
(0031) VS1003_XRESET_OUT();
_VS1003_Port_Init:
2B6 9AA6 SBI 0x14,6
(0032) VS1003_XDCS_OUT();
2B7 9AA5 SBI 0x14,5
(0033) VS1003_CS_OUT();
2B8 9AA4 SBI 0x14,4
(0034) VS1003_DREQ_IN();
2B9 98A7 CBI 0x14,7
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -