📄 vs1003b.lst
字号:
301 rjmp .L38
303 .LM41:
304 in r24,47-0x20
305 .LBE41:
306 006c 779B .LBE40:
307 006e 00C0 .LBB42:
308 .LBB43:
310 0070 8FB1 .LM42:
311 ldi r24,lo8(-1)
312 out 47-0x20,r24
313 .L40:
315 .LM43:
316 sbis 46-0x20,7
317 0072 8FEF rjmp .L40
319 .LM44:
320 in r25,47-0x20
321 .LBE43:
322 0076 779B .LBE42:
323 0078 00C0 .LBB44:
324 .LBB45:
326 007a 9FB1 .LM45:
327 ldi r24,lo8(-1)
328 out 47-0x20,r24
329 .L42:
331 .LM46:
332 sbis 46-0x20,7
333 007c 8FEF rjmp .L42
335 .LM47:
336 in r18,47-0x20
337 .LBE45:
338 0080 779B .LBE44:
340 .LM48:
341 mov r24,r25
342 0084 2FB1 ldi r25,lo8(0)
344 .LM49:
81:VS1003B\VS1003B.c **** VS1003B_WriteByte(0x03);
82:VS1003B\VS1003B.c **** VS1003B_WriteByte(addr);
83:VS1003B\VS1003B.c **** temp = VS1003B_ReadByte();
345 0x20,4
347 0086 892F .LM51:
348 0088 90E0 add r24,r18
84:VS1003B\VS1003B.c **** temp <<= 8;
349 r25,__zero_reg__
350 /* epilogue: frame size=0 */
351 008a 982F ret
352 008c 8827 /* epilogue end (size=1) */
85:VS1003B\VS1003B.c **** temp += VS1003B_ReadByte();
86:VS1003B\VS1003B.c **** VS1003B_XCS_H();
353 unction VS1003B_ReadCMD size 30 (29) */
87:VS1003B\VS1003B.c **** return temp;
88:VS1003B\VS1003B.c **** }
356 tabn 192,0,0,.LFBB6-.LFBB6
358 0090 820F .Lscope6:
360 .global VS1003B_SoftReset
362 VS1003B_SoftReset:
364 .LM52:
365 .LFBB7:
366 /* prologue: frame size=0 */
367 /* prologue end (size=0) */
368 .LBB46:
369 .LBB47:
371 .LM53:
372 ldi r24,lo8(80)
89:VS1003B\VS1003B.c ****
90:VS1003B\VS1003B.c **** /* fill 2048 zero */
91:VS1003B\VS1003B.c **** void VS1003B_Fill2048Zero()
92:VS1003B\VS1003B.c **** {
93:VS1003B\VS1003B.c **** unsigned char i,j;
94:VS1003B\VS1003B.c **** for(i=0;i<64;i++)
95:VS1003B\VS1003B.c **** {
96:VS1003B\VS1003B.c **** VS1003B_XDCS_L();
97:VS1003B\VS1003B.c **** while(VS1003B_NeedData()==0);
98:VS1003B\VS1003B.c **** for(j=0;j<32;j++)
99:VS1003B\VS1003B.c **** {
100:VS1003B\VS1003B.c **** VS1003B_WriteByte(0x00);
101:VS1003B\VS1003B.c **** }
102:VS1003B\VS1003B.c **** VS1003B_XDCS_H();
103:VS1003B\VS1003B.c **** }
104:VS1003B\VS1003B.c **** }
105:VS1003B\VS1003B.c ****
106:VS1003B\VS1003B.c **** /* Write 32bytes data */
107:VS1003B\VS1003B.c **** void VS1003B_Write32B(unsigned char * buf)
108:VS1003B\VS1003B.c **** {
109:VS1003B\VS1003B.c **** unsigned char n = 32;
110:VS1003B\VS1003B.c **** VS1003B_XDCS_L();
111:VS1003B\VS1003B.c **** while(n--)
112:VS1003B\VS1003B.c **** {
113:VS1003B\VS1003B.c **** VS1003B_WriteByte(*buf++);
114:VS1003B\VS1003B.c **** }
115:VS1003B\VS1003B.c **** VS1003B_XDCS_H();
116:VS1003B\VS1003B.c **** }
117:VS1003B\VS1003B.c ****
118:VS1003B\VS1003B.c **** /********** Initialization, 1 means fail, 0 OK ***************/
119:VS1003B\VS1003B.c **** unsigned char VS1003B_Init()
120:VS1003B\VS1003B.c **** {
121:VS1003B\VS1003B.c **** unsigned char retry;
122:VS1003B\VS1003B.c **** PORT_INI(); /* Prot Initialize */
123:VS1003B\VS1003B.c ****
124:VS1003B\VS1003B.c **** VS1003B_XRESET_L(); /* A hardware reset */
125:VS1003B\VS1003B.c **** _delay_ms(20);
126:VS1003B\VS1003B.c **** VS1003B_XRESET_H();
127:VS1003B\VS1003B.c ****
128:VS1003B\VS1003B.c **** VS1003B_SPI_Low(); /* Low initialize spi clock */
129:VS1003B\VS1003B.c **** _delay_ms(20);
130:VS1003B\VS1003B.c ****
131:VS1003B\VS1003B.c **** retry=0;
132:VS1003B\VS1003B.c ****
133:VS1003B\VS1003B.c **** while(VS1003B_ReadCMD(0x03) != CLOCK_REG) /* set PLL register */
134:VS1003B\VS1003B.c **** {
135:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x03,CLOCK_REG);
136:VS1003B\VS1003B.c **** if(retry++ >10 )return 1;
137:VS1003B\VS1003B.c **** }
138:VS1003B\VS1003B.c ****
139:VS1003B\VS1003B.c **** _delay_ms(20);
140:VS1003B\VS1003B.c ****
141:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x05,0x000a);
142:VS1003B\VS1003B.c ****
143:VS1003B\VS1003B.c **** retry=0;
144:VS1003B\VS1003B.c **** while(VS1003B_ReadCMD(0x0b) != 0xfefe) /* set Volume to minimum */
145:VS1003B\VS1003B.c **** {
146:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x0b,0xfefe);
147:VS1003B\VS1003B.c **** if(retry++ >10 )return 1;
148:VS1003B\VS1003B.c **** }
149:VS1003B\VS1003B.c ****
150:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x05,0xac45); /* Soft start */
151:VS1003B\VS1003B.c ****
152:VS1003B\VS1003B.c **** retry=0;
153:VS1003B\VS1003B.c **** while(VS1003B_ReadCMD(0x0b) != DEFAULT_VOLUME) /* Set volume to default value */
154:VS1003B\VS1003B.c **** {
155:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x0b,DEFAULT_VOLUME);
156:VS1003B\VS1003B.c **** if(retry++ >10 )return 1;
157:VS1003B\VS1003B.c **** }
158:VS1003B\VS1003B.c ****
159:VS1003B\VS1003B.c **** retry=0;
160:VS1003B\VS1003B.c **** while(VS1003B_ReadCMD(0x00) != 0x0800) /* set mode register */
161:VS1003B\VS1003B.c **** {
162:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x00,0x0800);
163:VS1003B\VS1003B.c **** if(retry++ >10 )return 1;
164:VS1003B\VS1003B.c **** }
165:VS1003B\VS1003B.c ****
166:VS1003B\VS1003B.c **** _delay_ms(1);
167:VS1003B\VS1003B.c ****
168:VS1003B\VS1003B.c **** retry=0;
169:VS1003B\VS1003B.c **** while(VS1003B_ReadCMD(0x02) != DEFAULT_BASS_TREMBLE) /* set bass/tremble register */
170:VS1003B\VS1003B.c **** {
171:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x02,DEFAULT_BASS_TREMBLE);
172:VS1003B\VS1003B.c **** if(retry++ >10 )return 1;
173:VS1003B\VS1003B.c **** }
174:VS1003B\VS1003B.c **** _delay_ms(20);
175:VS1003B\VS1003B.c ****
176:VS1003B\VS1003B.c **** VS1003B_SoftReset(); /* A soft reset */
177:VS1003B\VS1003B.c ****
178:VS1003B\VS1003B.c **** _delay_ms(20);
179:VS1003B\VS1003B.c ****
180:VS1003B\VS1003B.c **** VS1003B_SPI_High(); /* High SPI clock, for internal pll has been works now */
181:VS1003B\VS1003B.c **** return 0;
182:VS1003B\VS1003B.c **** }
183:VS1003B\VS1003B.c ****
184:VS1003B\VS1003B.c **** /* VS1003B soft reset */
185:VS1003B\VS1003B.c **** void VS1003B_SoftReset()
186:VS1003B\VS1003B.c **** {
374 .LM54:
375 sbi 46-0x20,0
376 .LBE47:
377 .LBE46:
379 .LM55:
380 ldi r22,lo8(2052)
381 ldi r23,hi8(2052)
382 0096 80E5 ldi r24,lo8(0)
383 0098 8DB9 call VS1003B_WriteCMD
384 .LBB48:
385 .LBB49:
386 009a 709A .LBB50:
387 .LBB51:
187:VS1003B\VS1003B.c **** VS1003B_SPI_High();
188:VS1003B\VS1003B.c **** VS1003B_WriteCMD(0x00,0x0804); /* reset */
389 68,0,105,.LM56-.LFBB7
390 .LM56:
391 009c 64E0 ldi r24,lo8(-25536)
392 009e 78E0 ldi r25,hi8(-25536)
393 00a0 80E0 /* #APP */
394 00a2 0E94 0000 1: sbiw r24,1
395 brne 1b
396 /* #NOAPP */
397 .LBE51:
398 .LBE50:
399 .LBE49:
400 .LBE48:
1:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Copyright (c) 2007 Joerg Wunsch
3:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** All rights reserved.
4:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
5:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Redistribution and use in source and binary forms, with or without
6:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** modification, are permitted provided that the following conditions are met:
7:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
8:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** * Redistributions of source code must retain the above copyright
9:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer.
10:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
11:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** * Redistributions in binary form must reproduce the above copyright
12:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer in
13:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** the documentation and/or other materials provided with the
14:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** distribution.
15:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
16:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** * Neither the name of the copyright holders nor the names of
17:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** contributors may be used to endorse or promote products derived
18:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** from this software without specific prior written permission.
19:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
20:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */
31:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
32:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
33:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
34:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
35:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
36:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
37:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #include <inttypes.h>
38:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
39:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \file */
40:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
41:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** \code
42:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #include <util/delay_basic.h>
43:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** \endcode
44:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
45:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** The functions in this header file implement simple delay loops
46:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** that perform a busy-waiting. They are typically used to
47:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** facilitate short delays in the program execution. They are
48:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** implemented as count-down loops with a well-known CPU cycle
49:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** count per loop iteration. As such, no other processing can
50:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** occur simultaneously. It should be kept in mind that the
51:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** functions described here do not disable interrupts.
52:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
53:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** In general, for long delays, the use of hardware timers is
54:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** much preferrable, as they free the CPU, and allow for
55:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** concurrent processing of other events while the timer is
56:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** running. However, in particular for very short delays, the
57:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** overhead of setting up a hardware timer is too much compared
58:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** to the overall delay time.
59:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
60:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Two inline functions are provided for the actual delay algorithms.
61:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
62:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** */
63:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
64:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
65:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
66:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
67:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** #endif
68:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
69:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
70:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
71:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256
72:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** iterations are possible. (The value 256 would have to be passed
73:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not
74:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** including the overhead the compiler needs to setup the counter
75:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** register.
76:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h ****
77:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
78:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** can be achieved.
79:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** */
80:d:/winavr-20071221/bin/../avr/include/util/delay_basic.h **** void
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -