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