MIC-Week1.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 00000002 00800100 00000214 000002a8 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 00000214 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 00000006 00800102 00800102 000002aa 2**0 ALLOC 3 .comment 00000030 00000000 00000000 000002aa 2**0 CONTENTS, READONLY 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000002dc 2**2 CONTENTS, READONLY 5 .debug_aranges 00000070 00000000 00000000 00000318 2**0 CONTENTS, READONLY, DEBUGGING 6 .debug_info 00000410 00000000 00000000 00000388 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_abbrev 000001e3 00000000 00000000 00000798 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_line 000003b0 00000000 00000000 0000097b 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_frame 000000ec 00000000 00000000 00000d2c 2**2 CONTENTS, READONLY, DEBUGGING 10 .debug_str 00000216 00000000 00000000 00000e18 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 00000163 00000000 00000000 0000102e 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_ranges 00000060 00000000 00000000 00001191 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end> 2: 00 00 nop 4: 60 c0 rjmp .+192 ; 0xc6 <__bad_interrupt> 6: 00 00 nop 8: 5e c0 rjmp .+188 ; 0xc6 <__bad_interrupt> a: 00 00 nop c: 5c c0 rjmp .+184 ; 0xc6 <__bad_interrupt> e: 00 00 nop 10: 5a c0 rjmp .+180 ; 0xc6 <__bad_interrupt> 12: 00 00 nop 14: 58 c0 rjmp .+176 ; 0xc6 <__bad_interrupt> 16: 00 00 nop 18: 56 c0 rjmp .+172 ; 0xc6 <__bad_interrupt> 1a: 00 00 nop 1c: 54 c0 rjmp .+168 ; 0xc6 <__bad_interrupt> 1e: 00 00 nop 20: 52 c0 rjmp .+164 ; 0xc6 <__bad_interrupt> 22: 00 00 nop 24: 50 c0 rjmp .+160 ; 0xc6 <__bad_interrupt> 26: 00 00 nop 28: 4e c0 rjmp .+156 ; 0xc6 <__bad_interrupt> 2a: 00 00 nop 2c: 4c c0 rjmp .+152 ; 0xc6 <__bad_interrupt> 2e: 00 00 nop 30: 4a c0 rjmp .+148 ; 0xc6 <__bad_interrupt> 32: 00 00 nop 34: 48 c0 rjmp .+144 ; 0xc6 <__bad_interrupt> 36: 00 00 nop 38: 46 c0 rjmp .+140 ; 0xc6 <__bad_interrupt> 3a: 00 00 nop 3c: 44 c0 rjmp .+136 ; 0xc6 <__bad_interrupt> 3e: 00 00 nop 40: 43 c0 rjmp .+134 ; 0xc8 <__vector_16> 42: 00 00 nop 44: 40 c0 rjmp .+128 ; 0xc6 <__bad_interrupt> 46: 00 00 nop 48: 3e c0 rjmp .+124 ; 0xc6 <__bad_interrupt> 4a: 00 00 nop 4c: 3c c0 rjmp .+120 ; 0xc6 <__bad_interrupt> 4e: 00 00 nop 50: 3a c0 rjmp .+116 ; 0xc6 <__bad_interrupt> 52: 00 00 nop 54: 38 c0 rjmp .+112 ; 0xc6 <__bad_interrupt> 56: 00 00 nop 58: 36 c0 rjmp .+108 ; 0xc6 <__bad_interrupt> 5a: 00 00 nop 5c: 34 c0 rjmp .+104 ; 0xc6 <__bad_interrupt> 5e: 00 00 nop 60: 32 c0 rjmp .+100 ; 0xc6 <__bad_interrupt> 62: 00 00 nop 64: 30 c0 rjmp .+96 ; 0xc6 <__bad_interrupt> 66: 00 00 nop 68: 2e c0 rjmp .+92 ; 0xc6 <__bad_interrupt> 6a: 00 00 nop 6c: 2c c0 rjmp .+88 ; 0xc6 <__bad_interrupt> 6e: 00 00 nop 70: 2a c0 rjmp .+84 ; 0xc6 <__bad_interrupt> 72: 00 00 nop 74: 28 c0 rjmp .+80 ; 0xc6 <__bad_interrupt> 76: 00 00 nop 78: 26 c0 rjmp .+76 ; 0xc6 <__bad_interrupt> 7a: 00 00 nop 7c: 24 c0 rjmp .+72 ; 0xc6 <__bad_interrupt> 7e: 00 00 nop 80: 22 c0 rjmp .+68 ; 0xc6 <__bad_interrupt> 82: 00 00 nop 84: 20 c0 rjmp .+64 ; 0xc6 <__bad_interrupt> 86: 00 00 nop 88: 1e c0 rjmp .+60 ; 0xc6 <__bad_interrupt> ... 0000008c <__ctors_end>: 8c: 11 24 eor r1, r1 8e: 1f be out 0x3f, r1 ; 63 90: cf ef ldi r28, 0xFF ; 255 92: d0 e1 ldi r29, 0x10 ; 16 94: de bf out 0x3e, r29 ; 62 96: cd bf out 0x3d, r28 ; 61 00000098 <__do_copy_data>: 98: 11 e0 ldi r17, 0x01 ; 1 9a: a0 e0 ldi r26, 0x00 ; 0 9c: b1 e0 ldi r27, 0x01 ; 1 9e: e4 e1 ldi r30, 0x14 ; 20 a0: f2 e0 ldi r31, 0x02 ; 2 a2: 00 e0 ldi r16, 0x00 ; 0 a4: 0b bf out 0x3b, r16 ; 59 a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14> a8: 07 90 elpm r0, Z+ aa: 0d 92 st X+, r0 ac: a2 30 cpi r26, 0x02 ; 2 ae: b1 07 cpc r27, r17 b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10> 000000b2 <__do_clear_bss>: b2: 21 e0 ldi r18, 0x01 ; 1 b4: a2 e0 ldi r26, 0x02 ; 2 b6: b1 e0 ldi r27, 0x01 ; 1 b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start> 000000ba <.do_clear_bss_loop>: ba: 1d 92 st X+, r1 000000bc <.do_clear_bss_start>: bc: a8 30 cpi r26, 0x08 ; 8 be: b2 07 cpc r27, r18 c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop> c2: 99 d0 rcall .+306 ; 0x1f6
c4: a5 c0 rjmp .+330 ; 0x210 <_exit> 000000c6 <__bad_interrupt>: c6: 9c cf rjmp .-200 ; 0x0 <__vectors> 000000c8 <__vector_16>: void opgave6(void) { PORTD = 0b10000000; wait( blink ); PORTD = 0b00000000; wait( blink ); c8: 1f 92 push r1 ca: 0f 92 push r0 cc: 0f b6 in r0, 0x3f ; 63 ce: 0f 92 push r0 d0: 11 24 eor r1, r1 d2: 2f 93 push r18 d4: 8f 93 push r24 d6: 9f 93 push r25 d8: 98 9b sbis 0x13, 0 ; 19 da: 1a c0 rjmp .+52 ; 0x110 <__vector_16+0x48> dc: 80 91 04 01 lds r24, 0x0104 e0: 90 91 05 01 lds r25, 0x0105 e4: 89 2b or r24, r25 e6: a1 f4 brne .+40 ; 0x110 <__vector_16+0x48> e8: 80 91 00 01 lds r24, 0x0100 ec: 90 91 01 01 lds r25, 0x0101 f0: 88 0f add r24, r24 f2: 99 1f adc r25, r25 f4: 90 93 01 01 sts 0x0101, r25 f8: 80 93 00 01 sts 0x0100, r24 fc: 81 e0 ldi r24, 0x01 ; 1 fe: 90 e0 ldi r25, 0x00 ; 0 100: 90 93 07 01 sts 0x0107, r25 104: 80 93 06 01 sts 0x0106, r24 108: 90 93 05 01 sts 0x0105, r25 10c: 80 93 04 01 sts 0x0104, r24 110: 99 9b sbis 0x13, 1 ; 19 112: 1d c0 rjmp .+58 ; 0x14e <__vector_16+0x86> 114: 80 91 02 01 lds r24, 0x0102 118: 90 91 03 01 lds r25, 0x0103 11c: 89 2b or r24, r25 11e: b9 f4 brne .+46 ; 0x14e <__vector_16+0x86> 120: 80 91 00 01 lds r24, 0x0100 124: 90 91 01 01 lds r25, 0x0101 128: 99 23 and r25, r25 12a: 0c f4 brge .+2 ; 0x12e <__vector_16+0x66> 12c: 01 96 adiw r24, 0x01 ; 1 12e: 95 95 asr r25 130: 87 95 ror r24 132: 90 93 01 01 sts 0x0101, r25 136: 80 93 00 01 sts 0x0100, r24 13a: 81 e0 ldi r24, 0x01 ; 1 13c: 90 e0 ldi r25, 0x00 ; 0 13e: 90 93 07 01 sts 0x0107, r25 142: 80 93 06 01 sts 0x0106, r24 146: 90 93 03 01 sts 0x0103, r25 14a: 80 93 02 01 sts 0x0102, r24 14e: 83 b3 in r24, 0x13 ; 19 150: 81 11 cpse r24, r1 152: 08 c0 rjmp .+16 ; 0x164 <__vector_16+0x9c> 154: 10 92 05 01 sts 0x0105, r1 158: 10 92 04 01 sts 0x0104, r1 15c: 10 92 03 01 sts 0x0103, r1 160: 10 92 02 01 sts 0x0102, r1 164: 80 91 00 01 lds r24, 0x0100 168: 90 91 01 01 lds r25, 0x0101 16c: 84 31 cpi r24, 0x14 ; 20 16e: 91 05 cpc r25, r1 170: 3c f4 brge .+14 ; 0x180 <__vector_16+0xb8> 172: 84 e1 ldi r24, 0x14 ; 20 174: 90 e0 ldi r25, 0x00 ; 0 176: 90 93 01 01 sts 0x0101, r25 17a: 80 93 00 01 sts 0x0100, r24 17e: 09 c0 rjmp .+18 ; 0x192 <__vector_16+0xca> 180: 81 3a cpi r24, 0xA1 ; 161 182: 9f 40 sbci r25, 0x0F ; 15 184: 34 f0 brlt .+12 ; 0x192 <__vector_16+0xca> 186: 80 ea ldi r24, 0xA0 ; 160 188: 9f e0 ldi r25, 0x0F ; 15 18a: 90 93 01 01 sts 0x0101, r25 18e: 80 93 00 01 sts 0x0100, r24 192: 9f 91 pop r25 194: 8f 91 pop r24 196: 2f 91 pop r18 198: 0f 90 pop r0 19a: 0f be out 0x3f, r0 ; 63 19c: 0f 90 pop r0 19e: 1f 90 pop r1 1a0: 18 95 reti 000001a2 : } void charlieplexing(void) { //Button C0 if( (0b00000001 & PINC) != 0) 1a2: 98 9b sbis 0x13, 0 ; 19 1a4: 05 c0 rjmp .+10 ; 0x1b0 { DDRD = 0b00000011; //PIN 1 & 2 as output. Pin 3 as input (TRI-STATE) 1a6: 83 e0 ldi r24, 0x03 ; 3 1a8: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000001; //PIN 1 High, PIN 2 Low 1aa: 81 e0 ldi r24, 0x01 ; 1 1ac: 82 bb out 0x12, r24 ; 18 1ae: 08 95 ret } //Button C1 else if( (0b00000010 & PINC) != 0) 1b0: 99 9b sbis 0x13, 1 ; 19 1b2: 05 c0 rjmp .+10 ; 0x1be { DDRD = 0b00000011; //PIN 1 & 2 as output. Pin 3 as input (TRI-STATE) 1b4: 83 e0 ldi r24, 0x03 ; 3 1b6: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000010; //PIN 2 High, PIN 1 Low 1b8: 82 e0 ldi r24, 0x02 ; 2 1ba: 82 bb out 0x12, r24 ; 18 1bc: 08 95 ret } //Button C2 else if( (0b00000100 & PINC) != 0) 1be: 9a 9b sbis 0x13, 2 ; 19 1c0: 05 c0 rjmp .+10 ; 0x1cc { DDRD = 0b00000110; //PIN 2 & 3 as output. Pin 1 as input (TRI-STATE) 1c2: 86 e0 ldi r24, 0x06 ; 6 1c4: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000010; //PIN 2 High, PIN 3 Low 1c6: 82 e0 ldi r24, 0x02 ; 2 1c8: 82 bb out 0x12, r24 ; 18 1ca: 08 95 ret } //Button C3 else if( (0b00001000 & PINC) != 0) 1cc: 9b 9b sbis 0x13, 3 ; 19 1ce: 05 c0 rjmp .+10 ; 0x1da { DDRD = 0b00000110; //PIN 2 & 3 as output. Pin 1 as input (TRI-STATE) 1d0: 86 e0 ldi r24, 0x06 ; 6 1d2: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000100; //PIN 3 High, PIN 2 Low 1d4: 84 e0 ldi r24, 0x04 ; 4 1d6: 82 bb out 0x12, r24 ; 18 1d8: 08 95 ret } //Button C4 else if( (0b00010000 & PINC) != 0) 1da: 9c 9b sbis 0x13, 4 ; 19 1dc: 05 c0 rjmp .+10 ; 0x1e8 { DDRD = 0b00000101; //PIN 3 & 1 as output. Pin 2 as input (TRI-STATE) 1de: 85 e0 ldi r24, 0x05 ; 5 1e0: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000100; //PIN 3 High, PIN 1 Low 1e2: 84 e0 ldi r24, 0x04 ; 4 1e4: 82 bb out 0x12, r24 ; 18 1e6: 08 95 ret } //Button C5 else if( (0b00100000 & PINC) != 0) 1e8: 9d 9b sbis 0x13, 5 ; 19 1ea: 04 c0 rjmp .+8 ; 0x1f4 { DDRD = 0b00000101; //PIN 3 & 1 as output. Pin 2 as input (TRI-STATE) 1ec: 85 e0 ldi r24, 0x05 ; 5 1ee: 81 bb out 0x11, r24 ; 17 PORTD = 0b00000001; //PIN 1 High, PIN 3 Low 1f0: 81 e0 ldi r24, 0x01 ; 1 1f2: 82 bb out 0x12, r24 ; 18 1f4: 08 95 ret 000001f6
: } } int main(void) { DDRC = 0b00000000; //input 1f6: 14 ba out 0x14, r1 ; 20 DDRD = 0b11111111; //output 1f8: 8f ef ldi r24, 0xFF ; 255 1fa: 81 bb out 0x11, r24 ; 17 // Prescaler TCCR0 |= (1 << CS01) | (1 << CS00); 1fc: 83 b7 in r24, 0x33 ; 51 1fe: 83 60 ori r24, 0x03 ; 3 200: 83 bf out 0x33, r24 ; 51 //Enable Overflow Interrupt Enable TIMSK|=(1< //extraopgave(); } 20e: fe cf rjmp .-4 ; 0x20c 00000210 <_exit>: 210: f8 94 cli 00000212 <__stop_program>: 212: ff cf rjmp .-2 ; 0x212 <__stop_program>