stk500_gcc_mega16.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000019e 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .stab 00000378 00000000 00000000 000001f4 2**2 CONTENTS, READONLY, DEBUGGING 2 .stabstr 00000071 00000000 00000000 0000056c 2**0 CONTENTS, READONLY, DEBUGGING 3 .debug_aranges 00000020 00000000 00000000 000005dd 2**0 CONTENTS, READONLY, DEBUGGING 4 .debug_pubnames 0000001b 00000000 00000000 000005fd 2**0 CONTENTS, READONLY, DEBUGGING 5 .debug_info 00000175 00000000 00000000 00000618 2**0 CONTENTS, READONLY, DEBUGGING 6 .debug_abbrev 00000045 00000000 00000000 0000078d 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_line 000001bb 00000000 00000000 000007d2 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_frame 00000020 00000000 00000000 00000990 2**2 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> 4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> 00000054 <__ctors_end>: 54: 11 24 eor r1, r1 56: 1f be out 0x3f, r1 ; 63 58: cf e5 ldi r28, 0x5F ; 95 5a: d4 e0 ldi r29, 0x04 ; 4 5c: de bf out 0x3e, r29 ; 62 5e: cd bf out 0x3d, r28 ; 61 00000060 <__do_copy_data>: 60: 10 e0 ldi r17, 0x00 ; 0 62: a0 e6 ldi r26, 0x60 ; 96 64: b0 e0 ldi r27, 0x00 ; 0 66: ee e9 ldi r30, 0x9E ; 158 68: f1 e0 ldi r31, 0x01 ; 1 6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start> 0000006c <.do_copy_data_loop>: 6c: 05 90 lpm r0, Z+ 6e: 0d 92 st X+, r0 00000070 <.do_copy_data_start>: 70: a0 36 cpi r26, 0x60 ; 96 72: b1 07 cpc r27, r17 74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop> 00000076 <__do_clear_bss>: 76: 10 e0 ldi r17, 0x00 ; 0 78: a0 e6 ldi r26, 0x60 ; 96 7a: b0 e0 ldi r27, 0x00 ; 0 7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start> 0000007e <.do_clear_bss_loop>: 7e: 1d 92 st X+, r1 00000080 <.do_clear_bss_start>: 80: a0 36 cpi r26, 0x60 ; 96 82: b1 07 cpc r27, r17 84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop> 86: 0e 94 49 00 call 0x92 ; 0x92
8a: 0c 94 ce 00 jmp 0x19c ; 0x19c <_exit> 0000008e <__bad_interrupt>: 8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 00000092
: * Parameter: nichts * zurück: nichts *********************************************************************************/ int main(void) { 92: cf 93 push r28 94: df 93 push r29 96: cd b7 in r28, 0x3d ; 61 98: de b7 in r29, 0x3e ; 62 9a: 23 97 sbiw r28, 0x03 ; 3 9c: 0f b6 in r0, 0x3f ; 63 9e: f8 94 cli a0: de bf out 0x3e, r29 ; 62 a2: 0f be out 0x3f, r0 ; 63 a4: cd bf out 0x3d, r28 ; 61 unsigned char Temp, Delay, Delay2; Temp=0xFF; a6: 8f ef ldi r24, 0xFF ; 255 a8: 8b 83 std Y+3, r24 ; 0x03 KEYPORTDIR=0x00; // TasterPort als Eingang aa: e1 e3 ldi r30, 0x31 ; 49 ac: f0 e0 ldi r31, 0x00 ; 0 ae: 10 82 st Z, r1 LEDPORTDIR=0xFF; // LEDPORT = Ausgang b0: e7 e3 ldi r30, 0x37 ; 55 b2: f0 e0 ldi r31, 0x00 ; 0 b4: 8f ef ldi r24, 0xFF ; 255 b6: 80 83 st Z, r24 LEDPORT=0x00; // Portwert = 0b 0000 0000 Alle LED's Ein!!! b8: e8 e3 ldi r30, 0x38 ; 56 ba: f0 e0 ldi r31, 0x00 ; 0 bc: 10 82 st Z, r1 while(1) { LEDPORT = Temp; // LED's aktualisieren be: e8 e3 ldi r30, 0x38 ; 56 c0: f0 e0 ldi r31, 0x00 ; 0 c2: 8b 81 ldd r24, Y+3 ; 0x03 c4: 80 83 st Z, r24 if (KEYPORT == 0b11111110) c6: e2 e3 ldi r30, 0x32 ; 50 c8: f0 e0 ldi r31, 0x00 ; 0 ca: 80 81 ld r24, Z cc: 8e 3f cpi r24, 0xFE ; 254 ce: 19 f4 brne .+6 ; 0xd6 Temp++ ; d0: 8b 81 ldd r24, Y+3 ; 0x03 d2: 8f 5f subi r24, 0xFF ; 255 d4: 8b 83 std Y+3, r24 ; 0x03 if (KEYPORT == 0b11111101) d6: e2 e3 ldi r30, 0x32 ; 50 d8: f0 e0 ldi r31, 0x00 ; 0 da: 80 81 ld r24, Z dc: 8d 3f cpi r24, 0xFD ; 253 de: 19 f4 brne .+6 ; 0xe6 Temp-- ; e0: 8b 81 ldd r24, Y+3 ; 0x03 e2: 81 50 subi r24, 0x01 ; 1 e4: 8b 83 std Y+3, r24 ; 0x03 if (KEYPORT == 0b11111011) e6: e2 e3 ldi r30, 0x32 ; 50 e8: f0 e0 ldi r31, 0x00 ; 0 ea: 80 81 ld r24, Z ec: 8b 3f cpi r24, 0xFB ; 251 ee: 81 f4 brne .+32 ; 0x110 { Temp = ((Temp>>1)& 0x7F) | ((Temp<<7)& 0x80 ); //rotieren rechts f0: 8b 81 ldd r24, Y+3 ; 0x03 f2: 86 95 lsr r24 f4: 28 2f mov r18, r24 f6: 2f 77 andi r18, 0x7F ; 127 f8: 8b 81 ldd r24, Y+3 ; 0x03 fa: 99 27 eor r25, r25 fc: 96 95 lsr r25 fe: 98 2f mov r25, r24 100: 88 27 eor r24, r24 102: 97 95 ror r25 104: 87 95 ror r24 106: 98 2f mov r25, r24 108: 80 e8 ldi r24, 0x80 ; 128 10a: 89 23 and r24, r25 10c: 82 2b or r24, r18 10e: 8b 83 std Y+3, r24 ; 0x03 } if (KEYPORT == 0b11110111) 110: e2 e3 ldi r30, 0x32 ; 50 112: f0 e0 ldi r31, 0x00 ; 0 114: 80 81 ld r24, Z 116: 87 3f cpi r24, 0xF7 ; 247 118: 71 f4 brne .+28 ; 0x136 { Temp = ((Temp<<1)& 0xFE) | ((Temp>>7)& 0x01 ); //rotieren links 11a: 8b 81 ldd r24, Y+3 ; 0x03 11c: 99 27 eor r25, r25 11e: 88 0f add r24, r24 120: 99 1f adc r25, r25 122: 98 2f mov r25, r24 124: 8e ef ldi r24, 0xFE ; 254 126: 98 23 and r25, r24 128: 8b 81 ldd r24, Y+3 ; 0x03 12a: 88 1f adc r24, r24 12c: 88 27 eor r24, r24 12e: 88 1f adc r24, r24 130: 81 70 andi r24, 0x01 ; 1 132: 89 2b or r24, r25 134: 8b 83 std Y+3, r24 ; 0x03 } if (KEYPORT == 0b11101111) 136: e2 e3 ldi r30, 0x32 ; 50 138: f0 e0 ldi r31, 0x00 ; 0 13a: 80 81 ld r24, Z 13c: 8f 3e cpi r24, 0xEF ; 239 13e: 19 f4 brne .+6 ; 0x146 Temp = ~Temp; //INVERTIEREN 140: 8b 81 ldd r24, Y+3 ; 0x03 142: 80 95 com r24 144: 8b 83 std Y+3, r24 ; 0x03 if (KEYPORT == 0b11011111) 146: e2 e3 ldi r30, 0x32 ; 50 148: f0 e0 ldi r31, 0x00 ; 0 14a: 80 81 ld r24, Z 14c: 8f 3d cpi r24, 0xDF ; 223 14e: 31 f4 brne .+12 ; 0x15c {Temp = ~Temp; //INVERTIEREN & 1 addieren 150: 8b 81 ldd r24, Y+3 ; 0x03 152: 80 95 com r24 154: 8b 83 std Y+3, r24 ; 0x03 Temp++; 156: 8b 81 ldd r24, Y+3 ; 0x03 158: 8f 5f subi r24, 0xFF ; 255 15a: 8b 83 std Y+3, r24 ; 0x03 } if (KEYPORT == 0b10111111) 15c: e2 e3 ldi r30, 0x32 ; 50 15e: f0 e0 ldi r31, 0x00 ; 0 160: 80 81 ld r24, Z 162: 8f 3b cpi r24, 0xBF ; 191 164: 71 f4 brne .+28 ; 0x182 Temp = (Temp<<4) | (Temp>>4); //SWAP 166: 8b 81 ldd r24, Y+3 ; 0x03 168: 99 27 eor r25, r25 16a: 82 95 swap r24 16c: 92 95 swap r25 16e: 90 7f andi r25, 0xF0 ; 240 170: 98 27 eor r25, r24 172: 80 7f andi r24, 0xF0 ; 240 174: 98 27 eor r25, r24 176: 98 2f mov r25, r24 178: 8b 81 ldd r24, Y+3 ; 0x03 17a: 82 95 swap r24 17c: 8f 70 andi r24, 0x0F ; 15 17e: 89 2b or r24, r25 180: 8b 83 std Y+3, r24 ; 0x03 do {Delay++; 182: 8a 81 ldd r24, Y+2 ; 0x02 184: 8f 5f subi r24, 0xFF ; 255 186: 8a 83 std Y+2, r24 ; 0x02 do Delay2++; 188: 89 81 ldd r24, Y+1 ; 0x01 18a: 8f 5f subi r24, 0xFF ; 255 18c: 89 83 std Y+1, r24 ; 0x01 while(Delay2 < 0xFF); 18e: 89 81 ldd r24, Y+1 ; 0x01 190: 8f 3f cpi r24, 0xFF ; 255 192: d1 f7 brne .-12 ; 0x188 } while(Delay < 0xFF); 194: 8a 81 ldd r24, Y+2 ; 0x02 196: 8f 3f cpi r24, 0xFF ; 255 198: a1 f7 brne .-24 ; 0x182 } 19a: 91 cf rjmp .-222 ; 0xbe 0000019c <_exit>: 19c: ff cf rjmp .-2 ; 0x19c <_exit>