diff --git a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo index faa55f4..56481e7 100644 Binary files a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo and b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo differ diff --git a/MIC-Week3/Debug/MIC-Week3.lss b/MIC-Week3/Debug/MIC-Week3.lss index 23a1c90..fd6496e 100644 --- a/MIC-Week3/Debug/MIC-Week3.lss +++ b/MIC-Week3/Debug/MIC-Week3.lss @@ -3,29 +3,31 @@ MIC-Week3.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800100 00800100 00000116 2**0 + 0 .data 00000500 00800100 0000039e 00000432 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000000c2 00000000 00000000 00000054 2**1 + 1 .text 0000039e 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .comment 00000030 00000000 00000000 00000116 2**0 + 2 .bss 00000008 00800600 00800600 00000932 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000932 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000148 2**2 + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000964 2**2 CONTENTS, READONLY - 4 .debug_aranges 00000030 00000000 00000000 00000184 2**0 + 5 .debug_aranges 00000098 00000000 00000000 000009a0 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_info 0000040a 00000000 00000000 000001b4 2**0 + 6 .debug_info 00000d95 00000000 00000000 00000a38 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_abbrev 000001fd 00000000 00000000 000005be 2**0 + 7 .debug_abbrev 00000450 00000000 00000000 000017cd 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 000001de 00000000 00000000 000007bb 2**0 + 8 .debug_line 000006a6 00000000 00000000 00001c1d 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_frame 00000044 00000000 00000000 0000099c 2**2 + 9 .debug_frame 00000178 00000000 00000000 000022c4 2**2 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 000001f2 00000000 00000000 000009e0 2**0 + 10 .debug_str 0000028d 00000000 00000000 0000243c 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_loc 00000027 00000000 00000000 00000bd2 2**0 + 11 .debug_loc 000004aa 00000000 00000000 000026c9 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_ranges 00000020 00000000 00000000 00000bf9 2**0 + 12 .debug_ranges 00000078 00000000 00000000 00002b73 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -33,73 +35,73 @@ Disassembly of section .text: 00000000 <__vectors>: 0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end> 2: 00 00 nop - 4: 58 c0 rjmp .+176 ; 0xb6 <__bad_interrupt> + 4: 60 c0 rjmp .+192 ; 0xc6 <__bad_interrupt> 6: 00 00 nop - 8: 56 c0 rjmp .+172 ; 0xb6 <__bad_interrupt> + 8: 5e c0 rjmp .+188 ; 0xc6 <__bad_interrupt> a: 00 00 nop - c: 54 c0 rjmp .+168 ; 0xb6 <__bad_interrupt> + c: 5c c0 rjmp .+184 ; 0xc6 <__bad_interrupt> e: 00 00 nop - 10: 52 c0 rjmp .+164 ; 0xb6 <__bad_interrupt> + 10: 5a c0 rjmp .+180 ; 0xc6 <__bad_interrupt> 12: 00 00 nop - 14: 50 c0 rjmp .+160 ; 0xb6 <__bad_interrupt> + 14: 58 c0 rjmp .+176 ; 0xc6 <__bad_interrupt> 16: 00 00 nop - 18: 4e c0 rjmp .+156 ; 0xb6 <__bad_interrupt> + 18: 56 c0 rjmp .+172 ; 0xc6 <__bad_interrupt> 1a: 00 00 nop - 1c: 4c c0 rjmp .+152 ; 0xb6 <__bad_interrupt> + 1c: 54 c0 rjmp .+168 ; 0xc6 <__bad_interrupt> 1e: 00 00 nop - 20: 4a c0 rjmp .+148 ; 0xb6 <__bad_interrupt> + 20: 52 c0 rjmp .+164 ; 0xc6 <__bad_interrupt> 22: 00 00 nop - 24: 48 c0 rjmp .+144 ; 0xb6 <__bad_interrupt> + 24: 50 c0 rjmp .+160 ; 0xc6 <__bad_interrupt> 26: 00 00 nop - 28: 46 c0 rjmp .+140 ; 0xb6 <__bad_interrupt> + 28: b3 c0 rjmp .+358 ; 0x190 <__vector_10> 2a: 00 00 nop - 2c: 44 c0 rjmp .+136 ; 0xb6 <__bad_interrupt> + 2c: 4c c0 rjmp .+152 ; 0xc6 <__bad_interrupt> 2e: 00 00 nop - 30: 42 c0 rjmp .+132 ; 0xb6 <__bad_interrupt> + 30: 4a c0 rjmp .+148 ; 0xc6 <__bad_interrupt> 32: 00 00 nop - 34: 40 c0 rjmp .+128 ; 0xb6 <__bad_interrupt> + 34: 48 c0 rjmp .+144 ; 0xc6 <__bad_interrupt> 36: 00 00 nop - 38: 3e c0 rjmp .+124 ; 0xb6 <__bad_interrupt> + 38: 46 c0 rjmp .+140 ; 0xc6 <__bad_interrupt> 3a: 00 00 nop - 3c: 3c c0 rjmp .+120 ; 0xb6 <__bad_interrupt> + 3c: 44 c0 rjmp .+136 ; 0xc6 <__bad_interrupt> 3e: 00 00 nop - 40: 3a c0 rjmp .+116 ; 0xb6 <__bad_interrupt> + 40: 42 c0 rjmp .+132 ; 0xc6 <__bad_interrupt> 42: 00 00 nop - 44: 38 c0 rjmp .+112 ; 0xb6 <__bad_interrupt> + 44: 40 c0 rjmp .+128 ; 0xc6 <__bad_interrupt> 46: 00 00 nop - 48: 36 c0 rjmp .+108 ; 0xb6 <__bad_interrupt> + 48: 3e c0 rjmp .+124 ; 0xc6 <__bad_interrupt> 4a: 00 00 nop - 4c: 34 c0 rjmp .+104 ; 0xb6 <__bad_interrupt> + 4c: 3c c0 rjmp .+120 ; 0xc6 <__bad_interrupt> 4e: 00 00 nop - 50: 32 c0 rjmp .+100 ; 0xb6 <__bad_interrupt> + 50: 3a c0 rjmp .+116 ; 0xc6 <__bad_interrupt> 52: 00 00 nop - 54: 30 c0 rjmp .+96 ; 0xb6 <__bad_interrupt> + 54: 38 c0 rjmp .+112 ; 0xc6 <__bad_interrupt> 56: 00 00 nop - 58: 2e c0 rjmp .+92 ; 0xb6 <__bad_interrupt> + 58: 36 c0 rjmp .+108 ; 0xc6 <__bad_interrupt> 5a: 00 00 nop - 5c: 2c c0 rjmp .+88 ; 0xb6 <__bad_interrupt> + 5c: 34 c0 rjmp .+104 ; 0xc6 <__bad_interrupt> 5e: 00 00 nop - 60: 2a c0 rjmp .+84 ; 0xb6 <__bad_interrupt> + 60: 32 c0 rjmp .+100 ; 0xc6 <__bad_interrupt> 62: 00 00 nop - 64: 28 c0 rjmp .+80 ; 0xb6 <__bad_interrupt> + 64: 30 c0 rjmp .+96 ; 0xc6 <__bad_interrupt> 66: 00 00 nop - 68: 26 c0 rjmp .+76 ; 0xb6 <__bad_interrupt> + 68: 2e c0 rjmp .+92 ; 0xc6 <__bad_interrupt> 6a: 00 00 nop - 6c: 24 c0 rjmp .+72 ; 0xb6 <__bad_interrupt> + 6c: 2c c0 rjmp .+88 ; 0xc6 <__bad_interrupt> 6e: 00 00 nop - 70: 22 c0 rjmp .+68 ; 0xb6 <__bad_interrupt> + 70: 2a c0 rjmp .+84 ; 0xc6 <__bad_interrupt> 72: 00 00 nop - 74: 20 c0 rjmp .+64 ; 0xb6 <__bad_interrupt> + 74: 28 c0 rjmp .+80 ; 0xc6 <__bad_interrupt> 76: 00 00 nop - 78: 1e c0 rjmp .+60 ; 0xb6 <__bad_interrupt> + 78: 26 c0 rjmp .+76 ; 0xc6 <__bad_interrupt> 7a: 00 00 nop - 7c: 1c c0 rjmp .+56 ; 0xb6 <__bad_interrupt> + 7c: 24 c0 rjmp .+72 ; 0xc6 <__bad_interrupt> 7e: 00 00 nop - 80: 1a c0 rjmp .+52 ; 0xb6 <__bad_interrupt> + 80: 22 c0 rjmp .+68 ; 0xc6 <__bad_interrupt> 82: 00 00 nop - 84: 18 c0 rjmp .+48 ; 0xb6 <__bad_interrupt> + 84: 20 c0 rjmp .+64 ; 0xc6 <__bad_interrupt> 86: 00 00 nop - 88: 16 c0 rjmp .+44 ; 0xb6 <__bad_interrupt> + 88: 1e c0 rjmp .+60 ; 0xc6 <__bad_interrupt> ... 0000008c <__ctors_end>: @@ -111,11 +113,11 @@ Disassembly of section .text: 96: cd bf out 0x3d, r28 ; 61 00000098 <__do_copy_data>: - 98: 11 e0 ldi r17, 0x01 ; 1 + 98: 16 e0 ldi r17, 0x06 ; 6 9a: a0 e0 ldi r26, 0x00 ; 0 9c: b1 e0 ldi r27, 0x01 ; 1 - 9e: e2 ec ldi r30, 0xC2 ; 194 - a0: f0 e0 ldi r31, 0x00 ; 0 + 9e: ee e9 ldi r30, 0x9E ; 158 + a0: f3 e0 ldi r31, 0x03 ; 3 a2: 00 e0 ldi r16, 0x00 ; 0 a4: 0b bf out 0x3b, r16 ; 59 a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14> @@ -124,25 +126,503 @@ Disassembly of section .text: ac: a0 30 cpi r26, 0x00 ; 0 ae: b1 07 cpc r27, r17 b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10> - b2: 02 d0 rcall .+4 ; 0xb8
- b4: 04 c0 rjmp .+8 ; 0xbe <_exit> -000000b6 <__bad_interrupt>: - b6: a4 cf rjmp .-184 ; 0x0 <__vectors> +000000b2 <__do_clear_bss>: + b2: 26 e0 ldi r18, 0x06 ; 6 + b4: a0 e0 ldi r26, 0x00 ; 0 + b6: b6 e0 ldi r27, 0x06 ; 6 + b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start> -000000b8
: - //opgave1(); +000000ba <.do_clear_bss_loop>: + ba: 1d 92 st X+, r1 - opgave2knop(); +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: 5b d1 rcall .+694 ; 0x37a
+ c4: 6a c1 rjmp .+724 ; 0x39a <_exit> - return 1; +000000c6 <__bad_interrupt>: + c6: 9c cf rjmp .-200 ; 0x0 <__vectors> + +000000c8 : + } + } + + void display_char( unsigned char dat ) + { + PORTC = dat & 0xF0; // hoge nibble + c8: 98 2f mov r25, r24 + ca: 90 7f andi r25, 0xF0 ; 240 + cc: 95 bb out 0x15, r25 ; 21 + PORTC = PORTC | 0x0C; // Enable on (EN = 1, RS=1), + ce: 95 b3 in r25, 0x15 ; 21 + d0: 9c 60 ori r25, 0x0C ; 12 + d2: 95 bb out 0x15, r25 ; 21 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + d4: ef e9 ldi r30, 0x9F ; 159 + d6: ff e0 ldi r31, 0x0F ; 15 + d8: 31 97 sbiw r30, 0x01 ; 1 + da: f1 f7 brne .-4 ; 0xd8 + dc: 00 c0 rjmp .+0 ; 0xde + de: 00 00 nop + _delay_ms(2); // wait 1 ms + PORTC = 0x04; // Enable off (EN = 0, RS = 1) + e0: 94 e0 ldi r25, 0x04 ; 4 + e2: 95 bb out 0x15, r25 ; 21 + e4: ef e9 ldi r30, 0x9F ; 159 + e6: ff e0 ldi r31, 0x0F ; 15 + e8: 31 97 sbiw r30, 0x01 ; 1 + ea: f1 f7 brne .-4 ; 0xe8 + ec: 00 c0 rjmp .+0 ; 0xee + ee: 00 00 nop + + _delay_ms(2); // wait 1 ms + + PORTC = (dat & 0x0F) << 4; // lage nibble + f0: f0 e1 ldi r31, 0x10 ; 16 + f2: 8f 9f mul r24, r31 + f4: c0 01 movw r24, r0 + f6: 11 24 eor r1, r1 + f8: 85 bb out 0x15, r24 ; 21 + PORTC = PORTC | 0x0C; // Enable on (RS=1), + fa: 85 b3 in r24, 0x15 ; 21 + fc: 8c 60 ori r24, 0x0C ; 12 + fe: 85 bb out 0x15, r24 ; 21 + 100: 8f e9 ldi r24, 0x9F ; 159 + 102: 9f e0 ldi r25, 0x0F ; 15 + 104: 01 97 sbiw r24, 0x01 ; 1 + 106: f1 f7 brne .-4 ; 0x104 + 108: 00 c0 rjmp .+0 ; 0x10a + 10a: 00 00 nop + // start (EN=1) + _delay_ms(2); // wait 1 ms + PORTC = 0x00; // stop + 10c: 15 ba out 0x15, r1 ; 21 + 10e: 08 95 ret + +00000110 : + // (EN=0 RS=0) + } + + void lcd_command ( unsigned char dat ) + { + PORTC = dat & 0xF0; // hoge nibble + 110: 98 2f mov r25, r24 + 112: 90 7f andi r25, 0xF0 ; 240 + 114: 95 bb out 0x15, r25 ; 21 + PORTC = PORTC | 0x08; // data (RS=0), + 116: ab 9a sbi 0x15, 3 ; 21 + 118: ef e9 ldi r30, 0x9F ; 159 + 11a: ff e0 ldi r31, 0x0F ; 15 + 11c: 31 97 sbiw r30, 0x01 ; 1 + 11e: f1 f7 brne .-4 ; 0x11c + 120: 00 c0 rjmp .+0 ; 0x122 + 122: 00 00 nop + // start (EN=1) + _delay_ms(2); // wait 1 ms + PORTC = 0x04; // stop (EN = 0) + 124: 94 e0 ldi r25, 0x04 ; 4 + 126: 95 bb out 0x15, r25 ; 21 + 128: ef e9 ldi r30, 0x9F ; 159 + 12a: ff e0 ldi r31, 0x0F ; 15 + 12c: 31 97 sbiw r30, 0x01 ; 1 + 12e: f1 f7 brne .-4 ; 0x12c + 130: 00 c0 rjmp .+0 ; 0x132 + 132: 00 00 nop + + _delay_ms(2); // wait 1 ms + + PORTC = (dat & 0x0F) << 4; // lage nibble + 134: f0 e1 ldi r31, 0x10 ; 16 + 136: 8f 9f mul r24, r31 + 138: c0 01 movw r24, r0 + 13a: 11 24 eor r1, r1 + 13c: 85 bb out 0x15, r24 ; 21 + PORTC = PORTC | 0x08; // data (RS=0), + 13e: ab 9a sbi 0x15, 3 ; 21 + 140: 8f e9 ldi r24, 0x9F ; 159 + 142: 9f e0 ldi r25, 0x0F ; 15 + 144: 01 97 sbiw r24, 0x01 ; 1 + 146: f1 f7 brne .-4 ; 0x144 + 148: 00 c0 rjmp .+0 ; 0x14a + 14a: 00 00 nop + // start (EN=1) + _delay_ms(2); // wait 1 ms + PORTC = 0x00; // stop + 14c: 15 ba out 0x15, r1 ; 21 + 14e: 08 95 ret + +00000150 : + + _delay_ms(100); + } + +void display_text( int line, char *text ) +{ + 150: cf 93 push r28 + 152: df 93 push r29 + 154: eb 01 movw r28, r22 + // eerst de eerste 8 karakters = regel 1 + + if(line) + 156: 89 2b or r24, r25 + 158: 19 f0 breq .+6 ; 0x160 + { + // eerste pos regel 1 + lcd_command(0xC0); + 15a: 80 ec ldi r24, 0xC0 ; 192 + 15c: d9 df rcall .-78 ; 0x110 + 15e: 02 c0 rjmp .+4 ; 0x164 + } + else + { + // regel 0 + lcd_command(0x80); + 160: 80 e8 ldi r24, 0x80 ; 128 + 162: d6 df rcall .-84 ; 0x110 + } + + int count = 0; + + while (text[count] != '\0') { + 164: 88 81 ld r24, Y + 166: 88 23 and r24, r24 + 168: 59 f0 breq .+22 ; 0x180 + 16a: 21 96 adiw r28, 0x01 ; 1 + display_char( text[count] ); + 16c: ad df rcall .-166 ; 0xc8 + 16e: 8f e9 ldi r24, 0x9F ; 159 + 170: 9f e0 ldi r25, 0x0F ; 15 + 172: 01 97 sbiw r24, 0x01 ; 1 + 174: f1 f7 brne .-4 ; 0x172 + 176: 00 c0 rjmp .+0 ; 0x178 + 178: 00 00 nop + lcd_command(0x80); + } + + int count = 0; + + while (text[count] != '\0') { + 17a: 89 91 ld r24, Y+ + 17c: 81 11 cpse r24, r1 + 17e: f6 cf rjmp .-20 ; 0x16c + display_char( text[count] ); + count++; + + _delay_ms(2); + } } - b8: 81 e0 ldi r24, 0x01 ; 1 - ba: 90 e0 ldi r25, 0x00 ; 0 - bc: 08 95 ret + 180: df 91 pop r29 + 182: cf 91 pop r28 + 184: 08 95 ret -000000be <_exit>: - be: f8 94 cli +00000186 : -000000c0 <__stop_program>: - c0: ff cf rjmp .-2 ; 0xc0 <__stop_program> +void clear_display() +{ + lcd_command(0b00000001); + 186: 81 e0 ldi r24, 0x01 ; 1 + 188: c3 df rcall .-122 ; 0x110 + lcd_command(0b10000000); + 18a: 80 e8 ldi r24, 0x80 ; 128 + 18c: c1 cf rjmp .-126 ; 0x110 + 18e: 08 95 ret + +00000190 <__vector_10>: + 190: 1f 92 push r1 + 192: 0f 92 push r0 + 194: 0f b6 in r0, 0x3f ; 63 + 196: 0f 92 push r0 + 198: 11 24 eor r1, r1 + 19a: 0b b6 in r0, 0x3b ; 59 + 19c: 0f 92 push r0 + 19e: 2f 93 push r18 + 1a0: 3f 93 push r19 + 1a2: 4f 93 push r20 + 1a4: 5f 93 push r21 + 1a6: 6f 93 push r22 + 1a8: 7f 93 push r23 + 1aa: 8f 93 push r24 + 1ac: 9f 93 push r25 + 1ae: af 93 push r26 + 1b0: bf 93 push r27 + 1b2: ef 93 push r30 + 1b4: ff 93 push r31 + 1b6: 80 91 06 06 lds r24, 0x0606 + 1ba: 90 91 07 06 lds r25, 0x0607 + 1be: 82 30 cpi r24, 0x02 ; 2 + 1c0: 91 05 cpc r25, r1 + 1c2: e9 f4 brne .+58 ; 0x1fe <__vector_10+0x6e> + 1c4: 14 bc out 0x24, r1 ; 36 + 1c6: 8f e0 ldi r24, 0x0F ; 15 + 1c8: 82 bb out 0x12, r24 ; 18 + 1ca: dd df rcall .-70 ; 0x186 + 1cc: 2f ef ldi r18, 0xFF ; 255 + 1ce: 80 e7 ldi r24, 0x70 ; 112 + 1d0: 92 e0 ldi r25, 0x02 ; 2 + 1d2: 21 50 subi r18, 0x01 ; 1 + 1d4: 80 40 sbci r24, 0x00 ; 0 + 1d6: 90 40 sbci r25, 0x00 ; 0 + 1d8: e1 f7 brne .-8 ; 0x1d2 <__vector_10+0x42> + 1da: 00 c0 rjmp .+0 ; 0x1dc <__vector_10+0x4c> + 1dc: 00 00 nop + 1de: 6a ee ldi r22, 0xEA ; 234 + 1e0: 75 e0 ldi r23, 0x05 ; 5 + 1e2: 81 e0 ldi r24, 0x01 ; 1 + 1e4: 90 e0 ldi r25, 0x00 ; 0 + 1e6: b4 df rcall .-152 ; 0x150 + 1e8: 2f ef ldi r18, 0xFF ; 255 + 1ea: 84 e3 ldi r24, 0x34 ; 52 + 1ec: 9c e0 ldi r25, 0x0C ; 12 + 1ee: 21 50 subi r18, 0x01 ; 1 + 1f0: 80 40 sbci r24, 0x00 ; 0 + 1f2: 90 40 sbci r25, 0x00 ; 0 + 1f4: e1 f7 brne .-8 ; 0x1ee <__vector_10+0x5e> + 1f6: 00 c0 rjmp .+0 ; 0x1f8 <__vector_10+0x68> + 1f8: 00 00 nop + 1fa: 12 ba out 0x12, r1 ; 18 + 1fc: 4c c0 rjmp .+152 ; 0x296 <__vector_10+0x106> + 1fe: 83 30 cpi r24, 0x03 ; 3 + 200: 91 05 cpc r25, r1 + 202: d1 f4 brne .+52 ; 0x238 <__vector_10+0xa8> + 204: 92 b3 in r25, 0x12 ; 18 + 206: 81 e0 ldi r24, 0x01 ; 1 + 208: 89 27 eor r24, r25 + 20a: 82 bb out 0x12, r24 ; 18 + 20c: 80 91 04 06 lds r24, 0x0604 + 210: 90 91 05 06 lds r25, 0x0605 + 214: 89 2b or r24, r25 + 216: 39 f0 breq .+14 ; 0x226 <__vector_10+0x96> + 218: 8a e8 ldi r24, 0x8A ; 138 + 21a: 84 bd out 0x24, r24 ; 36 + 21c: 10 92 05 06 sts 0x0605, r1 + 220: 10 92 04 06 sts 0x0604, r1 + 224: 38 c0 rjmp .+112 ; 0x296 <__vector_10+0x106> + 226: 8c e3 ldi r24, 0x3C ; 60 + 228: 84 bd out 0x24, r24 ; 36 + 22a: 81 e0 ldi r24, 0x01 ; 1 + 22c: 90 e0 ldi r25, 0x00 ; 0 + 22e: 90 93 05 06 sts 0x0605, r25 + 232: 80 93 04 06 sts 0x0604, r24 + 236: 2f c0 rjmp .+94 ; 0x296 <__vector_10+0x106> + 238: 04 97 sbiw r24, 0x04 ; 4 + 23a: 69 f5 brne .+90 ; 0x296 <__vector_10+0x106> + 23c: e0 91 00 06 lds r30, 0x0600 + 240: f0 91 01 06 lds r31, 0x0601 + 244: ee 0f add r30, r30 + 246: ff 1f adc r31, r31 + 248: ee 0f add r30, r30 + 24a: ff 1f adc r31, r31 + 24c: e0 50 subi r30, 0x00 ; 0 + 24e: ff 4f sbci r31, 0xFF ; 255 + 250: 80 81 ld r24, Z + 252: 91 81 ldd r25, Z+1 ; 0x01 + 254: 89 2b or r24, r25 + 256: 21 f0 breq .+8 ; 0x260 <__vector_10+0xd0> + 258: 92 b3 in r25, 0x12 ; 18 + 25a: 81 e0 ldi r24, 0x01 ; 1 + 25c: 89 27 eor r24, r25 + 25e: 82 bb out 0x12, r24 ; 18 + 260: e0 91 00 06 lds r30, 0x0600 + 264: f0 91 01 06 lds r31, 0x0601 + 268: ee 0f add r30, r30 + 26a: ff 1f adc r31, r31 + 26c: ee 0f add r30, r30 + 26e: ff 1f adc r31, r31 + 270: e0 50 subi r30, 0x00 ; 0 + 272: ff 4f sbci r31, 0xFF ; 255 + 274: 40 81 ld r20, Z + 276: 51 81 ldd r21, Z+1 ; 0x01 + 278: 9a 01 movw r18, r20 + 27a: a3 e9 ldi r26, 0x93 ; 147 + 27c: b4 e2 ldi r27, 0x24 ; 36 + 27e: 7e d0 rcall .+252 ; 0x37c <__umulhisi3> + 280: 48 1b sub r20, r24 + 282: 59 0b sbc r21, r25 + 284: 56 95 lsr r21 + 286: 47 95 ror r20 + 288: 84 0f add r24, r20 + 28a: 95 1f adc r25, r21 + 28c: 96 95 lsr r25 + 28e: 87 95 ror r24 + 290: 96 95 lsr r25 + 292: 87 95 ror r24 + 294: 84 bd out 0x24, r24 ; 36 + 296: ff 91 pop r31 + 298: ef 91 pop r30 + 29a: bf 91 pop r27 + 29c: af 91 pop r26 + 29e: 9f 91 pop r25 + 2a0: 8f 91 pop r24 + 2a2: 7f 91 pop r23 + 2a4: 6f 91 pop r22 + 2a6: 5f 91 pop r21 + 2a8: 4f 91 pop r20 + 2aa: 3f 91 pop r19 + 2ac: 2f 91 pop r18 + 2ae: 0f 90 pop r0 + 2b0: 0b be out 0x3b, r0 ; 59 + 2b2: 0f 90 pop r0 + 2b4: 0f be out 0x3f, r0 ; 63 + 2b6: 0f 90 pop r0 + 2b8: 1f 90 pop r1 + 2ba: 18 95 reti + +000002bc : + } +} + +void opgaveextra() +{ + opgave = 4; + 2bc: 84 e0 ldi r24, 0x04 ; 4 + 2be: 90 e0 ldi r25, 0x00 ; 0 + 2c0: 90 93 07 06 sts 0x0607, r25 + 2c4: 80 93 06 06 sts 0x0606, r24 + count = 0; + 2c8: 10 92 03 06 sts 0x0603, r1 + 2cc: 10 92 02 06 sts 0x0602, r1 + current = 0; + 2d0: 10 92 01 06 sts 0x0601, r1 + 2d4: 10 92 00 06 sts 0x0600, r1 + + DDRD = 0xFF; + 2d8: 8f ef ldi r24, 0xFF ; 255 + 2da: 81 bb out 0x11, r24 ; 17 + DDRB = 0xFF; + 2dc: 87 bb out 0x17, r24 ; 23 + + PORTB = 0x01110000; + 2de: 18 ba out 0x18, r1 ; 24 + 2e0: 2f ef ldi r18, 0xFF ; 255 + 2e2: 84 e3 ldi r24, 0x34 ; 52 + 2e4: 9c e0 ldi r25, 0x0C ; 12 + 2e6: 21 50 subi r18, 0x01 ; 1 + 2e8: 80 40 sbci r24, 0x00 ; 0 + 2ea: 90 40 sbci r25, 0x00 ; 0 + 2ec: e1 f7 brne .-8 ; 0x2e6 + 2ee: 00 c0 rjmp .+0 ; 0x2f0 + 2f0: 00 00 nop + + _delay_ms(500); + + PORTB = 0; + 2f2: 18 ba out 0x18, r1 ; 24 + + TCNT2 = 0; + 2f4: 14 bc out 0x24, r1 ; 36 + TCCR2 |= 0x03; + 2f6: 85 b5 in r24, 0x25 ; 37 + 2f8: 83 60 ori r24, 0x03 ; 3 + 2fa: 85 bd out 0x25, r24 ; 37 + TIMSK |= (1<<6); + 2fc: 87 b7 in r24, 0x37 ; 55 + 2fe: 80 64 ori r24, 0x40 ; 64 + 300: 87 bf out 0x37, r24 ; 55 + sei(); + 302: 78 94 sei + + while(1) + { + PORTB = 0x10000000; + 304: 18 ba out 0x18, r1 ; 24 + + if(count > ((mario[current].delay / 10)*8)) + 306: 40 91 00 06 lds r20, 0x0600 + 30a: 50 91 01 06 lds r21, 0x0601 + 30e: fa 01 movw r30, r20 + 310: ee 0f add r30, r30 + 312: ff 1f adc r31, r31 + 314: ee 0f add r30, r30 + 316: ff 1f adc r31, r31 + 318: e0 50 subi r30, 0x00 ; 0 + 31a: ff 4f sbci r31, 0xFF ; 255 + 31c: 22 81 ldd r18, Z+2 ; 0x02 + 31e: 33 81 ldd r19, Z+3 ; 0x03 + 320: ad ec ldi r26, 0xCD ; 205 + 322: bc ec ldi r27, 0xCC ; 204 + 324: 2b d0 rcall .+86 ; 0x37c <__umulhisi3> + 326: 88 7f andi r24, 0xF8 ; 248 + 328: 20 91 02 06 lds r18, 0x0602 + 32c: 30 91 03 06 lds r19, 0x0603 + 330: 82 17 cp r24, r18 + 332: 93 07 cpc r25, r19 + 334: 88 f4 brcc .+34 ; 0x358 + { + current++; + 336: 4f 5f subi r20, 0xFF ; 255 + 338: 5f 4f sbci r21, 0xFF ; 255 + 33a: 50 93 01 06 sts 0x0601, r21 + 33e: 40 93 00 06 sts 0x0600, r20 + + count = 0; + 342: 10 92 03 06 sts 0x0603, r1 + 346: 10 92 02 06 sts 0x0602, r1 + + if(current >= NELEMS(song)) + 34a: 48 31 cpi r20, 0x18 ; 24 + 34c: 51 05 cpc r21, r1 + 34e: 20 f0 brcs .+8 ; 0x358 + current = 0; + 350: 10 92 01 06 sts 0x0601, r1 + 354: 10 92 00 06 sts 0x0600, r1 + 358: 8f ec ldi r24, 0xCF ; 207 + 35a: 97 e0 ldi r25, 0x07 ; 7 + 35c: 01 97 sbiw r24, 0x01 ; 1 + 35e: f1 f7 brne .-4 ; 0x35c + 360: 00 c0 rjmp .+0 ; 0x362 + 362: 00 00 nop + } + + _delay_ms(1); + + PORTB = 0x00000000; + 364: 18 ba out 0x18, r1 ; 24 + + count++; + 366: 80 91 02 06 lds r24, 0x0602 + 36a: 90 91 03 06 lds r25, 0x0603 + 36e: 01 96 adiw r24, 0x01 ; 1 + 370: 90 93 03 06 sts 0x0603, r25 + 374: 80 93 02 06 sts 0x0602, r24 + } + 378: c5 cf rjmp .-118 ; 0x304 + +0000037a
: + + //opgave2knop(); + + //opgave3(); + + opgaveextra(); + 37a: a0 df rcall .-192 ; 0x2bc + +0000037c <__umulhisi3>: + 37c: a2 9f mul r26, r18 + 37e: b0 01 movw r22, r0 + 380: b3 9f mul r27, r19 + 382: c0 01 movw r24, r0 + 384: a3 9f mul r26, r19 + 386: 70 0d add r23, r0 + 388: 81 1d adc r24, r1 + 38a: 11 24 eor r1, r1 + 38c: 91 1d adc r25, r1 + 38e: b2 9f mul r27, r18 + 390: 70 0d add r23, r0 + 392: 81 1d adc r24, r1 + 394: 11 24 eor r1, r1 + 396: 91 1d adc r25, r1 + 398: 08 95 ret + +0000039a <_exit>: + 39a: f8 94 cli + +0000039c <__stop_program>: + 39c: ff cf rjmp .-2 ; 0x39c <__stop_program> diff --git a/MIC-Week3/Debug/MIC-Week3.map b/MIC-Week3/Debug/MIC-Week3.map index f787e2c..a83c9e3 100644 --- a/MIC-Week3/Debug/MIC-Week3.map +++ b/MIC-Week3/Debug/MIC-Week3.map @@ -6,10 +6,26 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o (exit) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + main.o (__umulhisi3) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodhi4.o) (__udivmodhi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(rand.o) main.o (rand) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + main.o (sprintf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) (vfprintf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen_P.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen_P) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (fputc) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(ultoa_invert.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (__ultoa_invert) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodsi4.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(rand.o) (__divmodsi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_negsi2.o) @@ -20,8 +36,6 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/.. c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(rand.o) (__mulohisi3) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodsi4.o) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodsi4.o) (__udivmodsi4) -c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_muluhisi3.o) (__umulhisi3) Discarded input sections @@ -30,35 +44,20 @@ Discarded input sections .text 0x00000000 0x0 lcd.o .data 0x00000000 0x0 lcd.o .bss 0x00000000 0x0 lcd.o - .text.display_char - 0x00000000 0x48 lcd.o - .text.lcd_command - 0x00000000 0x40 lcd.o - .text.init 0x00000000 0x90 lcd.o - .text.display_text - 0x00000000 0x3c lcd.o + .text.lcd_init + 0x00000000 0x8e lcd.o .text.set_cursor 0x00000000 0x8 lcd.o .text.shift_display 0x00000000 0x52 lcd.o - .debug_info 0x00000000 0x5c9 lcd.o - .debug_abbrev 0x00000000 0x1ac lcd.o - .debug_loc 0x00000000 0x2e1 lcd.o - .debug_aranges - 0x00000000 0x48 lcd.o - .debug_ranges 0x00000000 0x38 lcd.o - .debug_line 0x00000000 0x2c5 lcd.o - .debug_str 0x00000000 0x211 lcd.o - .comment 0x00000000 0x31 lcd.o - .debug_frame 0x00000000 0x9c lcd.o .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o - .rodata.str1.1 - 0x00000000 0xa main.o .text.opgave1 0x00000000 0xba main.o .text.opgave2knop - 0x00000000 0x2 main.o + 0x00000000 0x94 main.o + .text.opgave3 0x00000000 0x38 main.o + .data.song 0x00000000 0x60 main.o .data.pattern 0x00000000 0x5a main.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodhi4.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodhi4.o) @@ -108,6 +107,36 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) .text.libgcc.fixed 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodhi4.o) @@ -130,6 +159,39 @@ Discarded input sections .text.avr-libc 0x00000000 0xb4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(rand.o) .comment 0x00000000 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(rand.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + .text.avr-libc + 0x00000000 0x60 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + .comment 0x00000000 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(sprintf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + .text.avr-libc + 0x00000000 0x3f6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + .comment 0x00000000 0x2d c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen_P.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen_P.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen_P.o) + .text.avr-libc + 0x00000000 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen_P.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen.o) + .text.avr-libc + 0x00000000 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(strnlen.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + .text.avr-libc + 0x00000000 0x70 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + .comment 0x00000000 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(fputc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(ultoa_invert.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(ultoa_invert.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(ultoa_invert.o) + .text.avr-libc + 0x00000000 0xbc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr51\libc.a(ultoa_invert.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodsi4.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodsi4.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_divmodsi4.o) @@ -210,22 +272,6 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodsi4.o) .text.libgcc.fixed 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_udivmodsi4.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.mul - 0x00000000 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.div - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) - .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) Memory Configuration @@ -345,7 +391,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xc2 +.text 0x00000000 0x39e *(.vectors) .vectors 0x00000000 0x8c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o 0x00000000 __vector_default @@ -386,6 +432,8 @@ END GROUP *(.init4) .init4 0x00000098 0x1a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_copy_data.o) 0x00000098 __do_copy_data + .init4 0x000000b2 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_clear_bss.o) + 0x000000b2 __do_clear_bss *(.init4) *(.init5) *(.init5) @@ -396,54 +444,74 @@ END GROUP *(.init8) *(.init8) *(.init9) - .init9 0x000000b2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o + .init9 0x000000c2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o *(.init9) *(.text) - .text 0x000000b6 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o - 0x000000b6 __vector_22 - 0x000000b6 __vector_28 - 0x000000b6 __vector_1 - 0x000000b6 __vector_32 - 0x000000b6 __vector_34 - 0x000000b6 __vector_24 - 0x000000b6 __vector_12 - 0x000000b6 __bad_interrupt - 0x000000b6 __vector_6 - 0x000000b6 __vector_31 - 0x000000b6 __vector_3 - 0x000000b6 __vector_23 - 0x000000b6 __vector_30 - 0x000000b6 __vector_25 - 0x000000b6 __vector_11 - 0x000000b6 __vector_13 - 0x000000b6 __vector_17 - 0x000000b6 __vector_19 - 0x000000b6 __vector_7 - 0x000000b6 __vector_27 - 0x000000b6 __vector_5 - 0x000000b6 __vector_33 - 0x000000b6 __vector_4 - 0x000000b6 __vector_9 - 0x000000b6 __vector_2 - 0x000000b6 __vector_21 - 0x000000b6 __vector_15 - 0x000000b6 __vector_29 - 0x000000b6 __vector_8 - 0x000000b6 __vector_26 - 0x000000b6 __vector_14 - 0x000000b6 __vector_10 - 0x000000b6 __vector_16 - 0x000000b6 __vector_18 - 0x000000b6 __vector_20 - 0x000000b8 . = ALIGN (0x2) + .text 0x000000c6 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o + 0x000000c6 __vector_22 + 0x000000c6 __vector_28 + 0x000000c6 __vector_1 + 0x000000c6 __vector_32 + 0x000000c6 __vector_34 + 0x000000c6 __vector_24 + 0x000000c6 __vector_12 + 0x000000c6 __bad_interrupt + 0x000000c6 __vector_6 + 0x000000c6 __vector_31 + 0x000000c6 __vector_3 + 0x000000c6 __vector_23 + 0x000000c6 __vector_30 + 0x000000c6 __vector_25 + 0x000000c6 __vector_11 + 0x000000c6 __vector_13 + 0x000000c6 __vector_17 + 0x000000c6 __vector_19 + 0x000000c6 __vector_7 + 0x000000c6 __vector_27 + 0x000000c6 __vector_5 + 0x000000c6 __vector_33 + 0x000000c6 __vector_4 + 0x000000c6 __vector_9 + 0x000000c6 __vector_2 + 0x000000c6 __vector_21 + 0x000000c6 __vector_15 + 0x000000c6 __vector_29 + 0x000000c6 __vector_8 + 0x000000c6 __vector_26 + 0x000000c6 __vector_14 + 0x000000c6 __vector_16 + 0x000000c6 __vector_18 + 0x000000c6 __vector_20 + 0x000000c8 . = ALIGN (0x2) *(.text.*) - .text.main 0x000000b8 0x6 main.o - 0x000000b8 main - 0x000000be . = ALIGN (0x2) + .text.display_char + 0x000000c8 0x48 lcd.o + 0x000000c8 display_char + .text.lcd_command + 0x00000110 0x40 lcd.o + 0x00000110 lcd_command + .text.display_text + 0x00000150 0x36 lcd.o + 0x00000150 display_text + .text.clear_display + 0x00000186 0xa lcd.o + 0x00000186 clear_display + .text.__vector_10 + 0x00000190 0x12c main.o + 0x00000190 __vector_10 + .text.opgaveextra + 0x000002bc 0xbe main.o + 0x000002bc opgaveextra + .text.main 0x0000037a 0x2 main.o + 0x0000037a main + .text.libgcc.mul + 0x0000037c 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_umulhisi3.o) + 0x0000037c __umulhisi3 + 0x0000039a . = ALIGN (0x2) *(.fini9) - .fini9 0x000000be 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) - 0x000000be _exit - 0x000000be exit + .fini9 0x0000039a 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) + 0x0000039a _exit + 0x0000039a exit *(.fini9) *(.fini8) *(.fini8) @@ -462,36 +530,48 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000000be 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) + .fini0 0x0000039a 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_exit.o) *(.fini0) - 0x000000c2 _etext = . + 0x0000039e _etext = . -.data 0x00800100 0x0 load address 0x000000c2 +.data 0x00800100 0x500 load address 0x0000039e 0x00800100 PROVIDE (__data_start, .) *(.data) *(.data*) + .data.mario 0x00800100 0x4e0 main.o + 0x00800100 mario *(.rodata) *(.rodata*) + .rodata.str1.1 + 0x008005e0 0x20 main.o *(.gnu.linkonce.d*) - 0x00800100 . = ALIGN (0x2) - 0x00800100 _edata = . - 0x00800100 PROVIDE (__data_end, .) + 0x00800600 . = ALIGN (0x2) + 0x00800600 _edata = . + 0x00800600 PROVIDE (__data_end, .) -.bss 0x00800100 0x0 - 0x00800100 PROVIDE (__bss_start, .) +.bss 0x00800600 0x8 + 0x00800600 PROVIDE (__bss_start, .) *(.bss) *(.bss*) + .bss.current 0x00800600 0x2 main.o + 0x00800600 current + .bss.count 0x00800602 0x2 main.o + 0x00800602 count + .bss.flip 0x00800604 0x2 main.o + 0x00800604 flip + .bss.opgave 0x00800606 0x2 main.o + 0x00800606 opgave *(COMMON) - 0x00800100 PROVIDE (__bss_end, .) - 0x000000c2 __data_load_start = LOADADDR (.data) - 0x000000c2 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800608 PROVIDE (__bss_end, .) + 0x0000039e __data_load_start = LOADADDR (.data) + 0x0000089e __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800100 0x0 - 0x00800100 PROVIDE (__noinit_start, .) +.noinit 0x00800608 0x0 + 0x00800608 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800100 PROVIDE (__noinit_end, .) - 0x00800100 _end = . - 0x00800100 PROVIDE (__heap_start, .) + 0x00800608 PROVIDE (__noinit_end, .) + 0x00800608 _end = . + 0x00800608 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -532,8 +612,9 @@ END GROUP .comment 0x00000000 0x30 *(.comment) - .comment 0x00000000 0x30 main.o + .comment 0x00000000 0x30 lcd.o 0x31 (size before relaxing) + .comment 0x00000030 0x31 main.o .note.gnu.avr.deviceinfo 0x00000000 0x3c @@ -555,38 +636,47 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x30 +.debug_aranges 0x00000000 0x98 *(.debug_aranges) .debug_aranges - 0x00000000 0x30 main.o + 0x00000000 0x50 lcd.o + .debug_aranges + 0x00000050 0x48 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x40a +.debug_info 0x00000000 0xd95 *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0x40a main.o + .debug_info 0x00000000 0x5ff lcd.o + .debug_info 0x000005ff 0x796 main.o -.debug_abbrev 0x00000000 0x1fd +.debug_abbrev 0x00000000 0x450 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x1fd main.o + .debug_abbrev 0x00000000 0x1ac lcd.o + .debug_abbrev 0x000001ac 0x2a4 main.o -.debug_line 0x00000000 0x1de +.debug_line 0x00000000 0x6a6 *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x00000000 0x1de main.o + .debug_line 0x00000000 0x2df lcd.o + .debug_line 0x000002df 0x3c7 main.o -.debug_frame 0x00000000 0x44 +.debug_frame 0x00000000 0x178 *(.debug_frame) - .debug_frame 0x00000000 0x44 main.o + .debug_frame 0x00000000 0xac lcd.o + .debug_frame 0x000000ac 0xcc main.o -.debug_str 0x00000000 0x1f2 +.debug_str 0x00000000 0x28d *(.debug_str) - .debug_str 0x00000000 0x1f2 main.o - 0x230 (size before relaxing) + .debug_str 0x00000000 0x1e5 lcd.o + 0x223 (size before relaxing) + .debug_str 0x000001e5 0xa8 main.o + 0x2ad (size before relaxing) -.debug_loc 0x00000000 0x27 +.debug_loc 0x00000000 0x4aa *(.debug_loc) - .debug_loc 0x00000000 0x27 main.o + .debug_loc 0x00000000 0x2e1 lcd.o + .debug_loc 0x000002e1 0x1c9 main.o .debug_macinfo *(.debug_macinfo) @@ -606,9 +696,10 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x20 +.debug_ranges 0x00000000 0x78 *(.debug_ranges) - .debug_ranges 0x00000000 0x20 main.o + .debug_ranges 0x00000000 0x40 lcd.o + .debug_ranges 0x00000040 0x38 main.o .debug_macro *(.debug_macro) diff --git a/MIC-Week3/Debug/MIC-Week3.srec b/MIC-Week3/Debug/MIC-Week3.srec index 33ba4d1..10cc327 100644 --- a/MIC-Week3/Debug/MIC-Week3.srec +++ b/MIC-Week3/Debug/MIC-Week3.srec @@ -1,15 +1,140 @@ S01100004D49432D5765656B332E737265634E -S113000045C0000058C0000056C0000054C00000A5 -S113001052C0000050C000004EC000004CC00000A0 -S11300204AC0000048C0000046C0000044C00000B0 -S113003042C0000040C000003EC000003CC00000C0 -S11300403AC0000038C0000036C0000034C00000D0 -S113005032C0000030C000002EC000002CC00000E0 -S11300602AC0000028C0000026C0000024C00000F0 -S113007022C0000020C000001EC000001CC0000000 -S11300801AC0000018C0000016C0000011241FBED2 -S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E2ECF4 -S11300A0F0E000E00BBF02C007900D92A030B10752 -S11300B0D9F702D004C0A4CF81E090E00895F89469 -S10500C0FFCF6C +S113000045C0000060C000005EC000005CC000008D +S11300105AC0000058C0000056C0000054C0000080 +S113002052C0000050C00000B3C000004CC000002B +S11300304AC0000048C0000046C0000044C00000A0 +S113004042C0000040C000003EC000003CC00000B0 +S11300503AC0000038C0000036C0000034C00000C0 +S113006032C0000030C000002EC000002CC00000D0 +S11300702AC0000028C0000026C0000024C00000E0 +S113008022C0000020C000001EC0000011241FBEBA +S1130090CFEFD0E1DEBFCDBF16E0A0E0B1E0EEE9E6 +S11300A0F3E000E00BBF02C007900D92A030B1074F +S11300B0D9F726E0A0E0B6E001C01D92A830B2074F +S11300C0E1F75BD16AC19CCF982F907F95BB95B324 +S11300D09C6095BBEFE9FFE03197F1F700C00000A9 +S11300E094E095BBEFE9FFE03197F1F700C0000021 +S11300F0F0E18F9FC001112485BB85B38C6085BB63 +S11301008FE99FE00197F1F700C0000015BA089548 +S1130110982F907F95BBAB9AEFE9FFE03197F1F709 +S113012000C0000094E095BBEFE9FFE03197F1F7E0 +S113013000C00000F0E18F9FC001112485BBAB9A81 +S11301408FE99FE00197F1F700C0000015BA089508 +S1130150CF93DF93EB01892B19F080ECD9DF02C038 +S113016080E8D6DF8881882359F02196ADDF8FE9B6 +S11301709FE00197F1F700C0000089918111F6CF4B +S1130180DF91CF91089581E0C3DF80E8C1CF089566 +S11301901F920F920FB60F9211240BB60F922F934A +S11301A03F934F935F936F937F938F939F93AF93FB +S11301B0BF93EF93FF9380910606909107068230D8 +S11301C09105E9F414BC8FE082BBDDDF2FEF80E7FB +S11301D092E0215080409040E1F700C000006AEEB8 +S11301E075E081E090E0B4DF2FEF84E39CE02150E0 +S11301F080409040E1F700C0000012BA4CC0833048 +S11302009105D1F492B381E0892782BB80910406E1 +S113021090910506892B39F08AE884BD1092050671 +S11302201092040638C08CE384BD81E090E0909382 +S11302300506809304062FC0049769F5E091000633 +S1130240F0910106EE0FFF1FEE0FFF1FE050FF4F6E +S113025080819181892B21F092B381E0892782BB2F +S1130260E0910006F0910106EE0FFF1FEE0FFF1F55 +S1130270E050FF4F408151819A01A3E9B4E27ED05E +S1130280481B590B56954795840F951F969587954E +S11302909695879584BDFF91EF91BF91AF919F9102 +S11302A08F917F916F915F914F913F912F910F901B +S11302B00BBE0F900FBE0F901F90189584E090E036 +S11302C09093070680930606109203061092020686 +S11302D010920106109200068FEF81BB87BB18BAFB +S11302E02FEF84E39CE0215080409040E1F700C070 +S11302F0000018BA14BC85B5836085BD87B78064D7 +S113030087BF789418BA4091000650910106FA010B +S1130310EE0FFF1FEE0FFF1FE050FF4F22813381CE +S1130320ADECBCEC2BD0887F209102063091030603 +S11303308217930788F44F5F5F4F509301064093F1 +S1130340000610920306109202064831510520F06F +S113035010920106109200068FEC97E00197F1F7D6 +S113036000C0000018BA809102069091030601961D +S11303709093030680930206C5CFA0DFA29FB0012D +S1130380B39FC001A39F700D811D1124911DB29FC5 +S1110390700D811D1124911D0895F894FFCF66 +S113039E94026400000096009402640000002C0194 +S11303AE9402640000002C01FE016400000064004D +S11303BE9402640000002C01020364000000260273 +S11303CE7C01640000003F02FE0164000000C201D3 +S11303DE7C01640000009001400164000000F401FF +S11303EEB801640000002C01E001500000004A0135 +S11303FEC201640000009600AE01640000002C01EE +S113040E7C0164000000C800940250000000C80083 +S113041EF8023200000096005C03640000002C0118 +S113042EBC02500000009600F802320000005E018B +S113043E9402500000002C010802500000009600A7 +S113044E4402500000009600E00150000000F40148 +S113045EFE0164000000C2017C01640000009001F2 +S113046E400164000000F401B801640000002C0196 +S113047EE001500000004A01C20164000000960031 +S113048EAE01640000002C017C0164000000C80071 +S113049E940250000000C800F802320000009600DA +S11304AE5C03640000002C01BC02500000009600A6 +S11304BEF802320000005E019402500000002C018C +S11304CE08025000000096004402500000009600FE +S11304DEE00150000000F401F401640000002C015E +S11304EEF802640000006400D0026400000096006C +S11304FEA8026400000096006C02960000002C0115 +S113050E8A02960000002C017C0164000000960013 +S113051EAE01640000009600F401640000002C019A +S113052EAE01640000009600F40164000000640053 +S113053E3A0264000000DC00F401640000002C01A7 +S113054EF802640000006400D0026400000096000B +S113055EA8026400000096006C02960000002C01B4 +S113056E8A02C80000002C01FC03500000002C017C +S113057EFC03500000009600FC03500000002C0108 +S113058E7C01640000002C01F401640000002C01C5 +S113059EF802640000006400D002640000009600BB +S11305AEA8026400000096006C02960000002C0164 +S11305BE8A02960000002C017C0164000000960063 +S11305CEAE01640000009600F401640000002C01EA +S11305DEAE01640000009600F401640000006400A3 +S11305EE3A0264000000A401490264000000C20142 +S11305FE260264000000A401F401640000006801F6 +S113060E7C01640000002C01F401640000002C0144 +S113061EF401640000009600F401640000002C0153 +S113062EF401640000002C01F80264000000640070 +S113063ED002640000009600A80264000000960038 +S113064E6C02960000002C018A02960000002C0118 +S113065E7C01640000009600AE0164000000960068 +S113066EF401640000002C01AE0164000000960049 +S113067EF4016400000064003A0264000000DC002F +S113068EF401640000002C01F80264000000640010 +S113069ED002640000009600A802640000009600D8 +S11306AE6C02960000002C018A02C80000002C0186 +S11306BEFC03500000002C01FC03500000009600C7 +S11306CEFC03500000002C017C01640000002C018E +S11306DEF401640000002C01F802640000006400C0 +S11306EED002640000009600A80264000000960088 +S11306FE6C02960000002C018A02960000002C0168 +S113070E7C01640000009600AE01640000009600B7 +S113071EF401640000002C01AE0164000000960098 +S113072EF4016400000064003A0264000000A401B5 +S113073E490264000000C201260264000000A40104 +S113074EF4016400000068017C01640000002C01C7 +S113075EF401640000002C01F40164000000960012 +S113076EF401640000002C01F4013C00000096002A +S113077EF401500000002C01F4013C0000005E0165 +S113078EF4015000000096004402500000005E0187 +S113079E9402500000009600F401500000002C0159 +S11307AEAE015000000096007C015000000058027B +S11307BEF4013C0000009600F401500000002C01EE +S11307CEF4013C0000005E01F401500000009600AC +S11307DE44025000000096009402500000002602CD +S11307EE6603500000004501F80250000000580254 +S11307FEF4013C0000009600F401500000002C01AE +S113080EF4013C0000005E01F4015000000096006B +S113081E4402500000005E01940250000000960055 +S113082EF401500000002C01AE01500000009600AF +S113083E7C015000000058029402640000009600EF +S113084E9402640000002C019402640000002C0148 +S113085EFE016400000064009402640000002C0198 +S113086E02036400000026027C01640000003F02C3 +S113087E3A2D29207E20282D3A004F766572666C1B +S113088E6F77002564002D2D2D2D2D2D2D2D2D0052 S9030000FC diff --git a/MIC-Week3/Debug/main.d b/MIC-Week3/Debug/main.d index 3f39529..fddf5fc 100644 --- a/MIC-Week3/Debug/main.d +++ b/MIC-Week3/Debug/main.d @@ -13,6 +13,7 @@ main.d main.o: .././main.c \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stddef.h \ .././lcd.h @@ -45,6 +46,8 @@ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stddef.h: diff --git a/MIC-Week3/lcd.c b/MIC-Week3/lcd.c index f0fd235..dae1df7 100644 --- a/MIC-Week3/lcd.c +++ b/MIC-Week3/lcd.c @@ -16,7 +16,7 @@ void display_char(unsigned char dat); void lcd_command(unsigned char dat); - void init() + void lcd_init() { DDRC = 0b11111111; @@ -35,7 +35,7 @@ lcd_command( 0x06 ); // RAM address: 0, first position, line 1 _delay_ms(50); - lcd_command( 0x80 ); + clear_display(); _delay_ms(100); } @@ -61,10 +61,16 @@ void display_text( int line, char *text ) display_char( text[count] ); count++; - _delay_ms(1); + _delay_ms(2); } } +void clear_display() +{ + lcd_command(0b00000001); + lcd_command(0b10000000); +} + void set_cursor(int position) { position = position | (1<<7); @@ -78,7 +84,7 @@ void display_text( int line, char *text ) for (int i=0; i #include +#include #include #include "lcd.h" @@ -30,18 +32,27 @@ PATTERN_STRUCT pattern[] = { {"Kenneth"}, {"Janco"}, {"Arthur"}, {"Martijn"}, {"Mauro"}, {"Rene"}, {"Remco"}, {"Jannick"}, {"Tim"} }; +int opgave = 0; +int flip = 0; +int count = 0; +int current = 0; + int main(void) { //opgave1(); - opgave2knop(); + //opgave2knop(); + + //opgave3(); + + opgaveextra(); return 1; } void opgave1() { - init(); + lcd_init(); srand(14152); @@ -71,7 +82,494 @@ void opgave1() } } +typedef struct { + unsigned int frequency; + unsigned int delay; +} NOTES; + +NOTES song[] = { + {10, 250},{20, 250},{30, 250},{40, 250},{50, 250},{60, 250},{70, 250},{80, 250},{90, 250},{100, 250}, + {110, 250},{120, 250},{130, 250},{140, 250},{150, 250},{160, 250},{170, 250},{180, 250},{190, 250},{200, 250}, + {210, 250},{220, 250},{230, 250},{240, 250} +}; + +NOTES mario[] = { +{660, 100}, +{0, 150}, +{660, 100}, +{0, 300}, +{660, 100}, +{0, 300}, +{510, 100}, +{0, 100}, +{660, 100}, +{0, 300}, +{770, 100}, +{0, 550}, +{380, 100}, +{0, 575}, + +{510, 100}, +{0, 450}, +{380, 100}, +{0, 400}, +{320, 100}, +{0, 500}, +{440, 100}, +{0, 300}, +{480, 80}, +{0, 330}, +{450, 100}, +{0, 150}, +{430, 100}, +{0, 300}, +{380, 100}, +{0, 200}, +{660, 80}, +{0, 200}, +{760, 50}, +{0, 150}, +{860, 100}, +{0, 300}, +{700, 80}, +{0, 150}, +{760, 50}, +{0, 350}, +{660, 80}, +{0, 300}, +{520, 80}, +{0, 150}, +{580, 80}, +{0, 150}, +{480, 80}, +{0, 500}, + +{510, 100}, +{0, 450}, +{380, 100}, +{0, 400}, +{320, 100}, +{0, 500}, +{440, 100}, +{0, 300}, +{480, 80}, +{0, 330}, +{450, 100}, +{0, 150}, +{430, 100}, +{0, 300}, +{380, 100}, +{0, 200}, +{660, 80}, +{0, 200}, +{760, 50}, +{0, 150}, +{860, 100}, +{0, 300}, +{700, 80}, +{0, 150}, +{760, 50}, +{0, 350}, +{660, 80}, +{0, 300}, +{520, 80}, +{0, 150}, +{580, 80}, +{0, 150}, +{480, 80}, +{0, 500}, + +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 150}, +{0, 300}, +{380, 100}, +{0, 150}, +{430, 100}, +{0, 150}, + +{500, 100}, +{0, 300}, +{430, 100}, +{0, 150}, +{500, 100}, +{0, 100}, +{570, 100}, +{0, 220}, + +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 200}, +{0, 300}, + +{1020, 80}, +{0, 300}, +{1020, 80}, +{0, 150}, +{1020, 80}, +{0, 300}, + +{380, 100}, +{0, 300}, +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 150}, +{0, 300}, +{380, 100}, +{0, 150}, +{430, 100}, +{0, 150}, + +{500, 100}, +{0, 300}, +{430, 100}, +{0, 150}, +{500, 100}, +{0, 100}, +{570, 100}, +{0, 420}, + +{585, 100}, +{0, 450}, + +{550, 100}, +{0, 420}, + +{500, 100}, +{0, 360}, + +{380, 100}, +{0, 300}, +{500, 100}, +{0, 300}, +{500, 100}, +{0, 150}, +{500, 100}, +{0, 300}, + +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 150}, +{0, 300}, +{380, 100}, +{0, 150}, +{430, 100}, +{0, 150}, + +{500, 100}, +{0, 300}, +{430, 100}, +{0, 150}, +{500, 100}, +{0, 100}, +{570, 100}, +{0, 220}, + +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 200}, +{0, 300}, + +{1020, 80}, +{0, 300}, +{1020, 80}, +{0, 150}, +{1020, 80}, +{0, 300}, + +{380, 100}, +{0, 300}, +{500, 100}, +{0, 300}, + +{760, 100}, +{0, 100}, +{720, 100}, +{0, 150}, +{680, 100}, +{0, 150}, +{620, 150}, +{0, 300}, + +{650, 150}, +{0, 300}, +{380, 100}, +{0, 150}, +{430, 100}, +{0, 150}, + +{500, 100}, +{0, 300}, +{430, 100}, +{0, 150}, +{500, 100}, +{0, 100}, +{570, 100}, +{0, 420}, + +{585, 100}, +{0, 450}, + +{550, 100}, +{0, 420}, + +{500, 100}, +{0, 360}, + +{380, 100}, +{0, 300}, +{500, 100}, +{0, 300}, +{500, 100}, +{0, 150}, +{500, 100}, +{0, 300}, + +{500, 60}, +{0, 150}, +{500, 80}, +{0, 300}, +{500, 60}, +{0, 350}, +{500, 80}, +{0, 150}, +{580, 80}, +{0, 350}, +{660, 80}, +{0, 150}, +{500, 80}, +{0, 300}, +{430, 80}, +{0, 150}, +{380, 80}, +{0, 600}, + +{500, 60}, +{0, 150}, +{500, 80}, +{0, 300}, +{500, 60}, +{0, 350}, +{500, 80}, +{0, 150}, +{580, 80}, +{0, 150}, +{660, 80}, +{0, 550}, + +{870, 80}, +{0, 325}, +{760, 80}, +{0, 600}, + +{500, 60}, +{0, 150}, +{500, 80}, +{0, 300}, +{500, 60}, +{0, 350}, +{500, 80}, +{0, 150}, +{580, 80}, +{0, 350}, +{660, 80}, +{0, 150}, +{500, 80}, +{0, 300}, +{430, 80}, +{0, 150}, +{380, 80}, +{0, 600}, + +{660, 100}, +{0, 150}, +{660, 100}, +{0, 300}, +{660, 100}, +{0, 300}, +{510, 100}, +{0, 100}, +{660, 100}, +{0, 300}, +{770, 100}, +{0, 550}, +{380, 100}, +{0, 575} +}; + +ISR(TIMER2_OVF_vect) +{ + if(opgave == 2) + { + TCNT2 = 0; + PORTD = 0x0F; + + clear_display(); + + _delay_ms(100); + + display_text(1, "Overflow"); + + _delay_ms(500); + + PORTD = 0x00; + } + else if(opgave == 3) + { + PORTD ^= 0x01; + + if(flip) + { + TCNT2 = 255 - 117; + flip = 0; + } + else + { + TCNT2 = 255 - 195; + flip = 1; + } + } + else if(opgave == 4) + { + if(mario[current].frequency != 0) + PORTD ^= 0x01; + + TCNT2 = (mario[current].frequency / 7); + } +} + void opgave2knop() { + opgave = 2; + lcd_init(); + + DDRD = 0x0F; + + TCNT2 = 245; + TCCR2 |= 0x06; + TIMSK |= (1<<6); + sei(); + + char str[15]; + + while(1) + { + sprintf(str, "%d", TCNT2); + + display_text(0, str); + display_text(1, "---------"); + + _delay_ms(1000); + } +} + +void opgave3() +{ + opgave = 3; + flip = 0; + + DDRD = 0xFF; + + TCNT2 = 255 - 117; + TCCR2 |= 0x05; + TIMSK |= (1<<6); + sei(); + + while(1) + { + _delay_ms(10); + } +} + +void opgaveextra() +{ + opgave = 4; + count = 0; + current = 0; + + DDRD = 0xFF; + DDRB = 0xFF; + + PORTB = 0x01110000; + + _delay_ms(500); + + PORTB = 0; + + TCNT2 = 0; + TCCR2 |= 0x03; + TIMSK |= (1<<6); + sei(); + + while(1) + { + PORTB = 0x10000000; + + if(count > ((mario[current].delay / 10)*8)) + { + current++; + + count = 0; + + if(current >= NELEMS(song)) + current = 0; + } + + _delay_ms(1); + + PORTB = 0x00000000; + + count++; + } } \ No newline at end of file