314 lines
10 KiB
Plaintext
314 lines
10 KiB
Plaintext
1 .file "WS2812B_Atmega.c"
|
|
2 __SP_H__ = 0x3e
|
|
3 __SP_L__ = 0x3d
|
|
4 __SREG__ = 0x3f
|
|
5 __tmp_reg__ = 0
|
|
6 __zero_reg__ = 1
|
|
9 .text
|
|
10 .Ltext0:
|
|
103 .global writeZero
|
|
105 writeZero:
|
|
106 .stabd 46,0,0
|
|
1:WS2812B_Atmega.c **** #include "WS2812B_Atmega.h"
|
|
2:WS2812B_Atmega.c ****
|
|
3:WS2812B_Atmega.c **** inline void writeZero() {
|
|
108 .LM0:
|
|
109 .LFBB1:
|
|
110 /* prologue: function */
|
|
111 /* frame size = 0 */
|
|
112 /* stack size = 0 */
|
|
113 .L__stack_usage = 0
|
|
4:WS2812B_Atmega.c **** DATAPIN = 1;
|
|
115 .LM1:
|
|
116 0000 81E0 ldi r24,lo8(1)
|
|
117 0002 88B9 out 0x8,r24
|
|
5:WS2812B_Atmega.c **** wait6;
|
|
119 .LM2:
|
|
120 /* #APP */
|
|
121 ; 5 "WS2812B_Atmega.c" 1
|
|
122 0004 00C0 rjmp .+0
|
|
123
|
|
124 ; 0 "" 2
|
|
125 ; 5 "WS2812B_Atmega.c" 1
|
|
126 0006 00C0 rjmp .+0
|
|
127
|
|
128 ; 0 "" 2
|
|
129 ; 5 "WS2812B_Atmega.c" 1
|
|
130 0008 00C0 rjmp .+0
|
|
131
|
|
132 ; 0 "" 2
|
|
6:WS2812B_Atmega.c **** DATAPIN = 0;
|
|
134 .LM3:
|
|
135 /* #NOAPP */
|
|
136 000a 18B8 out 0x8,__zero_reg__
|
|
7:WS2812B_Atmega.c **** wait15;
|
|
138 .LM4:
|
|
139 /* #APP */
|
|
140 ; 7 "WS2812B_Atmega.c" 1
|
|
141 000c 00C0 rjmp .+0
|
|
142
|
|
143 ; 0 "" 2
|
|
144 ; 7 "WS2812B_Atmega.c" 1
|
|
145 000e 00C0 rjmp .+0
|
|
146
|
|
147 ; 0 "" 2
|
|
148 ; 7 "WS2812B_Atmega.c" 1
|
|
149 0010 00C0 rjmp .+0
|
|
150
|
|
151 ; 0 "" 2
|
|
152 ; 7 "WS2812B_Atmega.c" 1
|
|
153 0012 00C0 rjmp .+0
|
|
154
|
|
155 ; 0 "" 2
|
|
156 ; 7 "WS2812B_Atmega.c" 1
|
|
157 0014 00C0 rjmp .+0
|
|
158
|
|
159 ; 0 "" 2
|
|
160 ; 7 "WS2812B_Atmega.c" 1
|
|
161 0016 00C0 rjmp .+0
|
|
162
|
|
163 ; 0 "" 2
|
|
164 ; 7 "WS2812B_Atmega.c" 1
|
|
165 0018 00C0 rjmp .+0
|
|
166
|
|
167 ; 0 "" 2
|
|
168 ; 7 "WS2812B_Atmega.c" 1
|
|
169 001a 0000 nop
|
|
170
|
|
171 ; 0 "" 2
|
|
172 /* #NOAPP */
|
|
173 001c 0895 ret
|
|
175 .Lscope1:
|
|
177 .stabd 78,0,0
|
|
179 .global writeOne
|
|
181 writeOne:
|
|
182 .stabd 46,0,0
|
|
8:WS2812B_Atmega.c **** }
|
|
9:WS2812B_Atmega.c ****
|
|
10:WS2812B_Atmega.c **** inline void writeOne() {
|
|
184 .LM5:
|
|
185 .LFBB2:
|
|
186 /* prologue: function */
|
|
187 /* frame size = 0 */
|
|
188 /* stack size = 0 */
|
|
189 .L__stack_usage = 0
|
|
11:WS2812B_Atmega.c **** DATAPIN = 1;
|
|
191 .LM6:
|
|
192 001e 81E0 ldi r24,lo8(1)
|
|
193 0020 88B9 out 0x8,r24
|
|
12:WS2812B_Atmega.c **** wait14;
|
|
195 .LM7:
|
|
196 /* #APP */
|
|
197 ; 12 "WS2812B_Atmega.c" 1
|
|
198 0022 00C0 rjmp .+0
|
|
199
|
|
200 ; 0 "" 2
|
|
201 ; 12 "WS2812B_Atmega.c" 1
|
|
202 0024 00C0 rjmp .+0
|
|
203
|
|
204 ; 0 "" 2
|
|
205 ; 12 "WS2812B_Atmega.c" 1
|
|
206 0026 00C0 rjmp .+0
|
|
207
|
|
208 ; 0 "" 2
|
|
209 ; 12 "WS2812B_Atmega.c" 1
|
|
210 0028 00C0 rjmp .+0
|
|
211
|
|
212 ; 0 "" 2
|
|
213 ; 12 "WS2812B_Atmega.c" 1
|
|
214 002a 00C0 rjmp .+0
|
|
215
|
|
216 ; 0 "" 2
|
|
217 ; 12 "WS2812B_Atmega.c" 1
|
|
218 002c 00C0 rjmp .+0
|
|
219
|
|
220 ; 0 "" 2
|
|
221 ; 12 "WS2812B_Atmega.c" 1
|
|
222 002e 00C0 rjmp .+0
|
|
223
|
|
224 ; 0 "" 2
|
|
13:WS2812B_Atmega.c **** DATAPIN = 0;
|
|
226 .LM8:
|
|
227 /* #NOAPP */
|
|
228 0030 18B8 out 0x8,__zero_reg__
|
|
14:WS2812B_Atmega.c **** wait8;
|
|
230 .LM9:
|
|
231 /* #APP */
|
|
232 ; 14 "WS2812B_Atmega.c" 1
|
|
233 0032 00C0 rjmp .+0
|
|
234
|
|
235 ; 0 "" 2
|
|
236 ; 14 "WS2812B_Atmega.c" 1
|
|
237 0034 00C0 rjmp .+0
|
|
238
|
|
239 ; 0 "" 2
|
|
240 ; 14 "WS2812B_Atmega.c" 1
|
|
241 0036 00C0 rjmp .+0
|
|
242
|
|
243 ; 0 "" 2
|
|
244 ; 14 "WS2812B_Atmega.c" 1
|
|
245 0038 00C0 rjmp .+0
|
|
246
|
|
247 ; 0 "" 2
|
|
248 /* #NOAPP */
|
|
249 003a 0895 ret
|
|
251 .Lscope2:
|
|
253 .stabd 78,0,0
|
|
258 .global writeRGB
|
|
260 writeRGB:
|
|
261 .stabd 46,0,0
|
|
15:WS2812B_Atmega.c **** }
|
|
16:WS2812B_Atmega.c ****
|
|
17:WS2812B_Atmega.c **** void writeRGB(uint8_t r, uint8_t g, uint8_t b) {
|
|
263 .LM10:
|
|
264 .LFBB3:
|
|
265 003c AF92 push r10
|
|
266 003e BF92 push r11
|
|
267 0040 CF92 push r12
|
|
268 0042 DF92 push r13
|
|
269 0044 EF92 push r14
|
|
270 0046 FF92 push r15
|
|
271 0048 0F93 push r16
|
|
272 004a 1F93 push r17
|
|
273 004c CF93 push r28
|
|
274 004e DF93 push r29
|
|
275 /* prologue: function */
|
|
276 /* frame size = 0 */
|
|
277 /* stack size = 10 */
|
|
278 .L__stack_usage = 10
|
|
279 0050 C82E mov r12,r24
|
|
280 0052 E42E mov r14,r20
|
|
282 .LM11:
|
|
283 0054 C8E0 ldi r28,lo8(8)
|
|
284 0056 D0E0 ldi r29,0
|
|
18:WS2812B_Atmega.c **** int i;
|
|
19:WS2812B_Atmega.c ****
|
|
20:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
|
|
286 .LM12:
|
|
287 0058 00E8 ldi r16,lo8(-128)
|
|
288 005a 10E0 ldi r17,0
|
|
21:WS2812B_Atmega.c **** if( g & i ){
|
|
290 .LM13:
|
|
291 005c A62E mov r10,r22
|
|
292 005e B12C mov r11,__zero_reg__
|
|
293 .L6:
|
|
294 0060 C801 movw r24,r16
|
|
295 0062 8A21 and r24,r10
|
|
296 0064 9B21 and r25,r11
|
|
297 0066 892B or r24,r25
|
|
298 0068 01F0 breq .L4
|
|
22:WS2812B_Atmega.c **** writeOne();
|
|
300 .LM14:
|
|
301 006a 0E94 0000 call writeOne
|
|
302 006e 00C0 rjmp .L5
|
|
303 .L4:
|
|
23:WS2812B_Atmega.c **** } else {
|
|
24:WS2812B_Atmega.c **** writeZero();
|
|
305 .LM15:
|
|
306 0070 0E94 0000 call writeZero
|
|
307 .L5:
|
|
20:WS2812B_Atmega.c **** if( g & i ){
|
|
309 .LM16:
|
|
310 0074 1595 asr r17
|
|
311 0076 0795 ror r16
|
|
312 0078 2197 sbiw r28,1
|
|
313 007a 01F4 brne .L6
|
|
314 007c C8E0 ldi r28,lo8(8)
|
|
315 007e D0E0 ldi r29,0
|
|
316 0080 00E8 ldi r16,lo8(-128)
|
|
317 0082 10E0 ldi r17,0
|
|
25:WS2812B_Atmega.c **** }
|
|
26:WS2812B_Atmega.c **** }
|
|
27:WS2812B_Atmega.c ****
|
|
28:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
|
|
29:WS2812B_Atmega.c **** if( r & i ){
|
|
319 .LM17:
|
|
320 0084 D12C mov r13,__zero_reg__
|
|
321 .L9:
|
|
322 0086 C801 movw r24,r16
|
|
323 0088 8C21 and r24,r12
|
|
324 008a 9D21 and r25,r13
|
|
325 008c 892B or r24,r25
|
|
326 008e 01F0 breq .L7
|
|
30:WS2812B_Atmega.c **** writeOne();
|
|
328 .LM18:
|
|
329 0090 0E94 0000 call writeOne
|
|
330 0094 00C0 rjmp .L8
|
|
331 .L7:
|
|
31:WS2812B_Atmega.c **** } else {
|
|
32:WS2812B_Atmega.c **** writeZero();
|
|
333 .LM19:
|
|
334 0096 0E94 0000 call writeZero
|
|
335 .L8:
|
|
28:WS2812B_Atmega.c **** if( r & i ){
|
|
337 .LM20:
|
|
338 009a 1595 asr r17
|
|
339 009c 0795 ror r16
|
|
340 009e 2197 sbiw r28,1
|
|
341 00a0 01F4 brne .L9
|
|
342 00a2 C8E0 ldi r28,lo8(8)
|
|
343 00a4 D0E0 ldi r29,0
|
|
344 00a6 00E8 ldi r16,lo8(-128)
|
|
345 00a8 10E0 ldi r17,0
|
|
33:WS2812B_Atmega.c **** }
|
|
34:WS2812B_Atmega.c **** }
|
|
35:WS2812B_Atmega.c ****
|
|
36:WS2812B_Atmega.c **** for( i = 128; i > 0; i >>= 1 ) {
|
|
37:WS2812B_Atmega.c **** if( b & i ){
|
|
347 .LM21:
|
|
348 00aa F12C mov r15,__zero_reg__
|
|
349 .L12:
|
|
350 00ac C801 movw r24,r16
|
|
351 00ae 8E21 and r24,r14
|
|
352 00b0 9F21 and r25,r15
|
|
353 00b2 892B or r24,r25
|
|
354 00b4 01F0 breq .L10
|
|
38:WS2812B_Atmega.c **** writeOne();
|
|
356 .LM22:
|
|
357 00b6 0E94 0000 call writeOne
|
|
358 00ba 00C0 rjmp .L11
|
|
359 .L10:
|
|
39:WS2812B_Atmega.c **** } else {
|
|
40:WS2812B_Atmega.c **** writeZero();
|
|
361 .LM23:
|
|
362 00bc 0E94 0000 call writeZero
|
|
363 .L11:
|
|
36:WS2812B_Atmega.c **** if( b & i ){
|
|
365 .LM24:
|
|
366 00c0 1595 asr r17
|
|
367 00c2 0795 ror r16
|
|
368 00c4 2197 sbiw r28,1
|
|
369 00c6 01F4 brne .L12
|
|
370 /* epilogue start */
|
|
41:WS2812B_Atmega.c **** }
|
|
42:WS2812B_Atmega.c **** }
|
|
43:WS2812B_Atmega.c **** }
|
|
372 .LM25:
|
|
373 00c8 DF91 pop r29
|
|
374 00ca CF91 pop r28
|
|
375 00cc 1F91 pop r17
|
|
376 00ce 0F91 pop r16
|
|
377 00d0 FF90 pop r15
|
|
378 00d2 EF90 pop r14
|
|
379 00d4 DF90 pop r13
|
|
380 00d6 CF90 pop r12
|
|
381 00d8 BF90 pop r11
|
|
382 00da AF90 pop r10
|
|
383 00dc 0895 ret
|
|
385 .Lscope3:
|
|
387 .stabd 78,0,0
|
|
389 .Letext0:
|
|
390 .ident "GCC: (GNU) 4.9.2"
|
|
DEFINED SYMBOLS
|
|
*ABS*:0000000000000000 WS2812B_Atmega.c
|
|
/tmp/cc4evma8.s:2 *ABS*:000000000000003e __SP_H__
|
|
/tmp/cc4evma8.s:3 *ABS*:000000000000003d __SP_L__
|
|
/tmp/cc4evma8.s:4 *ABS*:000000000000003f __SREG__
|
|
/tmp/cc4evma8.s:5 *ABS*:0000000000000000 __tmp_reg__
|
|
/tmp/cc4evma8.s:6 *ABS*:0000000000000001 __zero_reg__
|
|
/tmp/cc4evma8.s:105 .text:0000000000000000 writeZero
|
|
/tmp/cc4evma8.s:181 .text:000000000000001e writeOne
|
|
/tmp/cc4evma8.s:260 .text:000000000000003c writeRGB
|
|
|
|
NO UNDEFINED SYMBOLS
|