From 237e085b5135a435363a6f025a6b52373383cd4a Mon Sep 17 00:00:00 2001 From: S170H <64917343+S170H@users.noreply.github.com> Date: Tue, 12 Dec 2023 01:08:38 +0100 Subject: [PATCH] P4 Final --- P4/.vs/P4/v14/.atsuo | Bin 19968 -> 36864 bytes P4/P4/Debug/P4.elf | Bin 11640 -> 11680 bytes P4/P4/Debug/P4.hex | 70 +-- P4/P4/Debug/P4.lss | 534 +++++++++--------- P4/P4/Debug/P4.map | 138 +++-- P4/P4/Debug/P4.srec | 70 +-- P4/P4/Debug/keys.o | Bin 2872 -> 2852 bytes P4/P4/Debug/main.d | 5 +- P4/P4/Debug/main.o | Bin 5964 -> 4560 bytes P4/P4/Debug/sevenseg.d | 5 +- P4/P4/Debug/sevenseg.o | Bin 4156 -> 5224 bytes ...ys_SAFAK_Dez-06-141334-2023_CaseConflict.c | 22 - P4/P4/P4.cproj | 17 +- P4/P4/keys.c | 22 + P4/P4/keys.h | 10 - P4/P4/main.c | 55 +- P4/P4/sevenseg.c | 38 +- P4/P4/sevenseg.h | 14 +- 18 files changed, 504 insertions(+), 496 deletions(-) delete mode 100644 P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c create mode 100644 P4/P4/keys.c diff --git a/P4/.vs/P4/v14/.atsuo b/P4/.vs/P4/v14/.atsuo index 13544afda3a2eaa790988ba7bb844983eb581c7e..252e4204bdfb19e12626d4675bc4c988706b82d6 100644 GIT binary patch literal 36864 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 diff --git a/P4/P4/Debug/P4.elf b/P4/P4/Debug/P4.elf index 1cbfb4120b5da985f677b73ab0a636141c210b2d..a54ca9210a1f6ee6890e42298f4fb81ee5efe0df 100644 GIT binary patch delta 4037 zcmb_fdvH`&9X{vYePpwn-OVPOCt(w!*^o`aEl?P>kWkP@o3_ZPHPSAGtRw{zOqN$g zH)&BDpp)I4EC~)28pmiEKx;b2ObcX~(a~v<=!{OMQ`1dpJLR9^($oZbtl#hMy_?&u z;~$P^=A8R|zt{Pl=boKwI`!>HIiHJGRF-v0j8Qc*#_(Yr)g%+>W}VS3g}xGyd=RQs z$jF3BhPHv_s2kL}E&9vG=!7kL+r{4z4qjX|;{UaIde%PhGZ?JowgJZat{)ojiHo)T zbK&A+1ry!Td>)Cqd9TkubMXC0JR;n@Tc9UZ&IdI~(L{;P{+autM*mFT^^?~%ecI!w zCOH}Hi#j5X3yz22y16SHiBvDiyJ@gZ+)d};5h z=X~SWuin1qPiuO;KOAp8I-lU%(JN6;)Dg{!4c;;@DVSjc=E=QxER*(uN^ZVwoLoH< ziS@)zK9UvN726UE<9oXFmC_B<=84muS3DzyV`k?+MqH(1)@MD(JWa6|XS-vO*sJ`q zu*xs+YH?OBz2{F@+ykgz!797()ye_@iET17W>7?%puaTwvD|6OHH<()esX`g#MwJc z?8~mq{U;10Zu%*9jhuzXAZoH#g~QlW+{DS6dY}UO6iMBDEin>Pa3$EwkeD9^dyPO7 zz#9N8D?|>4-ve@^O#9P9zS*2R(Gyk43~~roRAn>khpWVnmSg`K_<0!EK7_&zP)z~V zaz_$XHow_{A<9oTi+FZ%_$dasm z1GXqhaGBGP7NWZbnDPA}*~%E?wcw{wtruX;-K3F@aO)(o!Uzu&bz9#gS`<-~g|@x0 ze+&2nR9^Z3+MI(B#Zm2=+|dU%hwAtV8YgVflB2RNNQ8S7r)p^InoM!3gG6z944@Pq zxs+osh>IEvlO*$d$R}@fP0n{rmAy}MmdpKl82xf4+dpspg0&%UjZMmi=?c~WdA9K8 z4{?*2$S-_y-h>QnWpK>pF8-MHTUHL!93%7RNmwMim6IHqELSB?y)BaBydjTVToveK zsTKL8dSgrBC9ztuxyU`b&Rxj)MX{+M>UPQ8f>Fx`tQ^)uY0VkZ^P@CIBu^|3K|I zOOc<@6& z?JN-36Wki==nO0qQ)R1an}eNQ^<5i-+ja)qLtSh~uqCj*tv%SOpr&9e!LGKaf}#Dp zg2JnRN4)i<=A|8O6MG)lPkH_Q|4~u5;K5JJZS1=eO9xU8yr}Txm1##`390i;S#0nW zE~d?(6~Z)IRB4j5LU^HwddkH)&s3PU$ZAc+5=l33I#qC*g*7_8H;oA-lFQJ}2TvsH zNURnE^o_uHQm92@TY&mC%A_z0r3uYoBKiML=zIS){<8mJ#NvE~CrnrNeahuR@g;T& z?P?u=34EQ7Ujo+(4U@L~CY?SG{;-bU(2VgV`+woPYhEA5uN7m%s!=%-aA)vx@Kec@ zffE5%f`17C=mu~~5?cq}s`@+OPro4a#H2zz0IrX}{S!PavAsG0Is6#>N9h2GJYr&OY42Wq){tB**ke2K!IGsQI z&M5J2fX^o&v%BDQeYjMA8Bd8}VCrA#&<=rC$}z>o;1mFUEEh}SNjs$MYclu>^2hZ^ zg_h_W8T#f7-VUw|0R1adc0d!T{8{j17KNh@6Uhkp{D?R^g3RXkjDZb8pBhmr!SnEI zr|eP6aY}}vrzxjGr{?G2bm39|O2)6^t2vOtL`J~ZGx!@B{9Ou|-o%_GGW2)A$%G2c zP`)x-(xSA$2Z4SB>4%W0sOk*UFZYtIEYQ-nXJi2plAg8LlI+V#BQKaF=J)o1W>dL7p(YQ yZ6#h@*J{1|0g-!;x9*D`#wPLBaALk|QEB!G<9V817C>gJVr-?lk%{BbDCOUjn7DNS delta 3947 zcmb_fX>3&26+ZX9SvG)QffR*{-Tsfv`eoe+eY9|b!NaT}3Lzw>6E{h0Ju z)hnI*&UenaXS?s-H*@;2e|K*M3zYRLL`-HP!h;0Jr!vz=y@{;_!AgKR08Bhg zAPa~ModZij8#2_I7+aUP^5BJ>!TeWp28XW{*PShSwd70Tx^&k6s{gt_h4yz>#-@!&-2A#o^gF^1G2gFy>Z4b;-NAW@_eGl_$#d-*f z6qETEc&HayaiCp}If`Op3_#!=g&7CtAuQr4mez{~Ml9x-T8ugX>$!|%0iHSg*mNmd zS~g3uMG9M#C3mr;31q(ls}7I_IxzkSYjJ&nh=eesb?NF z=G8lp!>qp*P7dI`6B-odlRwORw%LBX!O5=e=GiO|)&ZE4Nea+u(87hQ48b`6O^!zq z!fmEdo&qyZx+*PbTH^JP!!faE&fP-1DaZ2@D^(Dr1 zE6s2USCWzC!WAwUAp-J=g6VpG7k!8iiAhm^DcBFZ{IS>Og!6QRR2!O-Zh`!LVFhll zP*H)a7S${OaaEV4tEix8mD~E9WtBVUByKKeMyuUzZ0}~t9*}mM(L{IAE_LpXNb{n_ z#Pbqr>fG58)w(J}WqEh>wC#&T_jW~SCwd!N7LHOlyerZa?d%RO(PT>&hokb#(z|VI z+j^oDMc3ulviY%aLucm>*tYj*nZ1XID&ewZ=KTy%nfWjSOw9Z>1I)}MGr+>kl?<>l zqxBx%a=>fjQ*1^KT4PgL>6k1 zVw)7qvk5O~nenKfZVSDD7qViNzSa$EL>y2Y=1BCv6=N# zsqYx{oX{h{hJdsUnBOV>E#sq@Lfu&ldVyyXno7m99Gn6!)V}?kuu7xA{4!Q+4i)-2 zFj}PzuJ{dLV~5@~;utdg3j}(Gobgqo0q|rNzLkafNE-v>0Ut*ATqZ@K`M^Z|JV9on zdJSukV%)-eAkcr;KjzTw=D5hoj5(KjesPrpf?JmwZ_%-kdcpe<^O<;XgpvCV2^Loy~i!HgFW&d#& zzRv5lgk#*2sgwub_mPZ84p5SXtALFa+?j<}0c$4`J~*L9;Msx%tw6xpcg92yL9fL_ ze66Ab5bWcu7-P>K1LiArH8AgCE3ke+al-uud)EILSaZnhQGm?CLs|GGVBXSo?3VZZ zl`Mnb0kaJc4)}ov(it-TG|N8yEzGa%UNZBeqKU#go7;A^cQ*I5Ev@UsXKogTBV7h8 zKd)Rrv9W5ikc-QF@?!PP8iOh9)~tDGoHr?V1PgfB1oLn8J}gZPAIh zzVV2V{vdu{$xtvTdgYd2z|4PFP4ZwcAS&fggH>Xad>8Yx^54NK3-A1Do2;yzZ(i*p zx+>Sz2F%s@M4RMJaD7EYr{weCO7YQHB;NqHwjBE>|4|zd&C 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> - c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__vector_3> + c: 0c 94 67 00 jmp 0xce ; 0xce <__vector_3> 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> @@ -72,7 +72,7 @@ Disassembly of section .text: 74: 11 e0 ldi r17, 0x01 ; 1 76: a0 e0 ldi r26, 0x00 ; 0 78: b1 e0 ldi r27, 0x01 ; 1 - 7a: ee e7 ldi r30, 0x7E ; 126 + 7a: e2 e7 ldi r30, 0x72 ; 114 7c: f2 e0 ldi r31, 0x02 ; 2 7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> 80: 05 90 lpm r0, Z+ @@ -91,295 +91,315 @@ Disassembly of section .text: 92: 1d 92 st X+, r1 00000094 <.do_clear_bss_start>: - 94: a8 31 cpi r26, 0x18 ; 24 + 94: a6 31 cpi r26, 0x16 ; 22 96: b2 07 cpc r27, r18 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> - 9a: 0e 94 d4 00 call 0x1a8 ; 0x1a8
- 9e: 0c 94 3d 01 jmp 0x27a ; 0x27a <_exit> + 9a: 0e 94 a5 00 call 0x14a ; 0x14a
+ 9e: 0c 94 37 01 jmp 0x26e ; 0x26e <_exit> 000000a2 <__bad_interrupt>: a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 000000a6 : - -#include"keys.h" +#include "keys.h" void init(){ - DDRD = 0xff; // Data direction register D (D0 -> D6) as input + DDRD = 0xff; // Data direction register D (D0 -> D6) as output a6: 8f ef ldi r24, 0xFF ; 255 a8: 8a b9 out 0x0a, r24 ; 10 - PORTD = (1 << PIND0); // setting bit for 7-segment - aa: 81 e0 ldi r24, 0x01 ; 1 - ac: 8b b9 out 0x0b, r24 ; 11 + // PORTD = 0xff; // setting bit for 7-segment show 0 + // => spielt keine Rolle, wird von der while Schleife übernommen - DDRB = 0x01; // Data direction register B0 as output, B1 & B2 as input - ae: 84 b9 out 0x04, r24 ; 4 - PORTB |= (1 << PINB1) | (1 << PINB2); // setting bit for SW1 and SW2 - b0: 85 b1 in r24, 0x05 ; 5 - b2: 86 60 ori r24, 0x06 ; 6 - b4: 85 b9 out 0x05, r24 ; 5 + DDRB = 0x01; // Data direction register B (B0) as output and DDRB (B1, B2) as input + aa: 81 e0 ldi r24, 0x01 ; 1 + ac: 84 b9 out 0x04, r24 ; 4 + PORTB |= (1 << PINB1) | (1 << PINB2) ; // setting bit for teens and SW1-2 + ae: 85 b1 in r24, 0x05 ; 5 + b0: 86 60 ori r24, 0x06 ; 6 + b2: 85 b9 out 0x05, r24 ; 5 + + // mit unserem Atmega nicht möglich, da keine PCINT8_vect und PCINT9_vect vorhanden + // DDRC = 0x00; // Data direction register C as input for SW1 and SW2 + // PORTC |= (1< PINC0 and SW2 -> PINC1 cli(); // clear global interrupt flag: interrupts will be immediately disabled - b6: f8 94 cli + b4: f8 94 cli PCICR |= 0x01; // Pin Change Interrupt Control Register: turn on PortB - b8: e8 e6 ldi r30, 0x68 ; 104 - ba: f0 e0 ldi r31, 0x00 ; 0 - bc: 80 81 ld r24, Z - be: 81 60 ori r24, 0x01 ; 1 - c0: 80 83 st Z, r24 - PCMSK0 |= (1 << PINB1) | (1 << PINB2); // trigger interrupt when PB1's and PB2's state changes - c2: eb e6 ldi r30, 0x6B ; 107 - c4: f0 e0 ldi r31, 0x00 ; 0 - c6: 80 81 ld r24, Z - c8: 86 60 ori r24, 0x06 ; 6 - ca: 80 83 st Z, r24 + b6: e8 e6 ldi r30, 0x68 ; 104 + b8: f0 e0 ldi r31, 0x00 ; 0 + ba: 80 81 ld r24, Z + bc: 81 60 ori r24, 0x01 ; 1 + be: 80 83 st Z, r24 + PCMSK0 |= (1 << PINB1) | (1 << PINB2); // trigger interrupt when SW1 or SW2 is pressed + c0: eb e6 ldi r30, 0x6B ; 107 + c2: f0 e0 ldi r31, 0x00 ; 0 + c4: 80 81 ld r24, Z + c6: 86 60 ori r24, 0x06 ; 6 + c8: 80 83 st Z, r24 sei(); // set global interrupt enable - cc: 78 94 sei - ce: 08 95 ret + ca: 78 94 sei + cc: 08 95 ret -000000d0 <__vector_3>: -*/ +000000ce <__vector_3>: +#include "keys.h" +#include "sevenseg.h" -int numbersAsSegments[10] = { 192, 249, 164, 48, 153, 146, 130, 248, 128, 144 }; // display number from 0 to 9; -volatile uint32_t count = 0; +volatile int count = 0; -ISR(PCINT0_vect){ - d0: 1f 92 push r1 - d2: 0f 92 push r0 - d4: 0f b6 in r0, 0x3f ; 63 - d6: 0f 92 push r0 - d8: 11 24 eor r1, r1 - da: 8f 93 push r24 - dc: 9f 93 push r25 - de: af 93 push r26 - e0: bf 93 push r27 - if (bit_is_clear(PINB, PINB1)) { // sw1 is pressed - e2: 19 99 sbic 0x03, 1 ; 3 - e4: 2b c0 rjmp .+86 ; 0x13c <__vector_3+0x6c> +ISR(PCINT0_vect) { // every 10ms interrupt is triggered + ce: 1f 92 push r1 + d0: 0f 92 push r0 + d2: 0f b6 in r0, 0x3f ; 63 + d4: 0f 92 push r0 + d6: 11 24 eor r1, r1 + d8: 8f 93 push r24 + da: 9f 93 push r25 + if (!(PINB & (1< if (count == 0) { - e6: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> - ea: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> - ee: a0 91 16 01 lds r26, 0x0116 ; 0x800116 <__data_end+0x2> - f2: b0 91 17 01 lds r27, 0x0117 ; 0x800117 <__data_end+0x3> - f6: 89 2b or r24, r25 - f8: 8a 2b or r24, r26 - fa: 8b 2b or r24, r27 - fc: 61 f4 brne .+24 ; 0x116 <__vector_3+0x46> - count = 100; // if count == 0 and sw1 is pressed, set count = 100 then minus 1 and leds will display 99 - fe: 84 e6 ldi r24, 0x64 ; 100 - 100: 90 e0 ldi r25, 0x00 ; 0 - 102: a0 e0 ldi r26, 0x00 ; 0 - 104: b0 e0 ldi r27, 0x00 ; 0 - 106: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> - 10a: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> - 10e: a0 93 16 01 sts 0x0116, r26 ; 0x800116 <__data_end+0x2> - 112: b0 93 17 01 sts 0x0117, r27 ; 0x800117 <__data_end+0x3> + e0: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> + e4: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> + e8: 89 2b or r24, r25 + ea: 31 f4 brne .+12 ; 0xf8 <__vector_3+0x2a> + count = 100; // 100 - 1 = 99 + ec: 84 e6 ldi r24, 0x64 ; 100 + ee: 90 e0 ldi r25, 0x00 ; 0 + f0: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> + f4: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> } count--; - 116: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> - 11a: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> - 11e: a0 91 16 01 lds r26, 0x0116 ; 0x800116 <__data_end+0x2> - 122: b0 91 17 01 lds r27, 0x0117 ; 0x800117 <__data_end+0x3> - 126: 01 97 sbiw r24, 0x01 ; 1 - 128: a1 09 sbc r26, r1 - 12a: b1 09 sbc r27, r1 - 12c: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> - 130: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> - 134: a0 93 16 01 sts 0x0116, r26 ; 0x800116 <__data_end+0x2> - 138: b0 93 17 01 sts 0x0117, r27 ; 0x800117 <__data_end+0x3> + f8: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> + fc: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> + 100: 01 97 sbiw r24, 0x01 ; 1 + 102: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> + 106: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> + 10a: 18 c0 rjmp .+48 ; 0x13c <__vector_3+0x6e> } - if (bit_is_clear(PINB, PINB2)) { // sw2 is pressed - 13c: 1a 99 sbic 0x03, 2 ; 3 - 13e: 2b c0 rjmp .+86 ; 0x196 <__vector_3+0xc6> + else if (!(PINB & (1< if (count == 99) { - 140: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> - 144: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> - 148: a0 91 16 01 lds r26, 0x0116 ; 0x800116 <__data_end+0x2> - 14c: b0 91 17 01 lds r27, 0x0117 ; 0x800117 <__data_end+0x3> - 150: 83 36 cpi r24, 0x63 ; 99 - 152: 91 05 cpc r25, r1 - 154: a1 05 cpc r26, r1 - 156: b1 05 cpc r27, r1 - 158: 59 f4 brne .+22 ; 0x170 <__vector_3+0xa0> - count = -1; // if count == 99 and sw2 is pressed, set count = -1 then plus 1 and leds will display 00 - 15a: 8f ef ldi r24, 0xFF ; 255 - 15c: 9f ef ldi r25, 0xFF ; 255 - 15e: dc 01 movw r26, r24 - 160: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> - 164: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> - 168: a0 93 16 01 sts 0x0116, r26 ; 0x800116 <__data_end+0x2> - 16c: b0 93 17 01 sts 0x0117, r27 ; 0x800117 <__data_end+0x3> + 110: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> + 114: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> + 118: 83 36 cpi r24, 0x63 ; 99 + 11a: 91 05 cpc r25, r1 + 11c: 31 f4 brne .+12 ; 0x12a <__vector_3+0x5c> + count = -1; // -1 + 1 = 0 + 11e: 8f ef ldi r24, 0xFF ; 255 + 120: 9f ef ldi r25, 0xFF ; 255 + 122: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> + 126: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> } count++; - 170: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> - 174: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> - 178: a0 91 16 01 lds r26, 0x0116 ; 0x800116 <__data_end+0x2> - 17c: b0 91 17 01 lds r27, 0x0117 ; 0x800117 <__data_end+0x3> - 180: 01 96 adiw r24, 0x01 ; 1 - 182: a1 1d adc r26, r1 - 184: b1 1d adc r27, r1 - 186: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> - 18a: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> - 18e: a0 93 16 01 sts 0x0116, r26 ; 0x800116 <__data_end+0x2> - 192: b0 93 17 01 sts 0x0117, r27 ; 0x800117 <__data_end+0x3> + 12a: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> + 12e: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> + 132: 01 96 adiw r24, 0x01 ; 1 + 134: 90 93 15 01 sts 0x0115, r25 ; 0x800115 <__data_end+0x1> + 138: 80 93 14 01 sts 0x0114, r24 ; 0x800114 <__data_end> } } - 196: bf 91 pop r27 - 198: af 91 pop r26 - 19a: 9f 91 pop r25 - 19c: 8f 91 pop r24 - 19e: 0f 90 pop r0 - 1a0: 0f be out 0x3f, r0 ; 63 - 1a2: 0f 90 pop r0 - 1a4: 1f 90 pop r1 - 1a6: 18 95 reti + 13c: 9f 91 pop r25 + 13e: 8f 91 pop r24 + 140: 0f 90 pop r0 + 142: 0f be out 0x3f, r0 ; 63 + 144: 0f 90 pop r0 + 146: 1f 90 pop r1 + 148: 18 95 reti -000001a8
: +0000014a
: -int main(void) -{ - init(); // initializing SW1 and SW2 - 1a8: 0e 94 53 00 call 0xa6 ; 0xa6 +int main(void) { + init(); + 14a: 0e 94 53 00 call 0xa6 ; 0xa6 while(1) { - int led03 = count % 10; // Segmentanzeige für Zehner - 1ac: 0f 2e mov r0, r31 - 1ae: fa e0 ldi r31, 0x0A ; 10 - 1b0: 8f 2e mov r8, r31 - 1b2: 91 2c mov r9, r1 - 1b4: a1 2c mov r10, r1 - 1b6: b1 2c mov r11, r1 - 1b8: f0 2d mov r31, r0 - display(true, led03, numbersAsSegments); - - int led02 = count - led03 * 10; // Segmentanzeige für Einer - display(false, led02, numbersAsSegments); - 1ba: 16 ef ldi r17, 0xF6 ; 246 -int main(void) -{ - init(); // initializing SW1 and SW2 - - while(1) { - int led03 = count % 10; // Segmentanzeige für Zehner - 1bc: 60 91 14 01 lds r22, 0x0114 ; 0x800114 <__data_end> - 1c0: 70 91 15 01 lds r23, 0x0115 ; 0x800115 <__data_end+0x1> - 1c4: 80 91 16 01 lds r24, 0x0116 ; 0x800116 <__data_end+0x2> - 1c8: 90 91 17 01 lds r25, 0x0117 ; 0x800117 <__data_end+0x3> - 1cc: a5 01 movw r20, r10 - 1ce: 94 01 movw r18, r8 - 1d0: 0e 94 1b 01 call 0x236 ; 0x236 <__udivmodsi4> - 1d4: 6b 01 movw r12, r22 - 1d6: 7c 01 movw r14, r24 - display(true, led03, numbersAsSegments); - 1d8: 40 e0 ldi r20, 0x00 ; 0 - 1da: 51 e0 ldi r21, 0x01 ; 1 - 1dc: 81 e0 ldi r24, 0x01 ; 1 - 1de: 0e 94 07 01 call 0x20e ; 0x20e - - int led02 = count - led03 * 10; // Segmentanzeige für Einer - 1e2: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> - 1e6: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> - 1ea: a0 91 16 01 lds r26, 0x0116 ; 0x800116 <__data_end+0x2> - 1ee: b0 91 17 01 lds r27, 0x0117 ; 0x800117 <__data_end+0x3> - display(false, led02, numbersAsSegments); - 1f2: 96 01 movw r18, r12 - 1f4: 12 03 mulsu r17, r18 - 1f6: b0 01 movw r22, r0 - 1f8: 13 9f mul r17, r19 - 1fa: 70 0d add r23, r0 - 1fc: 11 24 eor r1, r1 - 1fe: 68 0f add r22, r24 - 200: 79 1f adc r23, r25 - 202: 40 e0 ldi r20, 0x00 ; 0 - 204: 51 e0 ldi r21, 0x01 ; 1 - 206: 80 e0 ldi r24, 0x00 ; 0 - 208: 0e 94 07 01 call 0x20e ; 0x20e - 20c: d7 cf rjmp .-82 ; 0x1bc + display(count); + 14e: 80 91 14 01 lds r24, 0x0114 ; 0x800114 <__data_end> + 152: 90 91 15 01 lds r25, 0x0115 ; 0x800115 <__data_end+0x1> + 156: 0e 94 ae 00 call 0x15c ; 0x15c + 15a: f9 cf rjmp .-14 ; 0x14e -0000020e : +0000015c : #include "sevenseg.h" -#include -void display(bool tens, int num, int numList[]) { +void display(int count) { + 15c: 0f 93 push r16 + 15e: 1f 93 push r17 + 160: cf 93 push r28 + 162: df 93 push r29 + 164: cd b7 in r28, 0x3d ; 61 + 166: de b7 in r29, 0x3e ; 62 + 168: 68 97 sbiw r28, 0x18 ; 24 + 16a: 0f b6 in r0, 0x3f ; 63 + 16c: f8 94 cli + 16e: de bf out 0x3e, r29 ; 62 + 170: 0f be out 0x3f, r0 ; 63 + 172: cd bf out 0x3d, r28 ; 61 + 174: 9c 01 movw r18, r24 + 7 : 1111 1000 = F8 248 + 8 : 1000 0000 = 80 128 + 9 : 1001 0000 = 90 144 + */ - PORTD = numList[num]; // Displays the Number on PortD - 20e: 66 0f add r22, r22 - 210: 77 1f adc r23, r23 - 212: fa 01 movw r30, r20 - 214: e6 0f add r30, r22 - 216: f7 1f adc r31, r23 - 218: 90 81 ld r25, Z - 21a: 9b b9 out 0x0b, r25 ; 11 + int numbersAsSegments[10] = { 192, 249, 164, 48, 153, 146, 130, 248, 128, 144 }; // display number from 0 to 9; + 176: 84 e1 ldi r24, 0x14 ; 20 + 178: e0 e0 ldi r30, 0x00 ; 0 + 17a: f1 e0 ldi r31, 0x01 ; 1 + 17c: de 01 movw r26, r28 + 17e: 11 96 adiw r26, 0x01 ; 1 + 180: 01 90 ld r0, Z+ + 182: 0d 92 st X+, r0 + 184: 8a 95 dec r24 + 186: e1 f7 brne .-8 ; 0x180 + + volatile int led_Einer = numbersAsSegments[(int) count % 10]; // Segmentanzeige für Zehner + 188: 0a e0 ldi r16, 0x0A ; 10 + 18a: 10 e0 ldi r17, 0x00 ; 0 + 18c: c9 01 movw r24, r18 + 18e: b8 01 movw r22, r16 + 190: 0e 94 0f 01 call 0x21e ; 0x21e <__divmodhi4> + 194: fc 01 movw r30, r24 + 196: ee 0f add r30, r30 + 198: ff 1f adc r31, r31 + 19a: 41 e0 ldi r20, 0x01 ; 1 + 19c: 50 e0 ldi r21, 0x00 ; 0 + 19e: 4c 0f add r20, r28 + 1a0: 5d 1f adc r21, r29 + 1a2: e4 0f add r30, r20 + 1a4: f5 1f adc r31, r21 + 1a6: 40 81 ld r20, Z + 1a8: 51 81 ldd r21, Z+1 ; 0x01 + 1aa: 5e 8b std Y+22, r21 ; 0x16 + 1ac: 4d 8b std Y+21, r20 ; 0x15 + volatile int led_Zehner = numbersAsSegments[(int) (count - (count % 10)) / 10]; // Segmentanzeige für Einer + 1ae: f9 01 movw r30, r18 + 1b0: e8 1b sub r30, r24 + 1b2: f9 0b sbc r31, r25 + 1b4: cf 01 movw r24, r30 + 1b6: b8 01 movw r22, r16 + 1b8: 0e 94 0f 01 call 0x21e ; 0x21e <__divmodhi4> + 1bc: fb 01 movw r30, r22 + 1be: ee 0f add r30, r30 + 1c0: ff 1f adc r31, r31 + 1c2: 41 e0 ldi r20, 0x01 ; 1 + 1c4: 50 e0 ldi r21, 0x00 ; 0 + 1c6: 4c 0f add r20, r28 + 1c8: 5d 1f adc r21, r29 + 1ca: e4 0f add r30, r20 + 1cc: f5 1f adc r31, r21 + 1ce: 80 81 ld r24, Z + 1d0: 91 81 ldd r25, Z+1 ; 0x01 + 1d2: 98 8f std Y+24, r25 ; 0x18 + 1d4: 8f 8b std Y+23, r24 ; 0x17 + + PORTD = led_Einer; + 1d6: 8d 89 ldd r24, Y+21 ; 0x15 + 1d8: 9e 89 ldd r25, Y+22 ; 0x16 + 1da: 8b b9 out 0x0b, r24 ; 11 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 21c: ef e3 ldi r30, 0x3F ; 63 - 21e: fc e9 ldi r31, 0x9C ; 156 - 220: 31 97 sbiw r30, 0x01 ; 1 - 222: f1 f7 brne .-4 ; 0x220 - 224: 00 c0 rjmp .+0 ; 0x226 - 226: 00 00 nop + 1dc: 8f e3 ldi r24, 0x3F ; 63 + 1de: 9c e9 ldi r25, 0x9C ; 156 + 1e0: 01 97 sbiw r24, 0x01 ; 1 + 1e2: f1 f7 brne .-4 ; 0x1e0 + 1e4: 00 c0 rjmp .+0 ; 0x1e6 + 1e6: 00 00 nop _delay_ms(10); + PORTB ^= (1 << PINB0); + 1e8: 95 b1 in r25, 0x05 ; 5 + 1ea: 81 e0 ldi r24, 0x01 ; 1 + 1ec: 98 27 eor r25, r24 + 1ee: 95 b9 out 0x05, r25 ; 5 - if(tens) { - 228: 88 23 and r24, r24 - 22a: 19 f0 breq .+6 ; 0x232 - PORTB = 1; - 22c: 81 e0 ldi r24, 0x01 ; 1 - 22e: 85 b9 out 0x05, r24 ; 5 - 230: 08 95 ret - } - else { - PORTB = 0; - 232: 15 b8 out 0x05, r1 ; 5 - 234: 08 95 ret + PORTD = led_Zehner; + 1f0: 2f 89 ldd r18, Y+23 ; 0x17 + 1f2: 38 8d ldd r19, Y+24 ; 0x18 + 1f4: 2b b9 out 0x0b, r18 ; 11 + 1f6: ef e3 ldi r30, 0x3F ; 63 + 1f8: fc e9 ldi r31, 0x9C ; 156 + 1fa: 31 97 sbiw r30, 0x01 ; 1 + 1fc: f1 f7 brne .-4 ; 0x1fa + 1fe: 00 c0 rjmp .+0 ; 0x200 + 200: 00 00 nop + _delay_ms(10); + PORTB ^= (1 << PINB0); + 202: 95 b1 in r25, 0x05 ; 5 + 204: 89 27 eor r24, r25 + 206: 85 b9 out 0x05, r24 ; 5 +} + 208: 68 96 adiw r28, 0x18 ; 24 + 20a: 0f b6 in r0, 0x3f ; 63 + 20c: f8 94 cli + 20e: de bf out 0x3e, r29 ; 62 + 210: 0f be out 0x3f, r0 ; 63 + 212: cd bf out 0x3d, r28 ; 61 + 214: df 91 pop r29 + 216: cf 91 pop r28 + 218: 1f 91 pop r17 + 21a: 0f 91 pop r16 + 21c: 08 95 ret -00000236 <__udivmodsi4>: - 236: a1 e2 ldi r26, 0x21 ; 33 - 238: 1a 2e mov r1, r26 - 23a: aa 1b sub r26, r26 - 23c: bb 1b sub r27, r27 - 23e: fd 01 movw r30, r26 - 240: 0d c0 rjmp .+26 ; 0x25c <__udivmodsi4_ep> +0000021e <__divmodhi4>: + 21e: 97 fb bst r25, 7 + 220: 07 2e mov r0, r23 + 222: 16 f4 brtc .+4 ; 0x228 <__divmodhi4+0xa> + 224: 00 94 com r0 + 226: 07 d0 rcall .+14 ; 0x236 <__divmodhi4_neg1> + 228: 77 fd sbrc r23, 7 + 22a: 09 d0 rcall .+18 ; 0x23e <__divmodhi4_neg2> + 22c: 0e 94 23 01 call 0x246 ; 0x246 <__udivmodhi4> + 230: 07 fc sbrc r0, 7 + 232: 05 d0 rcall .+10 ; 0x23e <__divmodhi4_neg2> + 234: 3e f4 brtc .+14 ; 0x244 <__divmodhi4_exit> -00000242 <__udivmodsi4_loop>: - 242: aa 1f adc r26, r26 - 244: bb 1f adc r27, r27 - 246: ee 1f adc r30, r30 - 248: ff 1f adc r31, r31 - 24a: a2 17 cp r26, r18 - 24c: b3 07 cpc r27, r19 - 24e: e4 07 cpc r30, r20 - 250: f5 07 cpc r31, r21 - 252: 20 f0 brcs .+8 ; 0x25c <__udivmodsi4_ep> - 254: a2 1b sub r26, r18 - 256: b3 0b sbc r27, r19 - 258: e4 0b sbc r30, r20 - 25a: f5 0b sbc r31, r21 +00000236 <__divmodhi4_neg1>: + 236: 90 95 com r25 + 238: 81 95 neg r24 + 23a: 9f 4f sbci r25, 0xFF ; 255 + 23c: 08 95 ret -0000025c <__udivmodsi4_ep>: - 25c: 66 1f adc r22, r22 - 25e: 77 1f adc r23, r23 - 260: 88 1f adc r24, r24 - 262: 99 1f adc r25, r25 - 264: 1a 94 dec r1 - 266: 69 f7 brne .-38 ; 0x242 <__udivmodsi4_loop> - 268: 60 95 com r22 - 26a: 70 95 com r23 - 26c: 80 95 com r24 - 26e: 90 95 com r25 - 270: 9b 01 movw r18, r22 - 272: ac 01 movw r20, r24 - 274: bd 01 movw r22, r26 - 276: cf 01 movw r24, r30 - 278: 08 95 ret +0000023e <__divmodhi4_neg2>: + 23e: 70 95 com r23 + 240: 61 95 neg r22 + 242: 7f 4f sbci r23, 0xFF ; 255 -0000027a <_exit>: - 27a: f8 94 cli +00000244 <__divmodhi4_exit>: + 244: 08 95 ret -0000027c <__stop_program>: - 27c: ff cf rjmp .-2 ; 0x27c <__stop_program> +00000246 <__udivmodhi4>: + 246: aa 1b sub r26, r26 + 248: bb 1b sub r27, r27 + 24a: 51 e1 ldi r21, 0x11 ; 17 + 24c: 07 c0 rjmp .+14 ; 0x25c <__udivmodhi4_ep> + +0000024e <__udivmodhi4_loop>: + 24e: aa 1f adc r26, r26 + 250: bb 1f adc r27, r27 + 252: a6 17 cp r26, r22 + 254: b7 07 cpc r27, r23 + 256: 10 f0 brcs .+4 ; 0x25c <__udivmodhi4_ep> + 258: a6 1b sub r26, r22 + 25a: b7 0b sbc r27, r23 + +0000025c <__udivmodhi4_ep>: + 25c: 88 1f adc r24, r24 + 25e: 99 1f adc r25, r25 + 260: 5a 95 dec r21 + 262: a9 f7 brne .-22 ; 0x24e <__udivmodhi4_loop> + 264: 80 95 com r24 + 266: 90 95 com r25 + 268: bc 01 movw r22, r24 + 26a: cd 01 movw r24, r26 + 26c: 08 95 ret + +0000026e <_exit>: + 26e: f8 94 cli + +00000270 <__stop_program>: + 270: ff cf rjmp .-2 ; 0x270 <__stop_program> diff --git a/P4/P4/Debug/P4.map b/P4/P4/Debug/P4.map index 72301e9..3eddb4f 100644 --- a/P4/P4/Debug/P4.map +++ b/P4/P4/Debug/P4.map @@ -1,13 +1,15 @@ 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/5.4.0/avr5\libgcc.a(_udivmodsi4.o) - main.o (__udivmodsi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + sevenseg.o (__divmodhi4) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o (exit) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) - main.o (__do_copy_data) + sevenseg.o (__do_copy_data) c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\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/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) (__udivmodhi4) Discarded input sections @@ -22,20 +24,20 @@ Discarded input sections .text 0x00000000 0x0 sevenseg.o .data 0x00000000 0x0 sevenseg.o .bss 0x00000000 0x0 sevenseg.o - .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) - .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\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/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text.libgcc.fixed - 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) @@ -84,6 +86,20 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) Memory Configuration @@ -211,7 +227,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x27e +.text 0x00000000 0x272 *(.vectors) .vectors 0x00000000 0x68 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o 0x00000000 __vector_default @@ -297,23 +313,27 @@ END GROUP 0x000000a2 __vector_20 0x000000a6 . = ALIGN (0x2) *(.text.*) - .text.init 0x000000a6 0x2a keys.o + .text.init 0x000000a6 0x28 keys.o 0x000000a6 init .text.__vector_3 - 0x000000d0 0xd8 main.o - 0x000000d0 __vector_3 - .text.main 0x000001a8 0x66 main.o - 0x000001a8 main - .text.display 0x0000020e 0x28 sevenseg.o - 0x0000020e display + 0x000000ce 0x7c main.o + 0x000000ce __vector_3 + .text.main 0x0000014a 0x12 main.o + 0x0000014a main + .text.display 0x0000015c 0xc2 sevenseg.o + 0x0000015c display .text.libgcc.div - 0x00000236 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) - 0x00000236 __udivmodsi4 - 0x0000027a . = ALIGN (0x2) + 0x0000021e 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + 0x0000021e _div + 0x0000021e __divmodhi4 + .text.libgcc.div + 0x00000246 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + 0x00000246 __udivmodhi4 + 0x0000026e . = ALIGN (0x2) *(.fini9) - .fini9 0x0000027a 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) - 0x0000027a _exit - 0x0000027a exit + .fini9 0x0000026e 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + 0x0000026e _exit + 0x0000026e exit *(.fini9) *(.fini8) *(.fini8) @@ -332,41 +352,39 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000027a 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .fini0 0x0000026e 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) *(.fini0) - 0x0000027e _etext = . + 0x00000272 _etext = . -.data 0x00800100 0x14 load address 0x0000027e +.data 0x00800100 0x14 load address 0x00000272 0x00800100 PROVIDE (__data_start, .) *(.data) *(.data*) - .data.numbersAsSegments - 0x00800100 0x14 main.o - 0x00800100 numbersAsSegments *(.gnu.linkonce.d*) *(.rodata) + .rodata 0x00800100 0x14 sevenseg.o *(.rodata*) *(.gnu.linkonce.r*) 0x00800114 . = ALIGN (0x2) 0x00800114 _edata = . 0x00800114 PROVIDE (__data_end, .) -.bss 0x00800114 0x4 +.bss 0x00800114 0x2 0x00800114 PROVIDE (__bss_start, .) *(.bss) *(.bss*) - .bss.count 0x00800114 0x4 main.o + .bss.count 0x00800114 0x2 main.o 0x00800114 count *(COMMON) - 0x00800118 PROVIDE (__bss_end, .) - 0x0000027e __data_load_start = LOADADDR (.data) - 0x00000292 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800116 PROVIDE (__bss_end, .) + 0x00000272 __data_load_start = LOADADDR (.data) + 0x00000286 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800118 0x0 +.noinit 0x00800116 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x00800118 _end = . + 0x00800116 _end = . [!provide] PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 @@ -445,47 +463,47 @@ END GROUP .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x944 +.debug_info 0x00000000 0x8f2 *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o .debug_info 0x000005f4 0x82 keys.o - .debug_info 0x00000676 0x189 main.o - .debug_info 0x000007ff 0x145 sevenseg.o + .debug_info 0x00000676 0xe6 main.o + .debug_info 0x0000075c 0x196 sevenseg.o -.debug_abbrev 0x00000000 0x7e4 +.debug_abbrev 0x00000000 0x797 *(.debug_abbrev) .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o .debug_abbrev 0x000005a2 0x4f keys.o - .debug_abbrev 0x000005f1 0x104 main.o - .debug_abbrev 0x000006f5 0xef sevenseg.o + .debug_abbrev 0x000005f1 0xa5 main.o + .debug_abbrev 0x00000696 0x101 sevenseg.o -.debug_line 0x00000000 0x458 +.debug_line 0x00000000 0x448 *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o - .debug_line 0x00000133 0xcb keys.o - .debug_line 0x000001fe 0x133 main.o - .debug_line 0x00000331 0x127 sevenseg.o + .debug_line 0x00000133 0xc3 keys.o + .debug_line 0x000001f6 0x107 main.o + .debug_line 0x000002fd 0x14b sevenseg.o -.debug_frame 0x00000000 0x9c +.debug_frame 0x00000000 0xac *(.debug_frame) .debug_frame 0x00000000 0x24 keys.o - .debug_frame 0x00000024 0x54 main.o - .debug_frame 0x00000078 0x24 sevenseg.o + .debug_frame 0x00000024 0x48 main.o + .debug_frame 0x0000006c 0x40 sevenseg.o -.debug_str 0x00000000 0x430 +.debug_str 0x00000000 0x41d *(.debug_str) .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o .debug_str 0x00000208 0x160 keys.o 0x194 (size before relaxing) - .debug_str 0x00000368 0x63 main.o - 0x1eb (size before relaxing) - .debug_str 0x000003cb 0x65 sevenseg.o - 0x1f9 (size before relaxing) + .debug_str 0x00000368 0x2a main.o + 0x1b2 (size before relaxing) + .debug_str 0x00000392 0x8b sevenseg.o + 0x21c (size before relaxing) -.debug_loc 0x00000000 0x118 +.debug_loc 0x00000000 0x170 *(.debug_loc) - .debug_loc 0x00000000 0x7e main.o - .debug_loc 0x0000007e 0x9a sevenseg.o + .debug_loc 0x00000000 0x49 main.o + .debug_loc 0x00000049 0x127 sevenseg.o .debug_macinfo *(.debug_macinfo) diff --git a/P4/P4/Debug/P4.srec b/P4/P4/Debug/P4.srec index 819d14a..aeb9e3c 100644 --- a/P4/P4/Debug/P4.srec +++ b/P4/P4/Debug/P4.srec @@ -1,44 +1,44 @@ S00A000050342E7372656396 -S11300000C9434000C9451000C9451000C9468002E +S11300000C9434000C9451000C9451000C9467002F S11300100C9451000C9451000C9451000C94510018 S11300200C9451000C9451000C9451000C94510008 S11300300C9451000C9451000C9451000C945100F8 S11300400C9451000C9451000C9451000C945100E8 S11300500C9451000C9451000C9451000C945100D8 S11300600C9451000C94510011241FBECFEFD8E022 -S1130070DEBFCDBF11E0A0E0B1E0EEE7F2E002C0E8 +S1130070DEBFCDBF11E0A0E0B1E0E2E7F2E002C0F4 S113008005900D92A431B107D9F721E0A4E1B1E0C4 -S113009001C01D92A831B207E1F70E94D4000C946C -S11300A03D010C9400008FEF8AB981E08BB984B9CB -S11300B085B1866085B9F894E8E6F0E080818160D6 -S11300C08083EBE6F0E080818660808378940895F5 -S11300D01F920F920FB60F9211248F939F93AF9399 -S11300E0BF9319992BC08091140190911501A0918F -S11300F01601B0911701892B8A2B8B2B61F484E6AE -S113010090E0A0E0B0E08093140190931501A093D7 -S11301101601B09317018091140190911501A091DB -S11301201601B09117010197A109B1098093140137 -S113013090931501A0931601B09317011A992BC03F -S11301408091140190911501A0911601B0911701AD -S113015083369105A105B10559F48FEF9FEFDC01BA -S11301608093140190931501A0931601B093170185 -S11301708091140190911501A0911601B09117017D -S11301800196A11DB11D8093140190931501A093B4 -S11301901601B0931701BF91AF919F918F910F906A -S11301A00FBE0F901F9018950E9453000F2EFAE077 -S11301B08F2E912CA12CB12CF02D16EF60911401EF -S11301C0709115018091160190911701A501940178 -S11301D00E941B016B017C0140E051E081E00E9420 -S11301E007018091140190911501A0911601B0911D -S11301F0170196011203B001139F700D1124680FAB -S1130200791F40E051E080E00E940701D7CF660FDC -S1130210771FFA01E60FF71F90819BB9EFE3FCE922 -S11302203197F1F700C00000882319F081E085B907 -S1130230089515B80895A1E21A2EAA1BBB1BFD014F -S11302400DC0AA1FBB1FEE1FFF1FA217B307E407B1 -S1130250F50720F0A21BB30BE40BF50B661F771F09 -S1130260881F991F1A9469F76095709580959095E9 -S11102709B01AC01BD01CF010895F894FFCFAE -S113027EC000F900A4003000990092008200F8003A -S107028E8000900058 +S113009001C01D92A631B207E1F70E94A5000C949D +S11300A037010C9400008FEF8AB981E084B985B1DF +S11300B0866085B9F894E8E6F0E080818160808309 +S11300C0EBE6F0E0808186608083789408951F9247 +S11300D00F920FB60F9211248F939F93199916C004 +S11300E08091140190911501892B31F484E690E0FC +S11300F0909315018093140180911401909115013E +S11301000197909315018093140118C01A9916C091 +S113011080911401909115018336910531F48FEF8C +S11301209FEF909315018093140180911401909195 +S11301301501019690931501809314019F918F915D +S11301400F900FBE0F901F9018950E94530080913E +S11301501401909115010E94AE00F9CF0F931F93E3 +S1130160CF93DF93CDB7DEB768970FB6F894DEBFB1 +S11301700FBECDBF9C0184E1E0E0F1E0DE01119609 +S113018001900D928A95E1F70AE010E0C901B801E7 +S11301900E940F01FC01EE0FFF1F41E050E04C0FE5 +S11301A05D1FE40FF51F408151815E8B4D8BF9017A +S11301B0E81BF90BCF01B8010E940F01FB01EE0F00 +S11301C0FF1F41E050E04C0F5D1FE40FF51F8081DD +S11301D09181988F8F8B8D899E898BB98FE39CE950 +S11301E00197F1F700C0000095B181E0982795B917 +S11301F02F89388D2BB9EFE3FCE93197F1F700C073 +S1130200000095B1892785B968960FB6F894DEBFCA +S11302100FBECDBFDF91CF911F910F91089597FB32 +S1130220072E16F4009407D077FD09D00E9423010D +S113023007FC05D03EF4909581959F4F08957095E5 +S113024061957F4F0895AA1BBB1B51E107C0AA1FEC +S1130250BB1FA617B70710F0A61BB70B881F991F63 +S11302605A95A9F780959095BC01CD010895F8940D +S1050270FFCFBA +S1130272C000F900A4003000990092008200F80046 +S10702828000900064 S9030000FC diff --git a/P4/P4/Debug/keys.o b/P4/P4/Debug/keys.o index 675552c41289e38586caa8fef78bb2ce7601e211..5e9b0548c75f385043ae924f2b774b6ac044b135 100644 GIT binary patch delta 338 zcmXYry-I^I7)JB@<@;5OKeSREY>n_`ac~q}-0cMj6?7C`yaM$Gq~Sqva1sSwT-re$ zbZ~OiSsVnxN$BY2lQw~zb4Xr7?rT@IPD4Iiv+mYTMZ5O{vFN9B@{Db9)u~8wr6kh1 zCS}01TN(Kh{6-66yOVlVs8&2pVJ9(%Rt=XFLu<;nKR*fWZ_c>q!^}l!KYJNEqi;f2 z=)2GpbT9NQ{TOsi7-?X+D5Zx@@(0JH#w}^_Mvmc++(2`5<{#pwJ52xp delta 371 zcmXYsu}i~16o=nSa!D>O(MYYBU?pfIAnxMg(7B5aE_HDehi)!Ka1sPDJPMt}plm%YGdO_CY?xL z{gC_e;b-a-YpwBGtV3Rv6`k>}Y=JH5g2yt{nc88Z7kSsIx^RgO WAFN9cT$g)rT7H5|Z7QOT>h^!QRYHmY diff --git a/P4/P4/Debug/main.d b/P4/P4/Debug/main.d index 3a39ffd..9b24ad8 100644 --- a/P4/P4/Debug/main.d +++ b/P4/P4/Debug/main.d @@ -14,8 +14,7 @@ main.d main.o: .././main.c .././keys.h \ .././sevenseg.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\lib\gcc\avr\5.4.0\include\stdbool.h + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h .././keys.h: @@ -50,5 +49,3 @@ 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\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\lib\gcc\avr\5.4.0\include\stdbool.h: diff --git a/P4/P4/Debug/main.o b/P4/P4/Debug/main.o index d1aacd60af5733a82fa02d5734f9c9cd5f62750d..0bcd2e7299d0497256eb72d901e049539b94b89e 100644 GIT binary patch literal 4560 zcma)8ZD<_F8J^v}lVnLfMY5ebai}-cAv~?(-KfU%caz*f_T?#2VUj4_Mcp`Ec!nwTnWWV^ezTC9M$~cN+fR-?v`0uATq* z^2gfV8S$dlTwXuFKCm|M*1+1XwH+^%p5Kg0EHECgCTzQ#l3gg~ESGw6sYgmhIfK<@W=JT}+HM`jz>dke;M&#|XynL0Xz(6` z%W18`JAhVEE@%tK_HG`8-E9a?x3C7SdrDjToYKzH>8?R**18Rwv3HBUzDJ?Nu5K4j zX|nH;zT;c5JEg}oMNb^+&n@@%4_ZUkRM$&~k)kfo+SDK4`mB{3dttN?q5HY-Sz^!{ z1?(B?L_XAS_X@FPTyT{KZa&wVL!1omzUa*I^ZQZOwtyV@ephr(_&b*2<0 zeOvJ%#s3>~a0<4#1Q*--wA3q5;XD`1^Y(b6GU+cTty&T`-GzE1O5NeJ6Z`J-!>k!K z{4{G<>n(r3H{xflR->{Q)?+_hNhV}huEp*04SK&GR~qeVBt#RQUWMns6s@M-B2gNx zL~$C`l$2FbXTWl6McHq2tSu#Bp)bh3AHBUL@3$Fx`e^--;23O59jEnL993QHE)hpho_3Es{IEOjjd>$(xfz!i8ezJ4aFn=J zPM7M-<@t6EQnS)Nh*XTb<=R7T`Kxe9v+6;l1f$CfI%=6wO?keaE!3k%HH8vhm8{;1 z%V{Jzb=5EnO?f%2EFp5zu4J&Li>)LpM{&EEibgB0xq2R#cb1#m+z&O<=ktzj*d_wg zOy?t${^>MIQhzR72$%f1)wtDY)mCSc`by-VK6%{V>$!7LGfJ~4@yGX$j_h}*XAghH zKb3?_S$zp>LQw`CLs?%3;q0H<-S65zLDjj? zY2vM!E;&!z)1|^WXQotqxiDSox>Ph@$y?nhgy~R0d~&@b05~jdgB*2NwaS49U${rL z0^~F3M>(SNa41>6uM)F!1TKd`j_5Na+RbcG z#_cl5ky+kUIO4{PIbz$U5y%m@-z0Ar2b6~AF(eA&sFL{z3?f@kD4CImu%B5alktqd zev=&BBvyUB>AZsoMNmP^gTT#;L2%X~0UkQ1uQW zOvez59K`c;P;#tV`dg~J=);fgJ>a|_#H8(L#CKy6oW`ONL_bTF9`i<@*Wfd%a33(w zgZeLmpHTRp;ByMU03Yt1K7R%e72XOx_e=dXaORizhtRi)xjE1(8ZqnmJH!L%K+mAj z|0?(zvASZwAhz*=H;d; zzt%xLUT7hh#NqsW60N9sxvJ5s+#rWZ7}p{_XYO+gRihq9Ix3beFmbaP;g5hh^#cBu z;?Ly&O*`R8^foawZnKEtK-cAoBMbhvW=!m$D4;j zW7_EVA%P-odlIra?=t4~VdT90ccJIy{m^3o#p@7$N}x#Fo`$S3O;2EP$CVG6wlSyX zyzk;Zo`sI{GH-g`bznUPP`rqE!vu=7?MIN!cr&Xj=y<;a<`~XJdLIS* z3mpV9A={r6*M8@V`S%iPN!ssyNXBrn0l#C)hm7-*-a{jvLL*gi2=wFn_^(f|kKY-6 rhXBRT;P(-MB0U#5QqiFv6!8X>{5I)$%p+^ejQ9KQ{2Q$Y>UjSKIsOs? literal 5964 zcma)AYiwLc6`t9>iT(1due?bu1&v`Or|6GE`;q#(5I&DwjtUc3*p z4^xLIbwm0{3W^^gB?S=&g-Y;)I)AEyfLe%FNT3QNq#_gvBcXysMOsm+@{q#!&Cb|2 zPIw%7?)m1tX6DS9xp)2Kz9ajkl){h{ePXdE#5-Xjo`$kR8Eg=%#Y(Yms&1<8mAa`= z(}n3P(=SiIHofw)m>ZuIVghXjZ5Hj^rt_Pg-z48Z`}V~A%>3;9_%!rrGibADOYP+g zR|D4rORZMjCGwZHPF7s4xLzUOzi{))%^Py5&mEC3U0rj1%~Gq^CSRVsGI?RLZldnT zbrb6*R(v&hQHVPGAM+RN$>yug*PGvsHr_mem5iX7nBSHcCGCdgDcLpOGyl{)dqz8> z*M3Qcty$S{Wn_7%X{c^&9WBR|rI?!&e;3z8tGFzt#2N9S7#9=bX{6kzGVE8$uQl7T zl>1~QMHU~v(+~40tJ(4UDpJ{^R*WB`!dFFw&tE}S_BfMKlCq*&DSXwcSE0t05%1m$ zSy`60$ldT;P+3zEpS00co{Zjvj+%z-pk-xjT0S-{160Xvl#rJ3k%c9r*2p2*R#Tan zmhQByP_q+i)ij{8b%|0er~4P76+uSa2~@{Nz^t^M267E2rX!XmYg3DoP(N(Ki}h}W zJRN^X$dFtgY^bq<_XdwwhGeg-N4|YcqNZjigh*qfu!7rb9Q6*yh$OGb(2z;>iIdT6LBW?mHkGe2| z_>EQ$8l(ThTd>(a94BvlaTX2);K{M=*70L+Jq84bala>sG1)qNPT!E)AP=0>QBVVQDjp_+Ge6TDN zrG@?wSeA<74+Jrs&o8Z00iQ-Puv#Nu02xtQ8K_63)r`c{wCFXY-9+nV!DqV|$dz!V zq_U}^C}j(&WY$eYkd?eRaP)X&&qEJIw%8qZYb2V*BGV4*up7PC2QXdnVL4IlSmat((y6Oc5&y#fjxV+M>cdn+Us;W$g+d2bdH&7 zciQc(cAL|-ZA1e= zcX|2`EMS87ZnfaKILgxT7q1~&TVmmQV^@!^pzf=;-h#j?zxF(RZ#L+!-fJFx-2x`C z1Xr_2mcXU$AxnJJ)1&=8OZtuC5iQ|fg@s=n(0#5fgzSA%_qjJ=tgl!1$+-WYUeZtK z{zt$=xWh-6=ua={e`QJE+?S5i*W(;?9F#G@kuvDrcR+z+X2i+6Nrg|k`P@Qhq2kNe zlRD1oj&dB_-=mpaqLAvi%KFi)LcR zfKAL3z$Rt_*uwW2>#h<_>f_I4NC?}&c>@rWc-n~%V&Ij;VM>KqkH&99QZpKDeg_-+ z6K@3Gsqq8ghc&(qInOt3_#5DHjo$ZAj#S#M&Sp1ZO=E`@vZcM*cc6e7XF$G-l3zPmK7S``g6u z-A;})hYd!MyTF$Y$i4ngIe80wjg}jeg$N7wwuYlYo*0uL}Eq@EVSv9-CR z!2h5z=lKD#p69Qn^}7V z*yNUXj?^|si1mDWXrto@yD*k1#{0pG`7$3esOUaX6t;RB+I$Dvc{d%mDYZQxm>#Km z=hDIg_8FIkTD*8 zO+4NO-gV>=fI34a-eV9DoAuI;wQtDSorJ((>YhR8oJU|_2|DlmzKo0ULnt{v9PNeq zJp*if07V@pQ2u`!dy6{$bHHoYfZ%+O88W(y5O~Kui+A%JWE_`wGj+`KchHOvpqPYW z1A!)^yN13u-roB1HwEMIwQu762-x@litj_gd%%#_1e!&>cflEtpB5(G4Pg3kERr8Z@@EqSeL}WBYHsXqR+Ya;AXa4T z{)V2%T|`i1$FvO@$0czt#9e5l87%T3IOlf{nwcNhZfXxu{0Rcy$A%0f_ZcC0k;M%G X&%cRR56oY5-gre6-8UdJWa9lB3}ng% diff --git a/P4/P4/Debug/sevenseg.d b/P4/P4/Debug/sevenseg.d index 953ed5c..3a93be3 100644 --- a/P4/P4/Debug/sevenseg.d +++ b/P4/P4/Debug/sevenseg.d @@ -12,8 +12,7 @@ sevenseg.d sevenseg.o: .././sevenseg.c .././sevenseg.h \ 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\lib\gcc\avr\5.4.0\include\stdbool.h + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h .././sevenseg.h: @@ -44,5 +43,3 @@ 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\lib\gcc\avr\5.4.0\include\stdbool.h: diff --git a/P4/P4/Debug/sevenseg.o b/P4/P4/Debug/sevenseg.o index ca82973b2428c187bc5c15886f952a61ea2e13fe..dcbce7ed0c9f4fcd8c6168ae93e12bf21eac3501 100644 GIT binary patch literal 5224 zcmcIoYiv}<6`r|kFE+dEVmm+xv|cI_NXRaBY=R*nv2h5XIH`j}LaJ?V*Spv2E3bE* zeK?p(i5)=|0ueUm)dt8zi1r74sZ~>?s)LfIV=|o#eDIuxFSx7 z7V!P8|Hf#LSUp2T!lu-SO&*(;r{_ z^uyLl&+cWrP7fZcuJ8QR*{SBK@KoKw{n)mpc3Gnm5LEaUKbG{9^{Jm19)PlB9gP~R z*3A}$WzC{x)zngz-CpWfOu3^@by#)ED&v#V_kDP%z}88^vg^02@YFM4>(tV$?{KX( zH6TR2Vx&(g5)?TGbGAah^@2^j7g`&5Ah5X!2cUVJMr}-%`DMXKK%&oI>v5db?lJ0O;^AP`8B2)CD$yVt zWvBn}`XGbMt_HENjzBexg=_~uCtI87zb){rnsZLAXlAlA>XWy-Af#BgN5%{Ya~^6ee>-yKgBhn-Bk zP%Nd~Tzqw`C0@+sGReV&n~f(%^Bw9Zn$DJ@*YR;To6M9_PP|lfGyk8^LKK`)CtGmR zu_SNrl#@w}#Ri#>LNSFq30Rd&tx8dYud)6PA$?YTBYtK5T?#K3vc~egDeL_J(s$v7 z`k>5r8KPJWN96Ot%^j`_eG*#gadZ7 z4hhES=zxhDWmK=-?-mDKCzC3GgjcfY=CaX(qcpixqL}d7BZ=e?BIirVB6v!^nu0o%a9(J-t402NT1~=>EtNZ3i(qD20 z$*Zt8$1cIG!!C+~yTd7tjW`}Z24H2b^qh0|+W6K2rjGX|1`PXj?^^e7S^NFFNJB0n=*qnSOk#@3i_B`De)qRP0 zZ#(}z;@}`~vPCyJRIpP?!r>9Yg|^*?m8v~(Z7H`ff|A41tLJRn$dcID-Mu!lyzA*L zc886Fv2ptLQ|7U;+hX^}TJ6@=t6J_Z*Mq?4hPVci!g_IOFk+oRIWPA-zkH^ zD^xS(>k8E#t?3H+kJYZ9v$!jC)18L$^o*?$m#%qCJQChsUZm>rsJQsR@GIb<3Ule& zJm7U6n^QjQv6oda!KG_$_^r-z$mqig_r%3#Ze zjS8TU?7Wj!c!!hEX~R^KZKvGP;aqCaZO8Cb&Q9h=#%w;iLh!El>#Z~YvoyX3*utxG zDKx)V8*x2R;%Ekc9hg2lpzTfE|s02c6OQ zS@3w&RGe1e?Hd0HdY8rvFz=+sAHnA}jc0(rr7`#VLyi9qeOhB5#=c98oKSv_MtlbP zJz`yEzahq6D8EM|pMbtV4E|rxA8Q=OytK*R1x%YU$H6seychTj#E5ekc$vp%g~z8| z`+N^R>oooaF!Rfp{6Ou|_$2T%+UGoQ+~f0AkB_T;{sEu7#$4lGVyw9rnqqQNqcKt? zST5v=RhjtyJkP-JztWig%sY9W%SDZO zF3h#zuX=b>8}v7|L4W2>G9eH?avV$HEfxXhnkj}iXGH$8hvx;|41b=FU*mg$gBouE z=EpmIb^tHZcpP}C#@yFE8Xo{|)0k_1P-Cuny~d}2AJv%axgCw){}i5wS#t!qvX@w4 zY`B={7cqRTl=YxNMQ1xc5!C${>n{{UET1bId3+1T*c&rfYfMoozT0g#JCMULg%kb# zd1n+OIigHua>?uLL_U#C*zoE@tNau_22wh2aIQ-Q5f$wg~~r>-Ze0ZS(B7aXr}&X8$XU` z9d@EoeuQ^d26_QnEgJiRXgz3V44{||@mMR1u~^2NrTZ9f8=4sdDBggN z=f8a_eM2|+y@>?z-Zf(200{5A58~1rM)7n$Yrtj+W6d#~Nziw$(`uI-w#+yMrK4Xl>yVAsa3)ma)GCCgf5C$I8V>+QJ zml1^TQ^w=`Cf;{}Ii>}T(v5=Pc^F|In|ilG8$TPx$nOFp#!ua$hJ>DkU#G|Byp%I& z#GPoAm&4Wkv0lyk_&zc8EL;2<^NxdL4*9*qc-%L?NWJlTarjAa IMohea1Mo+}`Tzg` literal 4156 zcmcInU5p!76~1@I>v-4B{*n^6lWzVWwu#2X(>wkp z-<|kq$Axn*Uw!YLkN;A6Nq#7<3Gv-~<@@K}I)AlrY1^*~mkuJ3rRL>SNQAmISu#(9 zt^PdwFqkC^6mr%`6sN+nwotNiBV>KI=c`K7Hx!h?Dk!OsFH8FhJXB!oGGX8KCqww^ zSD-DZ)U2N}*IW(?F{(7OpEDKq_Z&;^gLaIP%n_1`ajy;WP+t;ic`|nZ)_nb<3@^&9 zPiqsI+%oV4e6jd&@v#}yOY2d*5m)y0yGl+`!j>P&IBuEG2nAO>S{gc|0K|>&FG+j#sN?N(XT7x3Y1P((DE5Lg-39fh+>CqW8}wcj*IK=L==IX5_5TSi zL=v6}<0NdlHQo>PuoY~&Yb;2T)^SFG)wvu|C7QOaQJxgb{)HSJ2axvfo*gX-Y0J?Z z{@SB?L4>0Cezh01(kS+^LSM!8YnwIHMD*e$YQ|yRK?Sk9l*hvl_O;Bn`XX-nq)`KIh=dp~t=DZm^z4>qx#A!_*3zVeHXzdbO-= zfww%*e@8-8S@?b$)z%ZgUL$O82qroA0J2p1Gq-w_Y@ka-b`$+WXlTqpA;hu6hZmjQ z2T!l~3qES^V}t!COuzec?t^Z{uk719yQjb9xGr#fu7jkop4(Y+tRJBfvv10+P9u+; zp`7^Oy20f34KE$#{`odOHZ+WXz$h?(8}R;&d^hl;8F|+L6MS%e4u6L^-2DCFO+s(G z|5_0$vPHo_E#pvS$QHO&Gh~ac8Hw=*4~^2>V(KP)_Qs|Ev{=#}tmQOsx=eHV{_3)S z-1o7604Mrj<>)a5&;x!qY%2Ur*zIV+G{L73&%&E94SpMj4ZIy(-KxMlf$=m5sW+5N zBHcaU%$k@lE9*~u68JO3dWrWDvq3;#z@X3D@Tq9b+nD=E{T<*ZG-gArYWxTIJgM>P zz@f%}0&i(N3q5*Q#VG-w)%acT^BR8${RNGG1N^eazXblV#$e*-8ov*IRpURy=Nd6; zLi#NRG56z-#K`~i@OhJ1Z#UlI9=<^YH9)6sQUkPGNuR4g&Z;?2cWY$RiKQN4*2YiS2 z;g3gR=Ek2m#LR8G#=I|BXX;s#&uYw=JP(ow1jKV;;yb{DeB5NSod#9m;^pb{HG|Ud zEM5dYQ^Kt#iEz7krCn-Wa}4{cIwfBEr_ zE_?#N3Vd$-Ju`}_$lbHi3zJz!@kA_S`$>iO02> zIe_A8h{yZPkb#$=$i`bhyeFVzJlKKyd|rZxCoQ-y+A>59s&! c?lP30hK6?@(^b diff --git a/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c b/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c deleted file mode 100644 index d9f6443..0000000 --- a/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * keys.c - * - * Created: 12/12/2021 07:26:18 - * Author: haypsilcn - */ - -#include"keys.h" - - -void init(){ - DDRD = 0xff; // Data direction register D (D0 -> D6) as input - PORTD = (1 << PIND0); // setting bit for 7-segment - - DDRB = 0x01; // Data direction register B0 as output, B1 & B2 as input - PORTB |= (1 << PINB1) | (1 << PINB2); // setting bit for SW1 and SW2 - - cli(); // clear global interrupt flag: interrupts will be immediately disabled - PCICR |= 0x02; // Pin Change Interrupt Control Register: turn on PortC - PCMSK0 |= (1 << PINC0) | (1 << PINC1); // trigger interrupt when PB1's and PB2's state changes - sei(); // set global interrupt enable -} diff --git a/P4/P4/P4.cproj b/P4/P4/P4.cproj index d792397..47c2319 100644 --- a/P4/P4/P4.cproj +++ b/P4/P4/P4.cproj @@ -20,14 +20,27 @@ false true true - + 0x20000000 true - + exception_table 2 0 0 + com.atmel.avrdbg.tool.simulator + + 0x1E950F + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + diff --git a/P4/P4/keys.c b/P4/P4/keys.c new file mode 100644 index 0000000..93576a1 --- /dev/null +++ b/P4/P4/keys.c @@ -0,0 +1,22 @@ +#include "keys.h" + + +void init(){ + DDRD = 0xff; // Data direction register D (D0 -> D6) as output + // PORTD = 0xff; // setting bit for 7-segment show 0 + // => spielt keine Rolle, wird von der while Schleife übernommen + + DDRB = 0x01; // Data direction register B (B0) as output and DDRB (B1, B2) as input + PORTB |= (1 << PINB1) | (1 << PINB2) ; // setting bit for teens and SW1-2 + // PINB=0 => start with LED3 (Einer) + + // mit unserem Atmega nicht möglich, da keine PCINT8_vect und PCINT9_vect vorhanden + // DDRC = 0x00; // Data direction register C as input for SW1 and SW2 + // PORTC |= (1< PINC0 and SW2 -> PINC1 + + cli(); // clear global interrupt flag: interrupts will be immediately disabled + PCICR |= 0x01; // Pin Change Interrupt Control Register: turn on PortB + PCMSK0 |= (1 << PINB1) | (1 << PINB2); // trigger interrupt when SW1 or SW2 is pressed + sei(); // set global interrupt enable +} + diff --git a/P4/P4/keys.h b/P4/P4/keys.h index a574901..5de2e71 100644 --- a/P4/P4/keys.h +++ b/P4/P4/keys.h @@ -1,19 +1,9 @@ -/* - * keys.h - * - * Created: 12/12/2021 07:25:56 - * Author: haypsilcn - */ - - #ifndef KEYS_H_ #define KEYS_H_ #include #include -#define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) // Test whether bit 'bit' in IO register 'sfr' is clear. This will return non-zero if the bit is clear, and a 0 if the bit is set. - void init(); diff --git a/P4/P4/main.c b/P4/P4/main.c index 666fe0a..71eed60 100644 --- a/P4/P4/main.c +++ b/P4/P4/main.c @@ -1,59 +1,26 @@ -/* - * Praktikum04.c - * - * Created: 12/12/2021 07:21:18 - * Author : haypsilcn - */ - #include "keys.h" #include "sevenseg.h" -#include -/* -logical 0: on -logical 1: off +volatile int count = 0; - .gfe dcba HEX int -0 : 1100 0000 = C0 192 -1 : 1111 1001 = F9 249 -2 : 1010 0100 = A4 164 -3 : 1011 0000 = 30 48 -4 : 1001 1001 = 99 153 -5 : 1001 0010 = 92 146 -6 : 1000 0010 = 82 130 -7 : 1111 1000 = F8 248 -8 : 1000 0000 = 80 128 -9 : 1001 0000 = 90 144 -*/ - -int numbersAsSegments[10] = { 192, 249, 164, 48, 153, 146, 130, 248, 128, 144 }; // display number from 0 to 9; -volatile uint32_t count = 0; - -ISR(PCINT0_vect){ - if (bit_is_clear(PINB, PINB1)) { // sw1 is pressed - if (count == 0) { - count = 100; // if count == 0 and sw1 is pressed, set count = 100 then minus 1 and leds will display 99 - } +ISR(PCINT0_vect) { // every 10ms interrupt is triggered + + if (!(PINB & (1< sw1 is pressed + if (count == 0) count = 100; // 100 - 1 = 99 count--; } - if (bit_is_clear(PINB, PINB2)) { // sw2 is pressed - if (count == 99) { - count = -1; // if count == 99 and sw2 is pressed, set count = -1 then plus 1 and leds will display 00 - } + + if (!(PINB & (1< sw2 is pressed + if (count == 99) count = -1; // -1 + 1 = 0 count++; } } -int main(void) -{ - init(); // initializing SW1 and SW2 +int main(void) { + init(); while(1) { - int led03 = count % 10; // Segmentanzeige für Zehner - display(true, led03, numbersAsSegments); - - int led02 = count - led03 * 10; // Segmentanzeige für Einer - display(false, led02, numbersAsSegments); + display(count); } } diff --git a/P4/P4/sevenseg.c b/P4/P4/sevenseg.c index 307b5be..bb1cb53 100644 --- a/P4/P4/sevenseg.c +++ b/P4/P4/sevenseg.c @@ -1,17 +1,33 @@ #include "sevenseg.h" -#include -void display(bool tens, int num, int numList[]) { +void display(int count) { + /* + logical 0: on + logical 1: off - PORTD = numList[num]; // Displays the Number on PortD + .gfe dcba HEX int + 0 : 1100 0000 = C0 192 + 1 : 1111 1001 = F9 249 + 2 : 1010 0100 = A4 164 + 3 : 1011 0000 = 30 48 + 4 : 1001 1001 = 99 153 + 5 : 1001 0010 = 92 146 + 6 : 1000 0010 = 82 130 + 7 : 1111 1000 = F8 248 + 8 : 1000 0000 = 80 128 + 9 : 1001 0000 = 90 144 + */ + + int numbersAsSegments[10] = { 192, 249, 164, 48, 153, 146, 130, 248, 128, 144 }; // display number from 0 to 9; + + volatile int led_Einer = numbersAsSegments[(int) count % 10]; // Segmentanzeige für Zehner + volatile int led_Zehner = numbersAsSegments[(int) (count - (count % 10)) / 10]; // Segmentanzeige für Einer + + PORTD = led_Einer; _delay_ms(10); + PORTB ^= (1 << PINB0); - // teens durch den Wert von PortB ersetzen - - if(tens) { - PORTB = 1; - } - else { - PORTB = 0; - } + PORTD = led_Zehner; + _delay_ms(10); + PORTB ^= (1 << PINB0); } diff --git a/P4/P4/sevenseg.h b/P4/P4/sevenseg.h index c27ecf6..e7dc30c 100644 --- a/P4/P4/sevenseg.h +++ b/P4/P4/sevenseg.h @@ -1,19 +1,9 @@ -/* - * sevenseg.h - * - * Created: 12/12/2021 07:25:14 - * Author: haypsilcn - */ - - #ifndef SEVENSEG_H_ #define SEVENSEG_H_ - -#define F_CPU 16000000 +#define F_CPU 16000000UL // 16MHz clock frequency #include #include "avr/io.h" -#include -void display(bool tens, int num, int numList[]); +void display(int count); #endif /* SEVENSEG_H_ */ \ No newline at end of file