📄 vs1003b.lst
字号:
1 .file "VS1003B.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
10 .text
11 .Ltext0:
70 .global VS1003B_SPI_Low
72 VS1003B_SPI_Low:
1:VS1003B\VS1003B.c **** /*******************************************************************/
2:VS1003B\VS1003B.c **** /* VS1003 diriver for Mega8 MP3 Player */
3:VS1003B\VS1003B.c **** /* */
4:VS1003B\VS1003B.c **** /* Platform : AVRStudio4.13 b528 + WinAVR20070122 */
5:VS1003B\VS1003B.c **** /* optimize -0s */
6:VS1003B\VS1003B.c **** /* Author : bozai(Zhang Qibo) */
7:VS1003B\VS1003B.c **** /* E-mail : sudazqb@163.com */
8:VS1003B\VS1003B.c **** /* MSN : zhangqibo_1985@hotmail.com */
9:VS1003B\VS1003B.c **** /* Date : 2006-05-09 */
10:VS1003B\VS1003B.c **** /*******************************************************************/
11:VS1003B\VS1003B.c **** /*2007-11-22: add bass tremble control */
12:VS1003B\VS1003B.c **** /*2007-10-21: add new functions, */
13:VS1003B\VS1003B.c **** /*2007-10-19: use new delay function */
14:VS1003B\VS1003B.c **** /*2007-05-04: add slow start up code, and add enough delay */
15:VS1003B\VS1003B.c **** /*2007-04-21: */
16:VS1003B\VS1003B.c ****
17:VS1003B\VS1003B.c ****
18:VS1003B\VS1003B.c **** #include<avr/io.h>
19:VS1003B\VS1003B.c **** #include"VS1003B.h"
20:VS1003B\VS1003B.c **** #include<util/delay.h>
21:VS1003B\VS1003B.c ****
22:VS1003B\VS1003B.c **** #define uchar unsigned char
23:VS1003B\VS1003B.c **** #define uint unsigned int
24:VS1003B\VS1003B.c ****
25:VS1003B\VS1003B.c **** void VS1003B_SPI_Low(void);//low spi clk
26:VS1003B\VS1003B.c **** void VS1003B_SPI_High(void);//high spi clk
27:VS1003B\VS1003B.c **** unsigned char VS1003B_WriteByte(unsigned char CH);//spi write a byte
28:VS1003B\VS1003B.c **** void VS1003B_WriteCMD(unsigned char addr, unsigned int dat);//write register
29:VS1003B\VS1003B.c **** unsigned int VS1003B_ReadCMD(unsigned char addr);//read register
30:VS1003B\VS1003B.c ****
31:VS1003B\VS1003B.c ****
32:VS1003B\VS1003B.c ****
33:VS1003B\VS1003B.c **** /* Run at the loweset spi speed, clk should below 12.288M/6 */
34:VS1003B\VS1003B.c **** void VS1003B_SPI_Low(void)
35:VS1003B\VS1003B.c **** {
73 * prologue end (size=0) */
75 .LM1:
76 ldi r24,lo8(83)
77 out 45-0x20,r24
36:VS1003B\VS1003B.c **** SPCR = _BV(SPE)|_BV(MSTR)|_BV(SPR1)|_BV(SPR0);
78 bn 68,0,37,.LM2-.LFBB1
79 .LM2:
80 0000 83E5 cbi 46-0x20,0
81 0002 8DB9 /* epilogue: frame size=0 */
37:VS1003B\VS1003B.c **** SPSR &= ~_BV(SPI2X);
82
83 /* epilogue end (size=1) */
84 0004 7098 /* function VS1003B_SPI_Low size 4 (3) */
86 0006 0895 .Lscope1:
88 .global VS1003B_SPI_High
90 VS1003B_SPI_High:
92 .LM3:
93 .LFBB2:
94 /* prologue: frame size=0 */
38:VS1003B\VS1003B.c **** }
39:VS1003B\VS1003B.c ****
40:VS1003B\VS1003B.c **** /* High speed, should not exceed 49.512MHz/6 */
41:VS1003B\VS1003B.c **** void VS1003B_SPI_High(void)
42:VS1003B\VS1003B.c **** {
95 end (size=0) */
97 .LM4:
98 ldi r24,lo8(80)
99 out 45-0x20,r24
43:VS1003B\VS1003B.c **** SPCR = _BV(SPE)|_BV(MSTR);
100 bn 68,0,44,.LM5-.LFBB2
101 .LM5:
102 0008 80E5 sbi 46-0x20,0
103 000a 8DB9 /* epilogue: frame size=0 */
44:VS1003B\VS1003B.c **** SPSR |= _BV(SPI2X);
104
105 /* epilogue end (size=1) */
106 000c 709A /* function VS1003B_SPI_High size 4 (3) */
108 000e 0895 .Lscope2:
111 .global VS1003B_WriteByte
113 VS1003B_WriteByte:
115 .LM6:
116 .LFBB3:
117 /* prologue: frame size=0 */
45:VS1003B\VS1003B.c **** }
46:VS1003B\VS1003B.c ****
47:VS1003B\VS1003B.c **** /* write one byte to vs1003 */
48:VS1003B\VS1003B.c **** unsigned char VS1003B_WriteByte(unsigned char CH)
49:VS1003B\VS1003B.c **** {
118 nd (size=0) */
120 .LM7:
121 out 47-0x20,r24
122 .L6:
50:VS1003B\VS1003B.c **** SPDR = CH;
123 bn 68,0,51,.LM8-.LFBB3
124 .LM8:
125 0010 8FB9 sbis 46-0x20,7
126 rjmp .L6
51:VS1003B\VS1003B.c **** while(!(SPSR & _BV(SPIF)));
127 abn 68,0,52,.LM9-.LFBB3
128 .LM9:
129 0012 779B in r24,47-0x20
52:VS1003B\VS1003B.c **** return SPDR;
131 0:
132 ldi r25,lo8(0)
133 0016 8FB1 /* epilogue: frame size=0 */
53:VS1003B\VS1003B.c **** }
134 t
135 /* epilogue end (size=1) */
136 0018 90E0 /* function VS1003B_WriteByte size 6 (5) */
138 001a 0895 .Lscope3:
140 .global VS1003B_ReadByte
142 VS1003B_ReadByte:
144 .LM11:
145 .LFBB4:
146 /* prologue: frame size=0 */
54:VS1003B\VS1003B.c ****
55:VS1003B\VS1003B.c **** /* read one byte from vs1003 */
56:VS1003B\VS1003B.c **** unsigned char VS1003B_ReadByte()
57:VS1003B\VS1003B.c **** {
147 nd (size=0) */
149 .LM12:
150 ldi r24,lo8(-1)
151 out 47-0x20,r24
58:VS1003B\VS1003B.c **** SPDR = 0xff;
152
154 001c 8FEF .LM13:
155 001e 8FB9 sbis 46-0x20,7
156 rjmp .L12
59:VS1003B\VS1003B.c **** while(!(SPSR & _BV(SPIF)));
157 abn 68,0,60,.LM14-.LFBB4
158 .LM14:
159 0020 779B in r24,47-0x20
60:VS1003B\VS1003B.c **** return SPDR;
161 5:
162 ldi r25,lo8(0)
163 0024 8FB1 /* epilogue: frame size=0 */
61:VS1003B\VS1003B.c **** }
164 t
165 /* epilogue end (size=1) */
166 0026 90E0 /* function VS1003B_ReadByte size 7 (6) */
168 0028 0895 .Lscope4:
172 .global VS1003B_WriteCMD
174 VS1003B_WriteCMD:
176 .LM16:
177 .LFBB5:
178 /* prologue: frame size=0 */
62:VS1003B\VS1003B.c ****
63:VS1003B\VS1003B.c **** /*写寄存器,参数,地址和数据 config register */
64:VS1003B\VS1003B.c **** void VS1003B_WriteCMD(unsigned char addr, unsigned int dat)
65:VS1003B\VS1003B.c **** {
179 (size=0) */
180 mov r25,r24
182 .LM17:
183 sbi 56-0x20,7
66:VS1003B\VS1003B.c **** VS1003B_XDCS_H();
185
186 cbi 56-0x20,4
187 002c C79A .LBB30:
67:VS1003B\VS1003B.c **** VS1003B_XCS_L();
188 BB31:
190 002e C498 .LM19:
191 ldi r24,lo8(2)
192 out 47-0x20,r24
193 .L18:
195 0030 82E0 .LM20:
196 0032 8FB9 sbis 46-0x20,7
197 rjmp .L18
199 .LM21:
200 0034 779B in r24,47-0x20
201 0036 00C0 .LBE31:
202 .LBE30:
203 .LBB32:
204 0038 8FB1 .LBB33:
206 .LM22:
207 out 47-0x20,r25
208 .L20:
210 .LM23:
211 003a 9FB9 sbis 46-0x20,7
212 rjmp .L20
214 .LM24:
215 003c 779B in r24,47-0x20
216 003e 00C0 .LBE33:
217 .LBE32:
219 0040 8FB1 .LM25:
220 mov r24,r23
221 clr r25
68:VS1003B\VS1003B.c **** VS1003B_WriteByte(0x02);
69:VS1003B\VS1003B.c **** VS1003B_WriteByte(addr);
70:VS1003B\VS1003B.c **** VS1003B_WriteByte(dat>>8);
222 M26-.LFBB5
223 .LM26:
224 0042 872F out 47-0x20,r24
225 0044 9927 .L22:
227 .LM27:
228 sbis 46-0x20,7
229 rjmp .L22
231 .LM28:
232 in r24,47-0x20
233 .LBE35:
234 0048 779B .LBE34:
235 004a 00C0 .LBB36:
236 .LBB37:
238 004c 8FB1 .LM29:
239 out 47-0x20,r22
240 .L24:
242 .LM30:
243 sbis 46-0x20,7
244 rjmp .L24
246 .LM31:
247 in r24,47-0x20
248 .LBE37:
249 0050 779B .LBE36:
251 .LM32:
252 sbi 56-0x20,4
253 0054 8FB1 /* epilogue: frame size=0 */
254 ret
255 /* epilogue end (size=1) */
71:VS1003B\VS1003B.c **** VS1003B_WriteByte(dat);
72:VS1003B\VS1003B.c **** VS1003B_XCS_H();
256 24 (23) */
258 0056 C49A .Lscope5:
261 .global VS1003B_ReadCMD
263 VS1003B_ReadCMD:
265 .LM33:
266 .LFBB6:
267 /* prologue: frame size=0 */
268 /* prologue end (size=0) */
269 mov r25,r24
73:VS1003B\VS1003B.c **** }
74:VS1003B\VS1003B.c ****
75:VS1003B\VS1003B.c **** /* 读寄存器,参数 地址 返回内容 read register */
76:VS1003B\VS1003B.c **** unsigned int VS1003B_ReadCMD(unsigned char addr)
77:VS1003B\VS1003B.c **** {
270 9,.LM34-.LFBB6
271 .LM34:
272 sbi 56-0x20,7
274 .LM35:
275 005a 982F cbi 56-0x20,4
78:VS1003B\VS1003B.c **** unsigned int temp;
79:VS1003B\VS1003B.c **** VS1003B_XDCS_H();
276 :
277 .LBB39:
80:VS1003B\VS1003B.c **** VS1003B_XCS_L();
279 36:
280 ldi r24,lo8(3)
281 005e C498 out 47-0x20,r24
282 .L36:
284 .LM37:
285 sbis 46-0x20,7
286 0060 83E0 rjmp .L36
288 .LM38:
289 in r24,47-0x20
290 .LBE39:
291 0064 779B .LBE38:
292 0066 00C0 .LBB40:
293 .LBB41:
295 0068 8FB1 .LM39:
296 out 47-0x20,r25
297 .L38:
299 .LM40:
300 sbis 46-0x20,7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -