From a349cc58dfc2680c19d10b73041c9d09c9fc13c0 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 23 Feb 2016 12:49:46 +0100 Subject: [PATCH] Added display stuff --- MIC-Week1/.vs/MIC-Week1/v14/.atsuo | Bin 26624 -> 25088 bytes MIC-Week3/Debug/MIC-Week3.lss | 619 ++++++++++++++++++++++++++--- MIC-Week3/Debug/MIC-Week3.map | 317 +++++++++++---- MIC-Week3/Debug/MIC-Week3.srec | 72 +++- MIC-Week3/Debug/main.d | 17 +- MIC-Week3/MIC-Week3.cproj | 6 +- MIC-Week3/main.c | 109 ++++- 7 files changed, 987 insertions(+), 153 deletions(-) diff --git a/MIC-Week1/.vs/MIC-Week1/v14/.atsuo b/MIC-Week1/.vs/MIC-Week1/v14/.atsuo index ee1d2d3724a2a8c706e751b7dfc2e9b20e83bb93..d03abeb22dde68020350dfdc61cd3eeb97408c5a 100644 GIT binary patch delta 1477 zcmbVMUr1A76#u^4-Mn*m^H1iVrZlbQ(k(M8Oe$?oP&ZozLVui0mq=x1cFAVc+=eJLi1gch2uS_jhk- zf`{Jlp?1Oe^3v>tt>ZmUWsHT^L66YGdtqMNrwL%-9(1pIurmX#rTB=(XBlHgL?$8y zu^N$vNJm%^Ify8DrHcGDXl+6iA&L=p1SKhn&soYVse)hkiD9AL_|0J%EdC3dq}z4_ zo>N&+Wy+<;S&G}qIBO9xcJNBd;yG|ws@k|2V}Ig7jJF`7j}BDu;p9#(dC_Y^Ku}+1 zrE-Zlg9~R7=MY^8T04(3eAMU4DmUU4&ZvR$Y8&r_Kt>-w4fApz?|^{8BNIEi3GD)& zvO#kS9T67Sdn9V(&+tWb3Y2c+2Lbl$&Hqn}M`1qABkM4o+9)a;P8A`T?lQ1ETreZl z!Z24f4kN2CuaLgUB~u1fF;qh7vU<3IlQ8HpsRgL=Lar6enRgAGf~2Tl7Bk<%h-r6t zL(TFXxx&M?5e-|1$B3l19E~YGe7Dufsvr~71xwsAiIsG&#$m1`7g8+>j0mL=+JS_! z-^n6wAPuRTG~3bXR~GZ?xKdU6TnMK-musUEEOK$|SOo~Vj^&!LpUW%n!CJR0VEOC> zKG0>lwz8Ysf4{k$j~QDu_=f`q8hqe0>!8<{rG(5$91RJ+)E36(tU5`_qmdXC17OHM8^hMwBI3cGku|k4}HG%yidZIw>7?-TK%s?z^dZ z@#*1p$F$5<<#4&eKA9Q{V}VX0s*g#4k%R$+M8vK%T+~+V|nHj0krk!RdFo!?(M(#$HTi|PzNAVpr3&~TcJo-Wj3~UWv z(EB2AwZRDUHC}A5bAUU`x8U!>aHAmVNFX$vv8{u?&3M%Tc-ma8v^QQBB1Z&ewn@Xy zBv*Bq&>+cEY*jo6d)y|H5(BS$mvm^HB!$i$cNx4qY6V`O{m-@!AFJd#j;H8zwhfx| Str}-*OP~#g{Mq;n&i()fH0P`U delta 1647 zcmbtUUrbwN6z_L?TQ2Qw>F8Fdl-eO%7=Oww8-m2ePPzu$&9*F3*anu32j`G6C`g&f zZhUbXUF4pJCHi9ex`#RXZj3B3SxAP9$@Z`Z6O;L-FC%d?+5DYrFKL24`8B_O-}#+$ z&%f{7tKSj&miTs7@@{2rEr;iR63sT7Egqy*X;sY7wscBq0PzBgat-Z{DF{s7}xWTaR3bx(lJ*&UV_XWkX;&g$8P z-3{~r&)0HI4i776Qhwt=2Tq3oF1!oS0De4*y%*>Ne4O0vLWfv)%?pLQ!og_8J=pO9 zgt;ogq=iLrMPR9_qlfO0ctP9ljLP0QVcxmT&IJhfZM3Sstwd^gahbN&t74v(JQ96|eB8LU%NyYtH zbuX0Gq_ZoPhm7xn7iDv=35n{*k`=wXPS7uJm1s@#lUGaA_2~slYhKDXv{5`3r$WOF zaMtjSDC}aV9_uPU5k`1pSLr;?JEqmr_oa6gSScRN3YFi`+L1#+R;D&wvDwSoF@nCb z(w-I`!5!w0#7-zC6nffn*CY6y=Pp<}=MaQH9P})dQn{V=H9E6}T_;otoUev=^2gvD zo@q(RT+&XvL+O74wA31NfKJs6z)p4rXg#6Ufv;^NJ!uV*FLK1Jk-s2Twxsu?$jCK& zxlJk$$>kw+{Z+RReI)w*_>T-sQFz)%*9R8phh(%89l7r)$DKx2cXi@r++B+c7Vb<)sq{i=J~=uvkeKNzCNIyWi$@0Y z$-%`B^V)^s@#Qxc^Yqu4ZXdtrLWHCA{TYp-lF#UsNiJ-X(x#Cf)7J}e@&Dt%5hb: 0: 45 c0 rjmp .+138 ; 0x8c <__ctors_end> 2: 00 00 nop - 4: 4b c0 rjmp .+150 ; 0x9c <__bad_interrupt> + 4: 58 c0 rjmp .+176 ; 0xb6 <__bad_interrupt> 6: 00 00 nop - 8: 49 c0 rjmp .+146 ; 0x9c <__bad_interrupt> + 8: 56 c0 rjmp .+172 ; 0xb6 <__bad_interrupt> a: 00 00 nop - c: 47 c0 rjmp .+142 ; 0x9c <__bad_interrupt> + c: 54 c0 rjmp .+168 ; 0xb6 <__bad_interrupt> e: 00 00 nop - 10: 45 c0 rjmp .+138 ; 0x9c <__bad_interrupt> + 10: 52 c0 rjmp .+164 ; 0xb6 <__bad_interrupt> 12: 00 00 nop - 14: 43 c0 rjmp .+134 ; 0x9c <__bad_interrupt> + 14: 50 c0 rjmp .+160 ; 0xb6 <__bad_interrupt> 16: 00 00 nop - 18: 41 c0 rjmp .+130 ; 0x9c <__bad_interrupt> + 18: 4e c0 rjmp .+156 ; 0xb6 <__bad_interrupt> 1a: 00 00 nop - 1c: 3f c0 rjmp .+126 ; 0x9c <__bad_interrupt> + 1c: 4c c0 rjmp .+152 ; 0xb6 <__bad_interrupt> 1e: 00 00 nop - 20: 3d c0 rjmp .+122 ; 0x9c <__bad_interrupt> + 20: 4a c0 rjmp .+148 ; 0xb6 <__bad_interrupt> 22: 00 00 nop - 24: 3b c0 rjmp .+118 ; 0x9c <__bad_interrupt> + 24: 48 c0 rjmp .+144 ; 0xb6 <__bad_interrupt> 26: 00 00 nop - 28: 39 c0 rjmp .+114 ; 0x9c <__bad_interrupt> + 28: 46 c0 rjmp .+140 ; 0xb6 <__bad_interrupt> 2a: 00 00 nop - 2c: 37 c0 rjmp .+110 ; 0x9c <__bad_interrupt> + 2c: 44 c0 rjmp .+136 ; 0xb6 <__bad_interrupt> 2e: 00 00 nop - 30: 35 c0 rjmp .+106 ; 0x9c <__bad_interrupt> + 30: 42 c0 rjmp .+132 ; 0xb6 <__bad_interrupt> 32: 00 00 nop - 34: 33 c0 rjmp .+102 ; 0x9c <__bad_interrupt> + 34: 40 c0 rjmp .+128 ; 0xb6 <__bad_interrupt> 36: 00 00 nop - 38: 31 c0 rjmp .+98 ; 0x9c <__bad_interrupt> + 38: 3e c0 rjmp .+124 ; 0xb6 <__bad_interrupt> 3a: 00 00 nop - 3c: 2f c0 rjmp .+94 ; 0x9c <__bad_interrupt> + 3c: 3c c0 rjmp .+120 ; 0xb6 <__bad_interrupt> 3e: 00 00 nop - 40: 2d c0 rjmp .+90 ; 0x9c <__bad_interrupt> + 40: 3a c0 rjmp .+116 ; 0xb6 <__bad_interrupt> 42: 00 00 nop - 44: 2b c0 rjmp .+86 ; 0x9c <__bad_interrupt> + 44: 38 c0 rjmp .+112 ; 0xb6 <__bad_interrupt> 46: 00 00 nop - 48: 29 c0 rjmp .+82 ; 0x9c <__bad_interrupt> + 48: 36 c0 rjmp .+108 ; 0xb6 <__bad_interrupt> 4a: 00 00 nop - 4c: 27 c0 rjmp .+78 ; 0x9c <__bad_interrupt> + 4c: 34 c0 rjmp .+104 ; 0xb6 <__bad_interrupt> 4e: 00 00 nop - 50: 25 c0 rjmp .+74 ; 0x9c <__bad_interrupt> + 50: 32 c0 rjmp .+100 ; 0xb6 <__bad_interrupt> 52: 00 00 nop - 54: 23 c0 rjmp .+70 ; 0x9c <__bad_interrupt> + 54: 30 c0 rjmp .+96 ; 0xb6 <__bad_interrupt> 56: 00 00 nop - 58: 21 c0 rjmp .+66 ; 0x9c <__bad_interrupt> + 58: 2e c0 rjmp .+92 ; 0xb6 <__bad_interrupt> 5a: 00 00 nop - 5c: 1f c0 rjmp .+62 ; 0x9c <__bad_interrupt> + 5c: 2c c0 rjmp .+88 ; 0xb6 <__bad_interrupt> 5e: 00 00 nop - 60: 1d c0 rjmp .+58 ; 0x9c <__bad_interrupt> + 60: 2a c0 rjmp .+84 ; 0xb6 <__bad_interrupt> 62: 00 00 nop - 64: 1b c0 rjmp .+54 ; 0x9c <__bad_interrupt> + 64: 28 c0 rjmp .+80 ; 0xb6 <__bad_interrupt> 66: 00 00 nop - 68: 19 c0 rjmp .+50 ; 0x9c <__bad_interrupt> + 68: 26 c0 rjmp .+76 ; 0xb6 <__bad_interrupt> 6a: 00 00 nop - 6c: 17 c0 rjmp .+46 ; 0x9c <__bad_interrupt> + 6c: 24 c0 rjmp .+72 ; 0xb6 <__bad_interrupt> 6e: 00 00 nop - 70: 15 c0 rjmp .+42 ; 0x9c <__bad_interrupt> + 70: 22 c0 rjmp .+68 ; 0xb6 <__bad_interrupt> 72: 00 00 nop - 74: 13 c0 rjmp .+38 ; 0x9c <__bad_interrupt> + 74: 20 c0 rjmp .+64 ; 0xb6 <__bad_interrupt> 76: 00 00 nop - 78: 11 c0 rjmp .+34 ; 0x9c <__bad_interrupt> + 78: 1e c0 rjmp .+60 ; 0xb6 <__bad_interrupt> 7a: 00 00 nop - 7c: 0f c0 rjmp .+30 ; 0x9c <__bad_interrupt> + 7c: 1c c0 rjmp .+56 ; 0xb6 <__bad_interrupt> 7e: 00 00 nop - 80: 0d c0 rjmp .+26 ; 0x9c <__bad_interrupt> + 80: 1a c0 rjmp .+52 ; 0xb6 <__bad_interrupt> 82: 00 00 nop - 84: 0b c0 rjmp .+22 ; 0x9c <__bad_interrupt> + 84: 18 c0 rjmp .+48 ; 0xb6 <__bad_interrupt> 86: 00 00 nop - 88: 09 c0 rjmp .+18 ; 0x9c <__bad_interrupt> + 88: 16 c0 rjmp .+44 ; 0xb6 <__bad_interrupt> ... 0000008c <__ctors_end>: @@ -107,23 +109,522 @@ Disassembly of section .text: 92: d0 e1 ldi r29, 0x10 ; 16 94: de bf out 0x3e, r29 ; 62 96: cd bf out 0x3d, r28 ; 61 - 98: 02 d0 rcall .+4 ; 0x9e
- 9a: 02 c0 rjmp .+4 ; 0xa0 <_exit> -0000009c <__bad_interrupt>: - 9c: b1 cf rjmp .-158 ; 0x0 <__vectors> +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 e6 ldi r30, 0x64 ; 100 + 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> + a8: 07 90 elpm r0, Z+ + aa: 0d 92 st X+, r0 + ac: a4 35 cpi r26, 0x54 ; 84 + ae: b1 07 cpc r27, r17 + b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10> + b2: a3 d0 rcall .+326 ; 0x1fa
+ b4: 55 c1 rjmp .+682 ; 0x360 <_exit> + +000000b6 <__bad_interrupt>: + b6: a4 cf rjmp .-184 ; 0x0 <__vectors> + +000000b8 : + lcd_command( 0x80 ); +} + +void lcd_writeChar( unsigned char dat ) +{ + PORTC = dat & 0xF0; // hoge nibble + b8: 98 2f mov r25, r24 + ba: 90 7f andi r25, 0xF0 ; 240 + bc: 95 bb out 0x15, r25 ; 21 + PORTC = PORTC | 0x0C; // Enable on (EN = 1, RS=1), + be: 95 b3 in r25, 0x15 ; 21 + c0: 9c 60 ori r25, 0x0C ; 12 + c2: 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); + c4: ef ec ldi r30, 0xCF ; 207 + c6: f7 e0 ldi r31, 0x07 ; 7 + c8: 31 97 sbiw r30, 0x01 ; 1 + ca: f1 f7 brne .-4 ; 0xc8 + cc: 00 c0 rjmp .+0 ; 0xce + ce: 00 00 nop + _delay_ms(1); // wait 1 ms + PORTC = 0x04; // Enable off (EN = 0, RS = 1) + d0: 94 e0 ldi r25, 0x04 ; 4 + d2: 95 bb out 0x15, r25 ; 21 + + PORTC = (dat & 0x0F) << 4; // lage nibble + d4: f0 e1 ldi r31, 0x10 ; 16 + d6: 8f 9f mul r24, r31 + d8: c0 01 movw r24, r0 + da: 11 24 eor r1, r1 + dc: 85 bb out 0x15, r24 ; 21 + PORTC = PORTC | 0x0C; // Enable on (RS=1), + de: 85 b3 in r24, 0x15 ; 21 + e0: 8c 60 ori r24, 0x0C ; 12 + e2: 85 bb out 0x15, r24 ; 21 + e4: 8f ec ldi r24, 0xCF ; 207 + e6: 97 e0 ldi r25, 0x07 ; 7 + e8: 01 97 sbiw r24, 0x01 ; 1 + ea: f1 f7 brne .-4 ; 0xe8 + ec: 00 c0 rjmp .+0 ; 0xee + ee: 00 00 nop + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x00; // stop + f0: 15 ba out 0x15, r1 ; 21 + f2: 08 95 ret + +000000f4 : + // (EN=0 RS=0) +} + +void lcd_command ( unsigned char dat ) +{ + PORTC = dat & 0xF0; // hoge nibble + f4: 98 2f mov r25, r24 + f6: 90 7f andi r25, 0xF0 ; 240 + f8: 95 bb out 0x15, r25 ; 21 + PORTC = PORTC | 0x08; // data (RS=0), + fa: ab 9a sbi 0x15, 3 ; 21 + fc: ef ec ldi r30, 0xCF ; 207 + fe: f7 e0 ldi r31, 0x07 ; 7 + 100: 31 97 sbiw r30, 0x01 ; 1 + 102: f1 f7 brne .-4 ; 0x100 + 104: 00 c0 rjmp .+0 ; 0x106 + 106: 00 00 nop + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x04; // stop (EN = 0) + 108: 94 e0 ldi r25, 0x04 ; 4 + 10a: 95 bb out 0x15, r25 ; 21 + + PORTC = (dat & 0x0F) << 4; // lage nibble + 10c: f0 e1 ldi r31, 0x10 ; 16 + 10e: 8f 9f mul r24, r31 + 110: c0 01 movw r24, r0 + 112: 11 24 eor r1, r1 + 114: 85 bb out 0x15, r24 ; 21 + PORTC = PORTC | 0x08; // data (RS=0), + 116: ab 9a sbi 0x15, 3 ; 21 + 118: 8f ec ldi r24, 0xCF ; 207 + 11a: 97 e0 ldi r25, 0x07 ; 7 + 11c: 01 97 sbiw r24, 0x01 ; 1 + 11e: f1 f7 brne .-4 ; 0x11c + 120: 00 c0 rjmp .+0 ; 0x122 + 122: 00 00 nop + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x00; // stop + 124: 15 ba out 0x15, r1 ; 21 + 126: 08 95 ret + +00000128 : + } +} + +void lcd_init() +{ + DDRC = 0b11111111; + 128: 8f ef ldi r24, 0xFF ; 255 + 12a: 84 bb out 0x14, r24 ; 20 + 12c: 2f ef ldi r18, 0xFF ; 255 + 12e: 80 e7 ldi r24, 0x70 ; 112 + 130: 92 e0 ldi r25, 0x02 ; 2 + 132: 21 50 subi r18, 0x01 ; 1 + 134: 80 40 sbci r24, 0x00 ; 0 + 136: 90 40 sbci r25, 0x00 ; 0 + 138: e1 f7 brne .-8 ; 0x132 + 13a: 00 c0 rjmp .+0 ; 0x13c + 13c: 00 00 nop + + _delay_ms(100); + + // return home + lcd_command( 0x02 ); + 13e: 82 e0 ldi r24, 0x02 ; 2 + 140: 90 e0 ldi r25, 0x00 ; 0 + 142: d8 df rcall .-80 ; 0xf4 + // mode: 4 bits interface data, 2 lines, 5x8 dots + lcd_command( 0x28 ); + 144: 88 e2 ldi r24, 0x28 ; 40 + 146: 90 e0 ldi r25, 0x00 ; 0 + 148: d5 df rcall .-86 ; 0xf4 + // display: on, cursor off, blinking off + lcd_command( 0x0C ); + 14a: 8c e0 ldi r24, 0x0C ; 12 + 14c: 90 e0 ldi r25, 0x00 ; 0 + 14e: d2 df rcall .-92 ; 0xf4 + // entry mode: cursor to right, no shift + lcd_command( 0x06 ); + 150: 86 e0 ldi r24, 0x06 ; 6 + 152: 90 e0 ldi r25, 0x00 ; 0 + 154: cf df rcall .-98 ; 0xf4 + // RAM address: 0, first position, line 1 + lcd_command( 0x80 ); + 156: 80 e8 ldi r24, 0x80 ; 128 + 158: 90 e0 ldi r25, 0x00 ; 0 + 15a: cc cf rjmp .-104 ; 0xf4 + 15c: 08 95 ret + +0000015e : + PORTC = 0x00; // stop + // (EN=0 RS=0) +} + +void lcd_writeLine ( int line, char text[] ) +{ + 15e: cf 93 push r28 + 160: df 93 push r29 + 162: eb 01 movw r28, r22 + // eerst de eerste 8 karakters = regel 1 + + if(line) + 164: 89 2b or r24, r25 + 166: 19 f0 breq .+6 ; 0x16e + { + // eerste pos regel 1 + lcd_command(0xC0); + 168: 80 ec ldi r24, 0xC0 ; 192 + 16a: c4 df rcall .-120 ; 0xf4 + 16c: 02 c0 rjmp .+4 ; 0x172 + } + else + { + // regel 0 + lcd_command(0x80); + 16e: 80 e8 ldi r24, 0x80 ; 128 + 170: c1 df rcall .-126 ; 0xf4 + } + + int count = 0; + + while (text[count] != '\0') { + 172: 88 81 ld r24, Y + 174: 88 23 and r24, r24 + 176: 59 f0 breq .+22 ; 0x18e + 178: 21 96 adiw r28, 0x01 ; 1 + lcd_writeChar( text[count] ); + 17a: 9e df rcall .-196 ; 0xb8 + 17c: 8f ec ldi r24, 0xCF ; 207 + 17e: 97 e0 ldi r25, 0x07 ; 7 + 180: 01 97 sbiw r24, 0x01 ; 1 + 182: f1 f7 brne .-4 ; 0x180 + 184: 00 c0 rjmp .+0 ; 0x186 + 186: 00 00 nop + lcd_command(0x80); + } + + int count = 0; + + while (text[count] != '\0') { + 188: 89 91 ld r24, Y+ + 18a: 81 11 cpse r24, r1 + 18c: f6 cf rjmp .-20 ; 0x17a + lcd_writeChar( text[count] ); + count++; + _delay_ms(1); + } + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 : + return 1; +} + +void opgave1() +{ + lcd_init(); + 194: c9 df rcall .-110 ; 0x128 + + srand(98126519); + 196: 87 eb ldi r24, 0xB7 ; 183 + 198: 9a e4 ldi r25, 0x4A ; 74 + 19a: 7a d0 rcall .+244 ; 0x290 + + int r = 8; + + while(1){ + + r = rand() % 8; + 19c: 76 d0 rcall .+236 ; 0x28a + 19e: 87 70 andi r24, 0x07 ; 7 + 1a0: 90 78 andi r25, 0x80 ; 128 + 1a2: 99 23 and r25, r25 + 1a4: 24 f4 brge .+8 ; 0x1ae + 1a6: 01 97 sbiw r24, 0x01 ; 1 + 1a8: 88 6f ori r24, 0xF8 ; 248 + 1aa: 9f 6f ori r25, 0xFF ; 255 + 1ac: 01 96 adiw r24, 0x01 ; 1 + + lcd_writeLine(0, pattern[r].data); + 1ae: bc 01 movw r22, r24 + 1b0: 66 0f add r22, r22 + 1b2: 77 1f adc r23, r23 + 1b4: 88 0f add r24, r24 + 1b6: 99 1f adc r25, r25 + 1b8: 88 0f add r24, r24 + 1ba: 99 1f adc r25, r25 + 1bc: 88 0f add r24, r24 + 1be: 99 1f adc r25, r25 + 1c0: 68 0f add r22, r24 + 1c2: 79 1f adc r23, r25 + 1c4: 6c 5f subi r22, 0xFC ; 252 + 1c6: 7e 4f sbci r23, 0xFE ; 254 + 1c8: 80 e0 ldi r24, 0x00 ; 0 + 1ca: 90 e0 ldi r25, 0x00 ; 0 + 1cc: c8 df rcall .-112 ; 0x15e + 1ce: 2f ef ldi r18, 0xFF ; 255 + 1d0: 89 e6 ldi r24, 0x69 ; 105 + 1d2: 98 e1 ldi r25, 0x18 ; 24 + 1d4: 21 50 subi r18, 0x01 ; 1 + 1d6: 80 40 sbci r24, 0x00 ; 0 + 1d8: 90 40 sbci r25, 0x00 ; 0 + 1da: e1 f7 brne .-8 ; 0x1d4 + 1dc: 00 c0 rjmp .+0 ; 0x1de + 1de: 00 00 nop + _delay_ms(1000); + + //clear + lcd_command(0x01); + 1e0: 81 e0 ldi r24, 0x01 ; 1 + 1e2: 90 e0 ldi r25, 0x00 ; 0 + 1e4: 87 df rcall .-242 ; 0xf4 + 1e6: 2f ef ldi r18, 0xFF ; 255 + 1e8: 80 e7 ldi r24, 0x70 ; 112 + 1ea: 92 e0 ldi r25, 0x02 ; 2 + 1ec: 21 50 subi r18, 0x01 ; 1 + 1ee: 80 40 sbci r24, 0x00 ; 0 + 1f0: 90 40 sbci r25, 0x00 ; 0 + 1f2: e1 f7 brne .-8 ; 0x1ec + 1f4: 00 c0 rjmp .+0 ; 0x1f6 + 1f6: 00 00 nop + 1f8: d1 cf rjmp .-94 ; 0x19c + +000001fa
: + {"Kenneth"}, {"Janco"}, {"Arthur"}, {"Martijn"}, {"Mauro"}, {"Rene"}, {"Remco"}, {"Jannick"} +}; -0000009e
: int main(void) { - /* Replace with your application code */ - while (1) - { - } - 9e: ff cf rjmp .-2 ; 0x9e
+ opgave1(); + 1fa: cc df rcall .-104 ; 0x194 -000000a0 <_exit>: - a0: f8 94 cli +000001fc : + 1fc: 8f 92 push r8 + 1fe: 9f 92 push r9 + 200: af 92 push r10 + 202: bf 92 push r11 + 204: cf 92 push r12 + 206: df 92 push r13 + 208: ef 92 push r14 + 20a: ff 92 push r15 + 20c: cf 93 push r28 + 20e: df 93 push r29 + 210: ec 01 movw r28, r24 + 212: 68 81 ld r22, Y + 214: 79 81 ldd r23, Y+1 ; 0x01 + 216: 8a 81 ldd r24, Y+2 ; 0x02 + 218: 9b 81 ldd r25, Y+3 ; 0x03 + 21a: 61 15 cp r22, r1 + 21c: 71 05 cpc r23, r1 + 21e: 81 05 cpc r24, r1 + 220: 91 05 cpc r25, r1 + 222: 21 f4 brne .+8 ; 0x22c + 224: 64 e2 ldi r22, 0x24 ; 36 + 226: 79 ed ldi r23, 0xD9 ; 217 + 228: 8b e5 ldi r24, 0x5B ; 91 + 22a: 97 e0 ldi r25, 0x07 ; 7 + 22c: 2d e1 ldi r18, 0x1D ; 29 + 22e: 33 ef ldi r19, 0xF3 ; 243 + 230: 41 e0 ldi r20, 0x01 ; 1 + 232: 50 e0 ldi r21, 0x00 ; 0 + 234: 38 d0 rcall .+112 ; 0x2a6 <__divmodsi4> + 236: 49 01 movw r8, r18 + 238: 5a 01 movw r10, r20 + 23a: 9b 01 movw r18, r22 + 23c: ac 01 movw r20, r24 + 23e: a7 ea ldi r26, 0xA7 ; 167 + 240: b1 e4 ldi r27, 0x41 ; 65 + 242: 4d d0 rcall .+154 ; 0x2de <__muluhisi3> + 244: 6b 01 movw r12, r22 + 246: 7c 01 movw r14, r24 + 248: ac ee ldi r26, 0xEC ; 236 + 24a: b4 ef ldi r27, 0xF4 ; 244 + 24c: a5 01 movw r20, r10 + 24e: 94 01 movw r18, r8 + 250: 52 d0 rcall .+164 ; 0x2f6 <__mulohisi3> + 252: dc 01 movw r26, r24 + 254: cb 01 movw r24, r22 + 256: 8c 0d add r24, r12 + 258: 9d 1d adc r25, r13 + 25a: ae 1d adc r26, r14 + 25c: bf 1d adc r27, r15 + 25e: b7 ff sbrs r27, 7 + 260: 03 c0 rjmp .+6 ; 0x268 + 262: 01 97 sbiw r24, 0x01 ; 1 + 264: a1 09 sbc r26, r1 + 266: b0 48 sbci r27, 0x80 ; 128 + 268: 88 83 st Y, r24 + 26a: 99 83 std Y+1, r25 ; 0x01 + 26c: aa 83 std Y+2, r26 ; 0x02 + 26e: bb 83 std Y+3, r27 ; 0x03 + 270: 9f 77 andi r25, 0x7F ; 127 + 272: df 91 pop r29 + 274: cf 91 pop r28 + 276: ff 90 pop r15 + 278: ef 90 pop r14 + 27a: df 90 pop r13 + 27c: cf 90 pop r12 + 27e: bf 90 pop r11 + 280: af 90 pop r10 + 282: 9f 90 pop r9 + 284: 8f 90 pop r8 + 286: 08 95 ret -000000a2 <__stop_program>: - a2: ff cf rjmp .-2 ; 0xa2 <__stop_program> +00000288 : + 288: b9 cf rjmp .-142 ; 0x1fc + +0000028a : + 28a: 80 e0 ldi r24, 0x00 ; 0 + 28c: 91 e0 ldi r25, 0x01 ; 1 + 28e: b6 cf rjmp .-148 ; 0x1fc + +00000290 : + 290: a0 e0 ldi r26, 0x00 ; 0 + 292: b0 e0 ldi r27, 0x00 ; 0 + 294: 80 93 00 01 sts 0x0100, r24 + 298: 90 93 01 01 sts 0x0101, r25 + 29c: a0 93 02 01 sts 0x0102, r26 + 2a0: b0 93 03 01 sts 0x0103, r27 + 2a4: 08 95 ret + +000002a6 <__divmodsi4>: + 2a6: 05 2e mov r0, r21 + 2a8: 97 fb bst r25, 7 + 2aa: 16 f4 brtc .+4 ; 0x2b0 <__divmodsi4+0xa> + 2ac: 00 94 com r0 + 2ae: 0f d0 rcall .+30 ; 0x2ce <__negsi2> + 2b0: 57 fd sbrc r21, 7 + 2b2: 05 d0 rcall .+10 ; 0x2be <__divmodsi4_neg2> + 2b4: 24 d0 rcall .+72 ; 0x2fe <__udivmodsi4> + 2b6: 07 fc sbrc r0, 7 + 2b8: 02 d0 rcall .+4 ; 0x2be <__divmodsi4_neg2> + 2ba: 46 f4 brtc .+16 ; 0x2cc <__divmodsi4_exit> + 2bc: 08 c0 rjmp .+16 ; 0x2ce <__negsi2> + +000002be <__divmodsi4_neg2>: + 2be: 50 95 com r21 + 2c0: 40 95 com r20 + 2c2: 30 95 com r19 + 2c4: 21 95 neg r18 + 2c6: 3f 4f sbci r19, 0xFF ; 255 + 2c8: 4f 4f sbci r20, 0xFF ; 255 + 2ca: 5f 4f sbci r21, 0xFF ; 255 + +000002cc <__divmodsi4_exit>: + 2cc: 08 95 ret + +000002ce <__negsi2>: + 2ce: 90 95 com r25 + 2d0: 80 95 com r24 + 2d2: 70 95 com r23 + 2d4: 61 95 neg r22 + 2d6: 7f 4f sbci r23, 0xFF ; 255 + 2d8: 8f 4f sbci r24, 0xFF ; 255 + 2da: 9f 4f sbci r25, 0xFF ; 255 + 2dc: 08 95 ret + +000002de <__muluhisi3>: + 2de: 31 d0 rcall .+98 ; 0x342 <__umulhisi3> + 2e0: a5 9f mul r26, r21 + 2e2: 90 0d add r25, r0 + 2e4: b4 9f mul r27, r20 + 2e6: 90 0d add r25, r0 + 2e8: a4 9f mul r26, r20 + 2ea: 80 0d add r24, r0 + 2ec: 91 1d adc r25, r1 + 2ee: 11 24 eor r1, r1 + 2f0: 08 95 ret + +000002f2 <__mulshisi3>: + 2f2: b7 ff sbrs r27, 7 + 2f4: f4 cf rjmp .-24 ; 0x2de <__muluhisi3> + +000002f6 <__mulohisi3>: + 2f6: f3 df rcall .-26 ; 0x2de <__muluhisi3> + 2f8: 82 1b sub r24, r18 + 2fa: 93 0b sbc r25, r19 + 2fc: 08 95 ret + +000002fe <__udivmodsi4>: + 2fe: a1 e2 ldi r26, 0x21 ; 33 + 300: 1a 2e mov r1, r26 + 302: aa 1b sub r26, r26 + 304: bb 1b sub r27, r27 + 306: fd 01 movw r30, r26 + 308: 0d c0 rjmp .+26 ; 0x324 <__udivmodsi4_ep> + +0000030a <__udivmodsi4_loop>: + 30a: aa 1f adc r26, r26 + 30c: bb 1f adc r27, r27 + 30e: ee 1f adc r30, r30 + 310: ff 1f adc r31, r31 + 312: a2 17 cp r26, r18 + 314: b3 07 cpc r27, r19 + 316: e4 07 cpc r30, r20 + 318: f5 07 cpc r31, r21 + 31a: 20 f0 brcs .+8 ; 0x324 <__udivmodsi4_ep> + 31c: a2 1b sub r26, r18 + 31e: b3 0b sbc r27, r19 + 320: e4 0b sbc r30, r20 + 322: f5 0b sbc r31, r21 + +00000324 <__udivmodsi4_ep>: + 324: 66 1f adc r22, r22 + 326: 77 1f adc r23, r23 + 328: 88 1f adc r24, r24 + 32a: 99 1f adc r25, r25 + 32c: 1a 94 dec r1 + 32e: 69 f7 brne .-38 ; 0x30a <__udivmodsi4_loop> + 330: 60 95 com r22 + 332: 70 95 com r23 + 334: 80 95 com r24 + 336: 90 95 com r25 + 338: 9b 01 movw r18, r22 + 33a: ac 01 movw r20, r24 + 33c: bd 01 movw r22, r26 + 33e: cf 01 movw r24, r30 + 340: 08 95 ret + +00000342 <__umulhisi3>: + 342: a2 9f mul r26, r18 + 344: b0 01 movw r22, r0 + 346: b3 9f mul r27, r19 + 348: c0 01 movw r24, r0 + 34a: a3 9f mul r26, r19 + 34c: 70 0d add r23, r0 + 34e: 81 1d adc r24, r1 + 350: 11 24 eor r1, r1 + 352: 91 1d adc r25, r1 + 354: b2 9f mul r27, r18 + 356: 70 0d add r23, r0 + 358: 81 1d adc r24, r1 + 35a: 11 24 eor r1, r1 + 35c: 91 1d adc r25, r1 + 35e: 08 95 ret + +00000360 <_exit>: + 360: f8 94 cli + +00000362 <__stop_program>: + 362: ff cf rjmp .-2 ; 0x362 <__stop_program> diff --git a/MIC-Week3/Debug/MIC-Week3.map b/MIC-Week3/Debug/MIC-Week3.map index f94d5a7..dacea2b 100644 --- a/MIC-Week3/Debug/MIC-Week3.map +++ b/MIC-Week3/Debug/MIC-Week3.map @@ -2,6 +2,22 @@ Archive member included to satisfy reference by file (symbol) 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) 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/../../../../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/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) + 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) (__negsi2) +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) + 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) (__muluhisi3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_mulshisi3.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) (__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 @@ -26,6 +42,108 @@ 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(_exit.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(_exit.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(_copy_data.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(_copy_data.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(_copy_data.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(_copy_data.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(_copy_data.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(_copy_data.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(_copy_data.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(_copy_data.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(_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/../../../../avr/lib/avr51\libc.a(rand.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(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/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) + .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(_divmodsi4.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(_divmodsi4.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(_divmodsi4.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(_divmodsi4.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(_divmodsi4.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(_divmodsi4.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_negsi2.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_muluhisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_mulshisi3.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(_udivmodsi4.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(_udivmodsi4.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(_udivmodsi4.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(_udivmodsi4.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(_udivmodsi4.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(_udivmodsi4.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(_udivmodsi4.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(_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.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 @@ -144,7 +262,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0xa4 +.text 0x00000000 0x364 *(.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 @@ -183,6 +301,8 @@ END GROUP *(.init3) *(.init3) *(.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) *(.init5) *(.init5) @@ -193,54 +313,92 @@ END GROUP *(.init8) *(.init8) *(.init9) - .init9 0x00000098 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o + .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) *(.text) - .text 0x0000009c 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/Atmel/ATmega_DFP/1.0.91/gcc/dev/atmega128/avr51/crtatmega128.o - 0x0000009c __vector_22 - 0x0000009c __vector_28 - 0x0000009c __vector_1 - 0x0000009c __vector_32 - 0x0000009c __vector_34 - 0x0000009c __vector_24 - 0x0000009c __vector_12 - 0x0000009c __bad_interrupt - 0x0000009c __vector_6 - 0x0000009c __vector_31 - 0x0000009c __vector_3 - 0x0000009c __vector_23 - 0x0000009c __vector_30 - 0x0000009c __vector_25 - 0x0000009c __vector_11 - 0x0000009c __vector_13 - 0x0000009c __vector_17 - 0x0000009c __vector_19 - 0x0000009c __vector_7 - 0x0000009c __vector_27 - 0x0000009c __vector_5 - 0x0000009c __vector_33 - 0x0000009c __vector_4 - 0x0000009c __vector_9 - 0x0000009c __vector_2 - 0x0000009c __vector_21 - 0x0000009c __vector_15 - 0x0000009c __vector_29 - 0x0000009c __vector_8 - 0x0000009c __vector_26 - 0x0000009c __vector_14 - 0x0000009c __vector_10 - 0x0000009c __vector_16 - 0x0000009c __vector_18 - 0x0000009c __vector_20 - 0x0000009e . = ALIGN (0x2) + .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.*) - .text.main 0x0000009e 0x2 main.o - 0x0000009e main - 0x000000a0 . = ALIGN (0x2) + .text.lcd_writeChar + 0x000000b8 0x3c main.o + 0x000000b8 lcd_writeChar + .text.lcd_command + 0x000000f4 0x34 main.o + 0x000000f4 lcd_command + .text.lcd_init + 0x00000128 0x36 main.o + 0x00000128 lcd_init + .text.lcd_writeLine + 0x0000015e 0x36 main.o + 0x0000015e lcd_writeLine + .text.opgave1 0x00000194 0x66 main.o + 0x00000194 opgave1 + .text.main 0x000001fa 0x2 main.o + 0x000001fa main + .text.avr-libc + 0x000001fc 0xaa 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) + 0x00000288 rand_r + 0x0000028a rand + 0x00000290 srand + .text.libgcc.div + 0x000002a6 0x28 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) + 0x000002a6 __divmodsi4 + .text.libgcc.div + 0x000002ce 0x10 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) + 0x000002ce __negsi2 + .text.libgcc.mul + 0x000002de 0x14 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) + 0x000002de __muluhisi3 + .text.libgcc.mul + 0x000002f2 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avr51\libgcc.a(_mulshisi3.o) + 0x000002f2 __mulshisi3 + 0x000002f6 __mulohisi3 + .text.libgcc.div + 0x000002fe 0x44 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) + 0x000002fe __udivmodsi4 + .text.libgcc.mul + 0x00000342 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) + 0x00000342 __umulhisi3 + 0x00000360 . = ALIGN (0x2) *(.fini9) - .fini9 0x000000a0 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) - 0x000000a0 _exit - 0x000000a0 exit + .fini9 0x00000360 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) + 0x00000360 _exit + 0x00000360 exit *(.fini9) *(.fini8) *(.fini8) @@ -259,36 +417,39 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000000a0 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 0x00000360 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) - 0x000000a4 _etext = . + 0x00000364 _etext = . -.data 0x00800100 0x0 load address 0x000000a4 +.data 0x00800100 0x54 load address 0x00000364 0x00800100 PROVIDE (__data_start, .) *(.data) + .data 0x00800100 0x4 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) *(.data*) + .data.pattern 0x00800104 0x50 main.o + 0x00800104 pattern *(.rodata) *(.rodata*) *(.gnu.linkonce.d*) - 0x00800100 . = ALIGN (0x2) - 0x00800100 _edata = . - 0x00800100 PROVIDE (__data_end, .) + 0x00800154 . = ALIGN (0x2) + 0x00800154 _edata = . + 0x00800154 PROVIDE (__data_end, .) -.bss 0x00800100 0x0 - 0x00800100 PROVIDE (__bss_start, .) +.bss 0x00800154 0x0 + 0x00800154 PROVIDE (__bss_start, .) *(.bss) *(.bss*) *(COMMON) - 0x00800100 PROVIDE (__bss_end, .) - 0x000000a4 __data_load_start = LOADADDR (.data) - 0x000000a4 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800154 PROVIDE (__bss_end, .) + 0x00000364 __data_load_start = LOADADDR (.data) + 0x000003b8 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800100 0x0 - 0x00800100 PROVIDE (__noinit_start, .) +.noinit 0x00800154 0x0 + 0x00800154 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800100 PROVIDE (__noinit_end, .) - 0x00800100 _end = . - 0x00800100 PROVIDE (__heap_start, .) + 0x00800154 PROVIDE (__noinit_end, .) + 0x00800154 _end = . + 0x00800154 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -331,6 +492,7 @@ END GROUP *(.comment) .comment 0x00000000 0x30 main.o 0x31 (size before relaxing) + .comment 0x00000030 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) .note.gnu.avr.deviceinfo 0x00000000 0x3c @@ -352,37 +514,38 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x20 +.debug_aranges 0x00000000 0x48 *(.debug_aranges) .debug_aranges - 0x00000000 0x20 main.o + 0x00000000 0x48 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x7c +.debug_info 0x00000000 0x573 *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0x7c main.o + .debug_info 0x00000000 0x573 main.o -.debug_abbrev 0x00000000 0x46 +.debug_abbrev 0x00000000 0x23d *(.debug_abbrev) - .debug_abbrev 0x00000000 0x46 main.o + .debug_abbrev 0x00000000 0x23d main.o -.debug_line 0x00000000 0x43 +.debug_line 0x00000000 0x287 *(.debug_line .debug_line.* .debug_line_end) - .debug_line 0x00000000 0x43 main.o + .debug_line 0x00000000 0x287 main.o -.debug_frame 0x00000000 0x24 +.debug_frame 0x00000000 0x80 *(.debug_frame) - .debug_frame 0x00000000 0x24 main.o + .debug_frame 0x00000000 0x80 main.o -.debug_str 0x00000000 0x124 +.debug_str 0x00000000 0x1eb *(.debug_str) - .debug_str 0x00000000 0x124 main.o - 0x158 (size before relaxing) + .debug_str 0x00000000 0x1eb main.o + 0x229 (size before relaxing) -.debug_loc +.debug_loc 0x00000000 0x1b5 *(.debug_loc) + .debug_loc 0x00000000 0x1b5 main.o .debug_macinfo *(.debug_macinfo) @@ -402,9 +565,9 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x10 +.debug_ranges 0x00000000 0x38 *(.debug_ranges) - .debug_ranges 0x00000000 0x10 main.o + .debug_ranges 0x00000000 0x38 main.o .debug_macro *(.debug_macro) diff --git a/MIC-Week3/Debug/MIC-Week3.srec b/MIC-Week3/Debug/MIC-Week3.srec index 728d956..3eaa6f5 100644 --- a/MIC-Week3/Debug/MIC-Week3.srec +++ b/MIC-Week3/Debug/MIC-Week3.srec @@ -1,13 +1,63 @@ S01100004D49432D5765656B332E737265634E -S113000045C000004BC0000049C0000047C00000CC -S113001045C0000043C0000041C000003FC00000D4 -S11300203DC000003BC0000039C0000037C00000E4 -S113003035C0000033C0000031C000002FC00000F4 -S11300402DC000002BC0000029C0000027C0000004 -S113005025C0000023C0000021C000001FC0000014 -S11300601DC000001BC0000019C0000017C0000024 -S113007015C0000013C0000011C000000FC0000034 -S11300800DC000000BC0000009C0000011241FBEF9 -S1130090CFEFD0E1DEBFCDBF02D002C0B1CFFFCFE2 -S10700A0F894FFCFFE +S113000045C0000058C0000056C0000054C00000A5 +S113001052C0000050C000004EC000004CC00000A0 +S11300204AC0000048C0000046C0000044C00000B0 +S113003042C0000040C000003EC000003CC00000C0 +S11300403AC0000038C0000036C0000034C00000D0 +S113005032C0000030C000002EC000002CC00000E0 +S11300602AC0000028C0000026C0000024C00000F0 +S113007022C0000020C000001EC000001CC0000000 +S11300801AC0000018C0000016C0000011241FBED2 +S1130090CFEFD0E1DEBFCDBF11E0A0E0B1E0E4E6F8 +S11300A0F3E000E00BBF02C007900D92A435B10746 +S11300B0D9F7A3D055C1A4CF982F907F95BB95B302 +S11300C09C6095BBEFECF7E03197F1F700C00000BE +S11300D094E095BBF0E18F9FC001112485BB85B3EB +S11300E08C6085BB8FEC97E00197F1F700C00000AE +S11300F015BA0895982F907F95BBAB9AEFECF7E073 +S11301003197F1F700C0000094E095BBF0E18F9FB8 +S1130110C001112485BBAB9A8FEC97E00197F1F7EE +S113012000C0000015BA08958FEF84BB2FEF80E75D +S113013092E0215080409040E1F700C0000082E04E +S113014090E0D8DF88E290E0D5DF8CE090E0D2DF69 +S113015086E090E0CFDF80E890E0CCCF0895CF93A5 +S1130160DF93EB01892B19F080ECC4DF02C080E837 +S1130170C1DF8881882359F021969EDF8FEC97E0B8 +S11301800197F1F700C0000089918111F6CFDF914A +S1130190CF910895C9DF87EB9AE47AD076D087703F +S11301A09078992324F40197886F9F6F0196BC017E +S11301B0660F771F880F991F880F991F880F991F43 +S11301C0680F791F6C5F7E4F80E090E0C8DF2FEFEF +S11301D089E698E1215080409040E1F700C000009A +S11301E081E090E087DF2FEF80E792E021508040AC +S11301F09040E1F700C00000D1CFCCDF8F929F92F6 +S1130200AF92BF92CF92DF92EF92FF92CF93DF93A0 +S1130210EC01688179818A819B8161157105810571 +S1130220910521F464E279ED8BE597E02DE133EF5C +S113023041E050E038D049015A019B01AC01A7EAE2 +S1130240B1E44DD06B017C01ACEEB4EFA501940197 +S113025052D0DC01CB018C0D9D1DAE1DBF1DB7FF1F +S113026003C00197A109B04888839983AA83BB83FB +S11302709F77DF91CF91FF90EF90DF90CF90BF9069 +S1130280AF909F908F900895B9CF80E091E0B6CF62 +S1130290A0E0B0E08093000190930101A0930201DB +S11302A0B09303010895052E97FB16F400940FD024 +S11302B057FD05D024D007FC02D046F408C0509561 +S11302C04095309521953F4F4F4F5F4F089590953E +S11302D08095709561957F4F8F4F9F4F089531D0D2 +S11302E0A59F900DB49F900DA49F800D911D112486 +S11302F00895B7FFF4CFF3DF821B930B0895A1E2B7 +S11303001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F8B +S1130310FF1FA217B307E407F50720F0A21BB30BD6 +S1130320E40BF50B661F771F881F991F1A9469F752 +S113033060957095809590959B01AC01BD01CF01AE +S11303400895A29FB001B39FC001A39F700D811DAA +S11303501124911DB29F700D811D1124911D0895CA +S1070360F894FFCF3B +S1130364010000004B656E6E6574680000004A610C +S11303746E636F00000000004172746875720000BF +S113038400004D617274696A6E0000004D617572FB +S11303946F000000000052656E650000000000005C +S11303A452656D636F00000000004A616E6E6963FC +S10703B46B000000D6 S9030000FC diff --git a/MIC-Week3/Debug/main.d b/MIC-Week3/Debug/main.d index f5d14c1..bff5c0e 100644 --- a/MIC-Week3/Debug/main.d +++ b/MIC-Week3/Debug/main.d @@ -9,7 +9,12 @@ main.d main.o: .././main.c \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ - c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + 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\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9.2\include\stddef.h c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: @@ -32,3 +37,13 @@ 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\avr\fuse.h: c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +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\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/MIC-Week3.cproj b/MIC-Week3/MIC-Week3.cproj index bb25c73..58a796f 100644 --- a/MIC-Week3/MIC-Week3.cproj +++ b/MIC-Week3/MIC-Week3.cproj @@ -20,12 +20,12 @@ false true true - + 0x20000000 true - + exception_table 2 - 1 + 0 diff --git a/MIC-Week3/main.c b/MIC-Week3/main.c index 678e157..c33666d 100644 --- a/MIC-Week3/main.c +++ b/MIC-Week3/main.c @@ -5,8 +5,28 @@ * Author : kenny */ +#define F_CPU 8000000UL //CPU op 8MHz #include +#include +#include +typedef struct { + unsigned char data[10]; +} PATTERN_STRUCT; + +//PIN 0 == SEG A +//PIN 1 == SEG B +//PIN 2 == SEG C +//PIN 3 == SEG D +//PIN 4 == SEG E +//PIN 5 == SEG F +//PIN 6 == SEG G +//PIN 7 == SEG DP + +//Array van patronen die elkaar opvolgen. +PATTERN_STRUCT pattern[] = { + {"Kenneth"}, {"Janco"}, {"Arthur"}, {"Martijn"}, {"Mauro"}, {"Rene"}, {"Remco"}, {"Jannick"} +}; int main(void) { @@ -17,9 +37,94 @@ int main(void) void opgave1() { - while(1) - { + lcd_init(); + + srand(98126519); + + int r = 8; + + while(1){ + r = rand() % 8; + + lcd_writeLine(0, pattern[r].data); + _delay_ms(1000); + + //clear + lcd_command(0x01); + _delay_ms(100); } } +void lcd_init() +{ + DDRC = 0b11111111; + + _delay_ms(100); + + // return home + lcd_command( 0x02 ); + // mode: 4 bits interface data, 2 lines, 5x8 dots + lcd_command( 0x28 ); + // display: on, cursor off, blinking off + lcd_command( 0x0C ); + // entry mode: cursor to right, no shift + lcd_command( 0x06 ); + // RAM address: 0, first position, line 1 + lcd_command( 0x80 ); +} + +void lcd_writeChar( unsigned char dat ) +{ + PORTC = dat & 0xF0; // hoge nibble + PORTC = PORTC | 0x0C; // Enable on (EN = 1, RS=1), + _delay_ms(1); // wait 1 ms + PORTC = 0x04; // Enable off (EN = 0, RS = 1) + + PORTC = (dat & 0x0F) << 4; // lage nibble + PORTC = PORTC | 0x0C; // Enable on (RS=1), + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x00; // stop + // (EN=0 RS=0) +} + +void lcd_command ( unsigned char dat ) +{ + PORTC = dat & 0xF0; // hoge nibble + PORTC = PORTC | 0x08; // data (RS=0), + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x04; // stop (EN = 0) + + PORTC = (dat & 0x0F) << 4; // lage nibble + PORTC = PORTC | 0x08; // data (RS=0), + // start (EN=1) + _delay_ms(1); // wait 1 ms + PORTC = 0x00; // stop + // (EN=0 RS=0) +} + +void lcd_writeLine ( int line, char text[] ) +{ + // eerst de eerste 8 karakters = regel 1 + + if(line) + { + // eerste pos regel 1 + lcd_command(0xC0); + } + else + { + // regel 0 + lcd_command(0x80); + } + + int count = 0; + + while (text[count] != '\0') { + lcd_writeChar( text[count] ); + count++; + _delay_ms(1); + } +} \ No newline at end of file