main.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000012c 00000000 00000000 00000094 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00800060 0000012c 000001c0 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000000 00800060 0000012c 000001c0 2**0 ALLOC 3 .noinit 00000000 00800060 00800060 000001c0 2**0 CONTENTS 4 .eeprom 00000000 00810000 00810000 000001c0 2**0 CONTENTS 5 .stab 00000354 00000000 00000000 000001c0 2**2 CONTENTS, READONLY, DEBUGGING 6 .stabstr 00000084 00000000 00000000 00000514 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_aranges 00000014 00000000 00000000 00000598 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_pubnames 00000025 00000000 00000000 000005ac 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_info 00000168 00000000 00000000 000005d1 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_abbrev 00000069 00000000 00000000 00000739 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_line 000000c0 00000000 00000000 000007a2 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> 2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt> 4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt> 6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt> 8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt> a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt> c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt> e: 24 c0 rjmp .+72 ; 0x58 <__bad_interrupt> 10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt> 12: 22 c0 rjmp .+68 ; 0x58 <__bad_interrupt> 14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt> 16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt> 18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt> 1a: 1e c0 rjmp .+60 ; 0x58 <__bad_interrupt> 1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt> 1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt> 20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt> 22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt> 24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt> 00000026 <__ctors_end>: 26: 11 24 eor r1, r1 28: 1f be out 0x3f, r1 ; 63 2a: cf ed ldi r28, 0xDF ; 223 2c: cd bf out 0x3d, r28 ; 61 0000002e <__do_copy_data>: 2e: 10 e0 ldi r17, 0x00 ; 0 30: a0 e6 ldi r26, 0x60 ; 96 32: b0 e0 ldi r27, 0x00 ; 0 34: ec e2 ldi r30, 0x2C ; 44 36: f1 e0 ldi r31, 0x01 ; 1 38: 03 c0 rjmp .+6 ; 0x40 <.do_copy_data_start> 0000003a <.do_copy_data_loop>: 3a: c8 95 lpm 3c: 31 96 adiw r30, 0x01 ; 1 3e: 0d 92 st X+, r0 00000040 <.do_copy_data_start>: 40: a0 36 cpi r26, 0x60 ; 96 42: b1 07 cpc r27, r17 44: d1 f7 brne .-12 ; 0x3a <.do_copy_data_loop> 00000046 <__do_clear_bss>: 46: 10 e0 ldi r17, 0x00 ; 0 48: a0 e6 ldi r26, 0x60 ; 96 4a: b0 e0 ldi r27, 0x00 ; 0 4c: 01 c0 rjmp .+2 ; 0x50 <.do_clear_bss_start> 0000004e <.do_clear_bss_loop>: 4e: 1d 92 st X+, r1 00000050 <.do_clear_bss_start>: 50: a0 36 cpi r26, 0x60 ; 96 52: b1 07 cpc r27, r17 54: e1 f7 brne .-8 ; 0x4e <.do_clear_bss_loop> 56: 30 c0 rjmp .+96 ; 0xb8
00000058 <__bad_interrupt>: 58: d3 cf rjmp .-90 ; 0x0 <__vectors> 0000005a : void delay(void) { 5a: cf 93 push r28 5c: df 93 push r29 5e: cd b7 in r28, 0x3d ; 61 60: de b7 in r29, 0x3e ; 62 62: 24 97 sbiw r28, 0x04 ; 4 64: 0f b6 in r0, 0x3f ; 63 66: f8 94 cli 68: de bf out 0x3e, r29 ; 62 6a: 0f be out 0x3f, r0 ; 63 6c: cd bf out 0x3d, r28 ; 61 uint32_t waitcounter; waitcounter = 10000000; 6e: 80 e8 ldi r24, 0x80 ; 128 70: 96 e9 ldi r25, 0x96 ; 150 72: a8 e9 ldi r26, 0x98 ; 152 74: b0 e0 ldi r27, 0x00 ; 0 76: 89 83 std Y+1, r24 ; 0x01 78: 9a 83 std Y+2, r25 ; 0x02 7a: ab 83 std Y+3, r26 ; 0x03 7c: bc 83 std Y+4, r27 ; 0x04 while(0 != waitcounter) { 7e: 89 81 ldd r24, Y+1 ; 0x01 80: 9a 81 ldd r25, Y+2 ; 0x02 82: ab 81 ldd r26, Y+3 ; 0x03 84: bc 81 ldd r27, Y+4 ; 0x04 86: 00 97 sbiw r24, 0x00 ; 0 88: a1 05 cpc r26, r1 8a: b1 05 cpc r27, r1 8c: 61 f0 breq .+24 ; 0xa6 waitcounter--; 8e: 89 81 ldd r24, Y+1 ; 0x01 90: 9a 81 ldd r25, Y+2 ; 0x02 92: ab 81 ldd r26, Y+3 ; 0x03 94: bc 81 ldd r27, Y+4 ; 0x04 96: 01 97 sbiw r24, 0x01 ; 1 98: a1 09 sbc r26, r1 9a: b1 09 sbc r27, r1 9c: 89 83 std Y+1, r24 ; 0x01 9e: 9a 83 std Y+2, r25 ; 0x02 a0: ab 83 std Y+3, r26 ; 0x03 a2: bc 83 std Y+4, r27 ; 0x04 a4: ec cf rjmp .-40 ; 0x7e a6: 24 96 adiw r28, 0x04 ; 4 a8: 0f b6 in r0, 0x3f ; 63 aa: f8 94 cli ac: de bf out 0x3e, r29 ; 62 ae: 0f be out 0x3f, r0 ; 63 b0: cd bf out 0x3d, r28 ; 61 b2: df 91 pop r29 b4: cf 91 pop r28 b6: 08 95 ret 000000b8
: } } int main(void) { b8: cb ed ldi r28, 0xDB ; 219 ba: d0 e0 ldi r29, 0x00 ; 0 bc: de bf out 0x3e, r29 ; 62 be: cd bf out 0x3d, r28 ; 61 uint32_t ctr; //--------- // initialise the hardware DDRB = 0x1F; c0: 8f e1 ldi r24, 0x1F ; 31 c2: 80 93 37 00 sts 0x0037, r24 //--------- // the main loop while(1) { for (ctr=0; ctr<8; ctr++){ c6: 19 82 std Y+1, r1 ; 0x01 c8: 1a 82 std Y+2, r1 ; 0x02 ca: 1b 82 std Y+3, r1 ; 0x03 cc: 1c 82 std Y+4, r1 ; 0x04 ce: 89 81 ldd r24, Y+1 ; 0x01 d0: 9a 81 ldd r25, Y+2 ; 0x02 d2: ab 81 ldd r26, Y+3 ; 0x03 d4: bc 81 ldd r27, Y+4 ; 0x04 d6: 88 30 cpi r24, 0x08 ; 8 d8: 91 05 cpc r25, r1 da: a1 05 cpc r26, r1 dc: b1 05 cpc r27, r1 de: 98 f7 brcc .-26 ; 0xc6 // set color PORTB = ctr*4; e0: 89 81 ldd r24, Y+1 ; 0x01 e2: 9a 81 ldd r25, Y+2 ; 0x02 e4: ab 81 ldd r26, Y+3 ; 0x03 e6: bc 81 ldd r27, Y+4 ; 0x04 e8: 88 0f add r24, r24 ea: 99 1f adc r25, r25 ec: aa 1f adc r26, r26 ee: bb 1f adc r27, r27 f0: 88 0f add r24, r24 f2: 99 1f adc r25, r25 f4: aa 1f adc r26, r26 f6: bb 1f adc r27, r27 f8: 80 93 38 00 sts 0x0038, r24 // turn on LED PORTB |= 0x01; fc: 80 91 38 00 lds r24, 0x0038 100: 81 60 ori r24, 0x01 ; 1 102: 80 93 38 00 sts 0x0038, r24 // the delay delay(); 106: a9 df rcall .-174 ; 0x5a // turn off LED PORTB &= 0xFE; 108: 9e ef ldi r25, 0xFE ; 254 10a: 80 91 38 00 lds r24, 0x0038 10e: 89 23 and r24, r25 110: 80 93 38 00 sts 0x0038, r24 114: 89 81 ldd r24, Y+1 ; 0x01 116: 9a 81 ldd r25, Y+2 ; 0x02 118: ab 81 ldd r26, Y+3 ; 0x03 11a: bc 81 ldd r27, Y+4 ; 0x04 11c: 01 96 adiw r24, 0x01 ; 1 11e: a1 1d adc r26, r1 120: b1 1d adc r27, r1 122: 89 83 std Y+1, r24 ; 0x01 124: 9a 83 std Y+2, r25 ; 0x02 126: ab 83 std Y+3, r26 ; 0x03 128: bc 83 std Y+4, r27 ; 0x04 12a: d1 cf rjmp .-94 ; 0xce