From ee22ff08193376f428f2877cc053747b422bb663 Mon Sep 17 00:00:00 2001 From: S170H <64917343+S170H@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:14:59 +0100 Subject: [PATCH] P4 Changed Interrupt PortB -> PortC; Unfinished implementation of PortB for teens --- Abgaben/P3/Hazinedar_3108590_ARBKVS_3.c | 58 ++ P3/.vs/P3/v14/.atsuo | Bin 18944 -> 23040 bytes P3/P3/Debug/P3.elf | Bin 9696 -> 10192 bytes P3/P3/Debug/P3.hex | 24 +- P3/P3/Debug/P3.lss | 192 ++++--- P3/P3/Debug/P3.map | 77 +-- P3/P3/Debug/P3.srec | 24 +- P3/P3/Debug/main.o | Bin 7060 -> 8232 bytes P3/P3/main.c | 15 +- P4/.vs/P4/v14/.atsuo | Bin 0 -> 19968 bytes P4/P4.atsln | 22 + P4/P4/Debug/Makefile | 151 +++++ P4/P4/Debug/P4.eep | 1 + P4/P4/Debug/P4.elf | Bin 0 -> 11640 bytes P4/P4/Debug/P4.hex | 43 ++ P4/P4/Debug/P4.lss | 385 +++++++++++++ P4/P4/Debug/P4.map | 517 ++++++++++++++++++ P4/P4/Debug/P4.srec | 44 ++ P4/P4/Debug/keys.d | 39 ++ P4/P4/Debug/keys.o | Bin 0 -> 2872 bytes P4/P4/Debug/main.d | 54 ++ P4/P4/Debug/main.o | Bin 0 -> 5964 bytes P4/P4/Debug/makedep.mk | 10 + P4/P4/Debug/sevenseg.d | 48 ++ P4/P4/Debug/sevenseg.o | Bin 0 -> 4156 bytes ...ys_SAFAK_Dez-06-141334-2023_CaseConflict.c | 22 + P4/P4/P4.componentinfo.xml | 86 +++ P4/P4/P4.cproj | 128 +++++ P4/P4/keys.h | 20 + P4/P4/main.c | 60 ++ P4/P4/sevenseg.c | 17 + P4/P4/sevenseg.h | 19 + 32 files changed, 1904 insertions(+), 152 deletions(-) create mode 100644 Abgaben/P3/Hazinedar_3108590_ARBKVS_3.c create mode 100644 P4/.vs/P4/v14/.atsuo create mode 100644 P4/P4.atsln create mode 100644 P4/P4/Debug/Makefile create mode 100644 P4/P4/Debug/P4.eep create mode 100644 P4/P4/Debug/P4.elf create mode 100644 P4/P4/Debug/P4.hex create mode 100644 P4/P4/Debug/P4.lss create mode 100644 P4/P4/Debug/P4.map create mode 100644 P4/P4/Debug/P4.srec create mode 100644 P4/P4/Debug/keys.d create mode 100644 P4/P4/Debug/keys.o create mode 100644 P4/P4/Debug/main.d create mode 100644 P4/P4/Debug/main.o create mode 100644 P4/P4/Debug/makedep.mk create mode 100644 P4/P4/Debug/sevenseg.d create mode 100644 P4/P4/Debug/sevenseg.o create mode 100644 P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c create mode 100644 P4/P4/P4.componentinfo.xml create mode 100644 P4/P4/P4.cproj create mode 100644 P4/P4/keys.h create mode 100644 P4/P4/main.c create mode 100644 P4/P4/sevenseg.c create mode 100644 P4/P4/sevenseg.h diff --git a/Abgaben/P3/Hazinedar_3108590_ARBKVS_3.c b/Abgaben/P3/Hazinedar_3108590_ARBKVS_3.c new file mode 100644 index 0000000..8049fc9 --- /dev/null +++ b/Abgaben/P3/Hazinedar_3108590_ARBKVS_3.c @@ -0,0 +1,58 @@ +#include +#include + +#define F_CPU 16000000UL // 16MHz clock frequency +#define LED_PIN PD0 // LED is connected to Pin D0 + +volatile uint32_t systemClock = 0; + +void setupTimer0() { + // Configure Timer0 for CTC mode + TCCR0A |= (1 << WGM01); // Set Waveform Generation Mode bits for CTC + TCCR0B |= (1 << CS01) | (1 << CS00); // Set prescaler to 64 + OCR0A = 249; // Set Output Compare Register to 249 for ~1ms interrupt + TIMSK0 |= (1 << OCIE0A); // Enable Timer0 Output Compare A Match interrupt +} + +// Timer0 Output Compare A Match Interrupt Service Routine +ISR(TIMER0_COMPA_vect) { + systemClock++; // Increment the milliseconds counter +} + +uint32_t getSystemClock(){ + cli(); + uint32_t tempSystemClock = systemClock; + sei(); + return tempSystemClock; +} + +void waitFor(uint32_t ms) { + uint32_t endTime = getSystemClock() + ms; + while (getSystemClock() != endTime); +} + +void waitUntil(uint32_t ms) { + while (getSystemClock() != ms); +} + +void initializeLED() { + DDRD |= (1 << LED_PIN); // Set LED_PIN as an output +} + +void toggleLED() { + PORTD ^= (1 << LED_PIN); // Toggle the LED +} + +int main(void) { + initializeLED(); // Initialize the LED pin + setupTimer0(); // Setup Timer0 + //sei(); // Enable global interrupts + + waitUntil(500); // Wait until 500 ms have passed + toggleLED(); // Toggle the LED to turn it on + + while (1) { + waitFor(500); // Wait for 500 ms + toggleLED(); // Toggle the LED + } +} \ No newline at end of file diff --git a/P3/.vs/P3/v14/.atsuo b/P3/.vs/P3/v14/.atsuo index 544d4c647843a1c0d0528269c9e5b0643c3ac8f3..8be0c6156f054d26fa4c25c86b4bd8eb3427f07f 100644 GIT binary patch delta 3155 zcmd5-O>7&-6`rLmnO0YhBwI0a6r5gXU25P@qLlJ@gbGa;VieE76sU zz-R+B$Sl6yH{ZN@^XARGx3_;r-TpOohxw)k9kp?UPJl=O9vvJU5OxUP)t>p)2CX@L z=h5U(rf2_5Jqzs8H123RR02QLM6qX#8Tl@d1qyeDg7gfCBLFaPfImJvN9pjxq07#* zKoO(IoAyX;z>)DYz)b-r0TTck%O~vAJaJ?C3iR~=qQ3~=s{jLF{Lo1YwWlea?th?r z($4^X|0Mgxz7j+K>Fdc0^61eTWSF#XKz|G{@Sphj4B+`=+`wm|e+u~L0Mh`7DbfLE ziH~Zrt>(V6kVo{a;o{%HP62s&Ya za70GoD*~2}`VxFs05V=4J#&@VB1i)BJ;3(?Hvt;}!f(Pi4akuG-R0`uc$13b*0`i4 zhX@LX=emv`(h)VbYq&KQrAbuCAZg^_=@<~d2avWmy74vK82zO-Hmq(8?@nE&O!(r^ zEQ!Hz3O4x{JaHpLA4cHt4MY_)n&JP3oM-mW@|1RP`PAH5#jUBA_jFB)!7W{sCYO#R z#vsJ_Go47!0CDmdIXnlQPw?&wFRFKK;mFbZLzlIukE{LPJf4=GSg7~elt|Gemr0I1 zcD?!BkMUBVzjwYuh8{O^izwVZ&tcB^$;4E4{Uy)&*V2EAzdCpB?ROp^k|x8dG8Xhw zS41heszua5NsyYTj1*J?nS<+2KJYGG2rASd(-r~H{@i3i+b@Z+q(FngA0GU_v!t@Z(iU0qw-JU54eV3 z(T?GdM`m&Vk_FG)*uZxd7WdD2zVM)biZwGnEvbb6KK+@GNZR1$MUf_d6jDkDgEXnN ze*=)V=is&H;X4?_%}J3ae=Jg92jnoBF7!U1JVjxRuKu)axd56^%a-2f&XXf}>B2mI zeeN87Y3`c3K}JL4{@jV~5X?@xznv88)m%MQp79k*N@HgJmcw=>$u-MLDJeBunL;&b zH!w*tl`b}tDV63{%1SPE)8iA9tifb3G0tS6k}kC}N;0)mPZp|Wv&m62xseyykh}LDLs7VIeB(<@GiLFns%g<*DsfIp zh&w_;-4x(k;k@jO$7Fq-NhfTPhJKr0tqN^LtjMi4&j|kIkn9e`rL?i?C|C7cYvJrx zI~6OZYArkCYKuXA+0x;Jnipbdmpy{FRN4%s^AZzDbgFIJdZ%XQY>||$>us~F6t!&1 zIX>Es`uy%-tdmx19bb;kX4j1Rb(s<3;w`sl+2Xa7U5%zk+U-;tq42Hca7#4m{eDx1 zcSN^BfkfNE3t8Fj&laUljoGf&YI1^2n^qDM=V#-!aLQv^N!Lv-KGxvVxviiz%I}Wa wgy4>+Vaofxy(Md3y&gTrH%<+~UjqMV;rgI9-DOT;VbT6IDM?a~^B++E0%BM0Q2+n{ delta 1361 zcmcgrK}-`t6rI`bw##;lEw%*}DYO&{D7Iik6az>l#bTjQgcHGo2{CF&EQz2d<*YHV z-;bhE;oFjf1hCwp%wd7L{2ESIm(v@o(ulvCF(})-5g?T;>Iblex!JI@aGGL*i z-a3lOcLwv8^QwrHRyD`?0mxYzJ5`kSA!sAHIII-kE_|aGR)(N)3O8~O!V6_tv)|8ODKqtb+c z?K1aTYJzLZ6inGg@gQl_O0`Pn2{aKFm0Bkyt(Y7`gh|XQ(~z<|gF~1MBa#TSDusLu zanaP4l20^envcM&ns5}ZhWy}?g^$iJKu%3SpC!TvVb(FE3dKQlLctDdh4>#{)g7;+ zGJQtVMbYMl@Hd+hou5IzF|N|_Y$dgj4h_Sm5SFS?jOh7L8P^4OKbI{flXx6vJ$Kiu zqg?f(Oig3%4e8+hodREpN(F~T<OW72Z+bdzYGSG~H?P{n|^R8=*U)i+@k%ZsxA##&eJAH`lzU z59*V;RP*Ao@S)@9KbY9tJaQp?$SZuVyh2Z0_21k+F+7o*@Cu)R_@V^wAvR*|lx1d@ zm29m=@h(=-f$>?4DU5v>9gO`LBN(@0Y#aN=n$+1^EZ9<~v2;fk!gs^yHrWuBw5OoA zB-Dv1y9;yH`(2o|B>W5*$I=_O4k^njYv+`sS75MzqQ84JWlmWuL0B*Ihq4p~Ew>OV z<=Gq*XJPhe9AA(W*-9bv7mQ8Hdp^GqT>u1|u7dsB-Dx z%nYHN8?gowNx+G083fOWvns1p#cI?eO~k)5OCuzw>9hn6QeB}WAxy))WJ+0v&QFzK z=yK98pkpYOSIdam6m!%4a<#Z5+eq*PNM>b7-LV9|EuPf_k3@Ec*?C_3)Z?Z*fYi>mXLD%!&u%KW|5wvu5L8#^AE9$LMq zDu&~jA34(PN)>kdX=Qtz6kp_cjF7u`+@UZelj-J8|xG~Y4%nAg2NMA$}PW-qPOV7 zl!(%ne@_~zaPg!qC-8thsF2H7@l5SmkDuoe+G)ljpd7ErkMa+-rL{;GlljN`M8G1% zK~Z+OV{TNXOhxtbtc%lN<2B|(jl&l@T&b;Hc~$ zvhHLt1?kR5#Kl<#%!T=t(wQFsn@)EC96HYjK-1x_G3LKYnWzWGO55-MrjT0c)1{@7 zxwr4E)J&;sY~xC4%tPZetv@hc6WUQRndHo|O?5j&j+v|VGv$Q2Ti=U*X~R7K-x8M= zRktSVp=PF(In{7R`pweDRhnPuFy|XbG;_6?%!~o)Gv{WEWEbN#^H+o|j$e^kz{M+9 ziJ$upU|eK&e)dHr`Y80hz-KYH7)Jf8!22miivzEJ2oFAp6DkV=e|}^6hkbyDiAH>G z>|#@g{qS|WJ!^xQRmqq{&GzIR?83*%B>Zoa&FFtaKi|Ys&3YJlUNO(5lA+7+ys%l9 zO6co&g5Q|~siZy=Q|f2)CA<%-mAYcC!t1M1>blYCWN2ZXQb)wJrxW^WJx0jN3HOZ6`qhE%-( delta 1628 zcmZ`(U2GIp6u#%q+@0C&bbm@~*Z%AbyX=ntfv62>W4hFkppZ}#QvqX$wFn3r5fg}} zY+IWcD4Lz#-6)V4Bx<6C1YDvq!53fT!6rV^7hT?b&=})ye5v1=-4Voav-kXb=iGD7 zJ#+4UyS=%!>dB3TAfNB4kr2F<5JF-@6n3!lef6nuYFC5R1C^9^wFm^I10pYwv_3Fs ziLOvN^@Ka=9(HG7tHO2`wu`XM_tveCtk11?e|3XYVAt9A_C9uf{Ip#^b7{7D++X;@ zt|x0tB3auaj@G7rKGd9PRJ@5%|6MPqV z0(=VmzQ(d#Rh1@0DbC@lCJo`Tjt#QafYVLuL3X0pJun#qu*qX1uu8J;0%A(F|D{)j zlvavOrWyt_F0(v0$!?~VV8vDshs;u7imu}*#Vb{KoX0j6J!GJ6M!SfSKd^a`MINJf z5F>o0=NSDF#D4KG@TVX-&uiMNX`iP3n&OWl1NDaZl%_qJT2_&uFWJ&h9EF==R5)!8 zQW&cLf1yz5pPbxfZ*E^$r=p)2EHJ>m48aas$H9FXa>9NxkUS1hkiPf8*+}%k;u>n z1nPuHEOON33E(mjj3H#|M#xczbEF#|WQK{R_4i#X6%&t2nq*LXKrrpYEW}VV2_^aC z7=4i)o^3m~obBO<%P|Tdj=2ue@Z;no6!}6l{5qvJiW9A9W(+}PT-2p0lRLBM zEiaz1GWMpVQI(sLW`J%w(0OrL9(bg48T_asoeMzPfA!WQd#0yX>iOQ4#=-0(w1?yW zg>4AT9SeWA6@!KF;;?Yka7B;fJTyKUJpgv(^t?GOZ%)@5I=!LjHir9OAzIWI23)G? z<$>*>gM*{tUmJ%`i(gjzaDpRw`q1DK?b3s}-70K=p3N<&uza0y57303b{8rmXax^6 zFHcIb7CM^DB#g$dKC-7_FGJ_LAII*(U(7b>C)pXxgTCVyed-qdW$5^Y3)Ob5z8Pv5 z0xT~7y~fAhdZY0}VK3?NVw!CIZ1G-P^Q~e5@};5=x&pdUQ^{9Had2GUUn<0|Lb_(@ ziBevj#rOJ5PnQa6A|u3Q{UIc$TZoH#8PXL - 84: 0e 94 b2 00 call 0x164 ; 0x164
- 88: 0c 94 c8 00 jmp 0x190 ; 0x190 <_exit> + 84: 0e 94 b7 00 call 0x16e ; 0x16e
+ 88: 0c 94 cc 00 jmp 0x198 ; 0x198 <_exit> 0000008c <__bad_interrupt>: 8c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -149,106 +149,124 @@ ISR(TIMER0_COMPA_vect) { f2: 1f 90 pop r1 f4: 18 95 reti -000000f6 : +000000f6 : + +uint32_t getSystemClock(){ + cli(); + f6: f8 94 cli + uint32_t tempSystemClock = systemClock; + f8: 60 91 00 01 lds r22, 0x0100 ; 0x800100 <_edata> + fc: 70 91 01 01 lds r23, 0x0101 ; 0x800101 <_edata+0x1> + 100: 80 91 02 01 lds r24, 0x0102 ; 0x800102 <_edata+0x2> + 104: 90 91 03 01 lds r25, 0x0103 ; 0x800103 <_edata+0x3> + sei(); + 108: 78 94 sei + return tempSystemClock; +} + 10a: 08 95 ret + +0000010c : void waitFor(uint32_t ms) { - f6: 0f 93 push r16 - f8: 1f 93 push r17 - uint32_t endTime = systemClock + ms; - fa: 00 91 00 01 lds r16, 0x0100 ; 0x800100 <_edata> - fe: 10 91 01 01 lds r17, 0x0101 ; 0x800101 <_edata+0x1> - 102: 20 91 02 01 lds r18, 0x0102 ; 0x800102 <_edata+0x2> - 106: 30 91 03 01 lds r19, 0x0103 ; 0x800103 <_edata+0x3> - 10a: ab 01 movw r20, r22 - 10c: bc 01 movw r22, r24 - 10e: 40 0f add r20, r16 - 110: 51 1f adc r21, r17 - 112: 62 1f adc r22, r18 - 114: 73 1f adc r23, r19 - while (systemClock < endTime); - 116: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <_edata> - 11a: 90 91 01 01 lds r25, 0x0101 ; 0x800101 <_edata+0x1> - 11e: a0 91 02 01 lds r26, 0x0102 ; 0x800102 <_edata+0x2> - 122: b0 91 03 01 lds r27, 0x0103 ; 0x800103 <_edata+0x3> - 126: 84 17 cp r24, r20 - 128: 95 07 cpc r25, r21 - 12a: a6 07 cpc r26, r22 - 12c: b7 07 cpc r27, r23 - 12e: 98 f3 brcs .-26 ; 0x116 + 10c: cf 92 push r12 + 10e: df 92 push r13 + 110: ef 92 push r14 + 112: ff 92 push r15 + 114: 6b 01 movw r12, r22 + 116: 7c 01 movw r14, r24 + uint32_t endTime = getSystemClock() + ms; + 118: 0e 94 7b 00 call 0xf6 ; 0xf6 + 11c: c6 0e add r12, r22 + 11e: d7 1e adc r13, r23 + 120: e8 1e adc r14, r24 + 122: f9 1e adc r15, r25 + while (getSystemClock() != endTime); + 124: 0e 94 7b 00 call 0xf6 ; 0xf6 + 128: c6 16 cp r12, r22 + 12a: d7 06 cpc r13, r23 + 12c: e8 06 cpc r14, r24 + 12e: f9 06 cpc r15, r25 + 130: c9 f7 brne .-14 ; 0x124 } - 130: 1f 91 pop r17 - 132: 0f 91 pop r16 - 134: 08 95 ret + 132: ff 90 pop r15 + 134: ef 90 pop r14 + 136: df 90 pop r13 + 138: cf 90 pop r12 + 13a: 08 95 ret -00000136 : +0000013c : void waitUntil(uint32_t ms) { - 136: ab 01 movw r20, r22 - 138: bc 01 movw r22, r24 - while (systemClock < ms); - 13a: 80 91 00 01 lds r24, 0x0100 ; 0x800100 <_edata> - 13e: 90 91 01 01 lds r25, 0x0101 ; 0x800101 <_edata+0x1> - 142: a0 91 02 01 lds r26, 0x0102 ; 0x800102 <_edata+0x2> - 146: b0 91 03 01 lds r27, 0x0103 ; 0x800103 <_edata+0x3> - 14a: 84 17 cp r24, r20 - 14c: 95 07 cpc r25, r21 - 14e: a6 07 cpc r26, r22 - 150: b7 07 cpc r27, r23 - 152: 98 f3 brcs .-26 ; 0x13a + 13c: cf 92 push r12 + 13e: df 92 push r13 + 140: ef 92 push r14 + 142: ff 92 push r15 + 144: 6b 01 movw r12, r22 + 146: 7c 01 movw r14, r24 + while (getSystemClock() != ms); + 148: 0e 94 7b 00 call 0xf6 ; 0xf6 + 14c: 6c 15 cp r22, r12 + 14e: 7d 05 cpc r23, r13 + 150: 8e 05 cpc r24, r14 + 152: 9f 05 cpc r25, r15 + 154: c9 f7 brne .-14 ; 0x148 } - 154: 08 95 ret + 156: ff 90 pop r15 + 158: ef 90 pop r14 + 15a: df 90 pop r13 + 15c: cf 90 pop r12 + 15e: 08 95 ret -00000156 : +00000160 : void initializeLED() { DDRD |= (1 << LED_PIN); // Set LED_PIN as an output - 156: 50 9a sbi 0x0a, 0 ; 10 - 158: 08 95 ret + 160: 50 9a sbi 0x0a, 0 ; 10 + 162: 08 95 ret -0000015a : +00000164 : } void toggleLED() { PORTD ^= (1 << LED_PIN); // Toggle the LED - 15a: 9b b1 in r25, 0x0b ; 11 - 15c: 81 e0 ldi r24, 0x01 ; 1 - 15e: 89 27 eor r24, r25 - 160: 8b b9 out 0x0b, r24 ; 11 - 162: 08 95 ret + 164: 9b b1 in r25, 0x0b ; 11 + 166: 81 e0 ldi r24, 0x01 ; 1 + 168: 89 27 eor r24, r25 + 16a: 8b b9 out 0x0b, r24 ; 11 + 16c: 08 95 ret -00000164
: +0000016e
: } int main(void) { initializeLED(); // Initialize the LED pin - 164: 0e 94 ab 00 call 0x156 ; 0x156 + 16e: 0e 94 b0 00 call 0x160 ; 0x160 setupTimer0(); // Setup Timer0 - 168: 0e 94 48 00 call 0x90 ; 0x90 - sei(); // Enable global interrupts - 16c: 78 94 sei + 172: 0e 94 48 00 call 0x90 ; 0x90 + //sei(); // Enable global interrupts waitUntil(500); // Wait until 500 ms have passed - 16e: 64 ef ldi r22, 0xF4 ; 244 - 170: 71 e0 ldi r23, 0x01 ; 1 - 172: 80 e0 ldi r24, 0x00 ; 0 - 174: 90 e0 ldi r25, 0x00 ; 0 - 176: 0e 94 9b 00 call 0x136 ; 0x136 + 176: 64 ef ldi r22, 0xF4 ; 244 + 178: 71 e0 ldi r23, 0x01 ; 1 + 17a: 80 e0 ldi r24, 0x00 ; 0 + 17c: 90 e0 ldi r25, 0x00 ; 0 + 17e: 0e 94 9e 00 call 0x13c ; 0x13c toggleLED(); // Toggle the LED to turn it on - 17a: 0e 94 ad 00 call 0x15a ; 0x15a + 182: 0e 94 b2 00 call 0x164 ; 0x164 while (1) { waitFor(500); // Wait for 500 ms - 17e: 64 ef ldi r22, 0xF4 ; 244 - 180: 71 e0 ldi r23, 0x01 ; 1 - 182: 80 e0 ldi r24, 0x00 ; 0 - 184: 90 e0 ldi r25, 0x00 ; 0 - 186: 0e 94 7b 00 call 0xf6 ; 0xf6 + 186: 64 ef ldi r22, 0xF4 ; 244 + 188: 71 e0 ldi r23, 0x01 ; 1 + 18a: 80 e0 ldi r24, 0x00 ; 0 + 18c: 90 e0 ldi r25, 0x00 ; 0 + 18e: 0e 94 86 00 call 0x10c ; 0x10c toggleLED(); // Toggle the LED - 18a: 0e 94 ad 00 call 0x15a ; 0x15a - 18e: f7 cf rjmp .-18 ; 0x17e + 192: 0e 94 b2 00 call 0x164 ; 0x164 + 196: f7 cf rjmp .-18 ; 0x186 -00000190 <_exit>: - 190: f8 94 cli +00000198 <_exit>: + 198: f8 94 cli -00000192 <__stop_program>: - 192: ff cf rjmp .-2 ; 0x192 <__stop_program> +0000019a <__stop_program>: + 19a: ff cf rjmp .-2 ; 0x19a <__stop_program> diff --git a/P3/P3/Debug/P3.map b/P3/P3/Debug/P3.map index ec43bd2..5f84052 100644 --- a/P3/P3/Debug/P3.map +++ b/P3/P3/Debug/P3.map @@ -169,7 +169,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x194 +.text 0x00000000 0x19c *(.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 @@ -259,24 +259,27 @@ END GROUP .text.__vector_14 0x000000ac 0x4a main.o 0x000000ac __vector_14 - .text.waitFor 0x000000f6 0x40 main.o - 0x000000f6 waitFor + .text.getSystemClock + 0x000000f6 0x16 main.o + 0x000000f6 getSystemClock + .text.waitFor 0x0000010c 0x30 main.o + 0x0000010c waitFor .text.waitUntil - 0x00000136 0x20 main.o - 0x00000136 waitUntil + 0x0000013c 0x24 main.o + 0x0000013c waitUntil .text.initializeLED - 0x00000156 0x4 main.o - 0x00000156 initializeLED + 0x00000160 0x4 main.o + 0x00000160 initializeLED .text.toggleLED - 0x0000015a 0xa main.o - 0x0000015a toggleLED - .text.main 0x00000164 0x2c main.o - 0x00000164 main - 0x00000190 . = ALIGN (0x2) + 0x00000164 0xa main.o + 0x00000164 toggleLED + .text.main 0x0000016e 0x2a main.o + 0x0000016e main + 0x00000198 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000190 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) - 0x00000190 _exit - 0x00000190 exit + .fini9 0x00000198 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) + 0x00000198 _exit + 0x00000198 exit *(.fini9) *(.fini8) *(.fini8) @@ -295,11 +298,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000190 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 0x00000198 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) - 0x00000194 _etext = . + 0x0000019c _etext = . -.data 0x00800100 0x0 load address 0x00000194 +.data 0x00800100 0x0 load address 0x0000019c [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -320,8 +323,8 @@ END GROUP 0x00800100 systemClock *(COMMON) 0x00800104 PROVIDE (__bss_end, .) - 0x00000194 __data_load_start = LOADADDR (.data) - 0x00000194 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x0000019c __data_load_start = LOADADDR (.data) + 0x0000019c __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x00800104 0x0 [!provide] PROVIDE (__noinit_start, .) @@ -392,42 +395,42 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x50 +.debug_aranges 0x00000000 0x58 *(.debug_aranges) .debug_aranges - 0x00000000 0x50 main.o + 0x00000000 0x58 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x7d8 +.debug_info 0x00000000 0x80e *(.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 0x1e4 main.o + .debug_info 0x000005f4 0x21a main.o -.debug_abbrev 0x00000000 0x6b6 +.debug_abbrev 0x00000000 0x6c5 *(.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 0x114 main.o + .debug_abbrev 0x000005a2 0x123 main.o -.debug_line 0x00000000 0x2b4 +.debug_line 0x00000000 0x2d6 *(.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 0x181 main.o + .debug_line 0x00000133 0x1a3 main.o -.debug_frame 0x00000000 0xb0 +.debug_frame 0x00000000 0xdc *(.debug_frame) - .debug_frame 0x00000000 0xb0 main.o + .debug_frame 0x00000000 0xdc main.o -.debug_str 0x00000000 0x3c7 +.debug_str 0x00000000 0x3e6 *(.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 0x1bf main.o - 0x1f3 (size before relaxing) + .debug_str 0x00000208 0x1de main.o + 0x212 (size before relaxing) -.debug_loc 0x00000000 0x92 +.debug_loc 0x00000000 0x197 *(.debug_loc) - .debug_loc 0x00000000 0x92 main.o + .debug_loc 0x00000000 0x197 main.o .debug_macinfo *(.debug_macinfo) @@ -447,9 +450,9 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x40 +.debug_ranges 0x00000000 0x48 *(.debug_ranges) - .debug_ranges 0x00000000 0x40 main.o + .debug_ranges 0x00000000 0x48 main.o .debug_macro *(.debug_macro) diff --git a/P3/P3/Debug/P3.srec b/P3/P3/Debug/P3.srec index 8e93f0d..26bddc6 100644 --- a/P3/P3/Debug/P3.srec +++ b/P3/P3/Debug/P3.srec @@ -7,22 +7,22 @@ S11300400C9446000C9446000C9446000C94460014 S11300500C9446000C9446000C9446000C94460004 S11300600C9446000C94460011241FBECFEFD8E038 S1130070DEBFCDBF21E0A0E0B1E001C01D92A430FD -S1130080B207E1F70E94B2000C94C8000C9400007F +S1130080B207E1F70E94B7000C94CC000C94000076 S113009084B5826084BD85B5836085BD89EF87BDE5 S11300A0EEE6F0E080818260808308951F920F92D3 S11300B00FB60F9211248F939F93AF93BF938091A8 S11300C0000190910101A0910201B09103010196F8 S11300D0A11DB11D8093000190930101A093020121 S11300E0B0930301BF91AF919F918F910F900FBE79 -S11300F00F901F9018950F931F930091000110917A -S113010001012091020130910301AB01BC01400FB8 -S1130110511F621F731F8091000190910101A091F2 -S11301200201B091030184179507A607B70798F356 -S11301301F910F910895AB01BC0180910001909132 -S11301400101A0910201B091030184179507A6074C -S1130150B70798F30895509A08959BB181E08927D1 -S11301608BB908950E94AB000E944800789464EF14 -S113017071E080E090E00E949B000E94AD0064EF7B -S113018071E080E090E00E947B000E94AD00F7CF18 -S1070190F894FFCF0D +S11300F00F901F901895F894609100017091010180 +S1130100809102019091030178940895CF92DF9237 +S1130110EF92FF926B017C010E947B00C60ED71EFA +S1130120E81EF91E0E947B00C616D706E806F906EB +S1130130C9F7FF90EF90DF90CF900895CF92DF92B0 +S1130140EF92FF926B017C010E947B006C157D0590 +S11301508E059F05C9F7FF90EF90DF90CF9008952B +S1130160509A08959BB181E089278BB908950E9424 +S1130170B0000E94480064EF71E080E090E00E94CB +S11301809E000E94B20064EF71E080E090E00E9463 +S10F019086000E94B200F7CFF894FFCF65 S9030000FC diff --git a/P3/P3/Debug/main.o b/P3/P3/Debug/main.o index a09028b22d6ac40410b29e032ffd379605401c39..ff2b97a6dbd15033cb855d68b83b62ee78cf1e52 100644 GIT binary patch literal 8232 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 E1=Wo6CjbBd diff --git a/P3/P3/main.c b/P3/P3/main.c index 102ef3a..8049fc9 100644 --- a/P3/P3/main.c +++ b/P3/P3/main.c @@ -19,13 +19,20 @@ ISR(TIMER0_COMPA_vect) { systemClock++; // Increment the milliseconds counter } +uint32_t getSystemClock(){ + cli(); + uint32_t tempSystemClock = systemClock; + sei(); + return tempSystemClock; +} + void waitFor(uint32_t ms) { - uint32_t endTime = systemClock + ms; - while (systemClock < endTime); + uint32_t endTime = getSystemClock() + ms; + while (getSystemClock() != endTime); } void waitUntil(uint32_t ms) { - while (systemClock < ms); + while (getSystemClock() != ms); } void initializeLED() { @@ -39,7 +46,7 @@ void toggleLED() { int main(void) { initializeLED(); // Initialize the LED pin setupTimer0(); // Setup Timer0 - sei(); // Enable global interrupts + //sei(); // Enable global interrupts waitUntil(500); // Wait until 500 ms have passed toggleLED(); // Toggle the LED to turn it on diff --git a/P4/.vs/P4/v14/.atsuo b/P4/.vs/P4/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..13544afda3a2eaa790988ba7bb844983eb581c7e GIT binary patch literal 19968 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 "P4.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "P4.elf" "P4.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "P4.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "P4.elf" "P4.a" "P4.hex" "P4.lss" "P4.eep" "P4.map" "P4.srec" "P4.usersignatures" + \ No newline at end of file diff --git a/P4/P4/Debug/P4.eep b/P4/P4/Debug/P4.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/P4/P4/Debug/P4.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/P4/P4/Debug/P4.elf b/P4/P4/Debug/P4.elf new file mode 100644 index 0000000000000000000000000000000000000000..1cbfb4120b5da985f677b73ab0a636141c210b2d GIT binary patch literal 11640 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: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 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> + 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> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d8 e0 ldi r29, 0x08 ; 8 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 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 + 7c: f2 e0 ldi r31, 0x02 ; 2 + 7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + 84: a4 31 cpi r26, 0x14 ; 20 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> + +0000008a <__do_clear_bss>: + 8a: 21 e0 ldi r18, 0x01 ; 1 + 8c: a4 e1 ldi r26, 0x14 ; 20 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: a8 31 cpi r26, 0x18 ; 24 + 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> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + +#include"keys.h" + + +void init(){ + DDRD = 0xff; // Data direction register D (D0 -> D6) as input + 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 + + 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 + + cli(); // clear global interrupt flag: interrupts will be immediately disabled + b6: 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 + sei(); // set global interrupt enable + cc: 78 94 sei + ce: 08 95 ret + +000000d0 <__vector_3>: +*/ + +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){ + 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> + 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> + } + 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> + } + 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> + 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> + } + 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> + } +} + 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 + +000001a8
: + +int main(void) +{ + init(); // initializing SW1 and SW2 + 1a8: 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 + +0000020e : +#include "sevenseg.h" +#include + +void display(bool tens, int num, int numList[]) { + + 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 + #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 + _delay_ms(10); + + 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 + +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> + +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 + +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 + +0000027a <_exit>: + 27a: f8 94 cli + +0000027c <__stop_program>: + 27c: ff cf rjmp .-2 ; 0x27c <__stop_program> diff --git a/P4/P4/Debug/P4.map b/P4/P4/Debug/P4.map new file mode 100644 index 0000000..72301e9 --- /dev/null +++ b/P4/P4/Debug/P4.map @@ -0,0 +1,517 @@ +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(_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) +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) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .text 0x00000000 0x0 keys.o + .data 0x00000000 0x0 keys.o + .bss 0x00000000 0x0 keys.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .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.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) + .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) + .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) + .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) + .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) + .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) + .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(_exit.o) + .text.libgcc.div + 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) + .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(_exit.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(_exit.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(_exit.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(_exit.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(_exit.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(_copy_data.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(_copy_data.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(_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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\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/5.4.0/avr5\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/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) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o +LOAD keys.o +LOAD main.o +LOAD sevenseg.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5\libatmega328p.a +END GROUP + 0x00020000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + 0x0000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x00010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x27e + *(.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 + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + 0x00000068 __ctors_end = . + 0x00000068 __dtors_start = . + *(.dtors) + 0x00000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000068 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x16 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) + 0x00000074 __do_copy_data + .init4 0x0000008a 0x10 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) + 0x0000008a __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000009a 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init9) + *(.text) + .text 0x000000a2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x000000a2 __vector_22 + 0x000000a2 __vector_1 + 0x000000a2 __vector_24 + 0x000000a2 __vector_12 + 0x000000a2 __bad_interrupt + 0x000000a2 __vector_6 + 0x000000a2 __vector_23 + 0x000000a2 __vector_25 + 0x000000a2 __vector_11 + 0x000000a2 __vector_13 + 0x000000a2 __vector_17 + 0x000000a2 __vector_19 + 0x000000a2 __vector_7 + 0x000000a2 __vector_5 + 0x000000a2 __vector_4 + 0x000000a2 __vector_9 + 0x000000a2 __vector_2 + 0x000000a2 __vector_21 + 0x000000a2 __vector_15 + 0x000000a2 __vector_8 + 0x000000a2 __vector_14 + 0x000000a2 __vector_10 + 0x000000a2 __vector_16 + 0x000000a2 __vector_18 + 0x000000a2 __vector_20 + 0x000000a6 . = ALIGN (0x2) + *(.text.*) + .text.init 0x000000a6 0x2a 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 + .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) + *(.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) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.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) + 0x0000027e _etext = . + +.data 0x00800100 0x14 load address 0x0000027e + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.numbersAsSegments + 0x00800100 0x14 main.o + 0x00800100 numbersAsSegments + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.r*) + 0x00800114 . = ALIGN (0x2) + 0x00800114 _edata = . + 0x00800114 PROVIDE (__data_end, .) + +.bss 0x00800114 0x4 + 0x00800114 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.count 0x00800114 0x4 main.o + 0x00800114 count + *(COMMON) + 0x00800118 PROVIDE (__bss_end, .) + 0x0000027e __data_load_start = LOADADDR (.data) + 0x00000292 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800118 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800118 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 keys.o + 0x31 (size before relaxing) + .comment 0x00000030 0x31 main.o + .comment 0x00000030 0x31 sevenseg.o + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x68 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 keys.o + .debug_aranges + 0x00000020 0x28 main.o + .debug_aranges + 0x00000048 0x20 sevenseg.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x944 + *(.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_abbrev 0x00000000 0x7e4 + *(.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_line 0x00000000 0x458 + *(.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_frame 0x00000000 0x9c + *(.debug_frame) + .debug_frame 0x00000000 0x24 keys.o + .debug_frame 0x00000024 0x54 main.o + .debug_frame 0x00000078 0x24 sevenseg.o + +.debug_str 0x00000000 0x430 + *(.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_loc 0x00000000 0x118 + *(.debug_loc) + .debug_loc 0x00000000 0x7e main.o + .debug_loc 0x0000007e 0x9a sevenseg.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges 0x00000000 0x38 + *(.debug_ranges) + .debug_ranges 0x00000000 0x10 keys.o + .debug_ranges 0x00000010 0x18 main.o + .debug_ranges 0x00000028 0x10 sevenseg.o + +.debug_macro + *(.debug_macro) +OUTPUT(P4.elf elf32-avr) +LOAD linker stubs diff --git a/P4/P4/Debug/P4.srec b/P4/P4/Debug/P4.srec new file mode 100644 index 0000000..819d14a --- /dev/null +++ b/P4/P4/Debug/P4.srec @@ -0,0 +1,44 @@ +S00A000050342E7372656396 +S11300000C9434000C9451000C9451000C9468002E +S11300100C9451000C9451000C9451000C94510018 +S11300200C9451000C9451000C9451000C94510008 +S11300300C9451000C9451000C9451000C945100F8 +S11300400C9451000C9451000C9451000C945100E8 +S11300500C9451000C9451000C9451000C945100D8 +S11300600C9451000C94510011241FBECFEFD8E022 +S1130070DEBFCDBF11E0A0E0B1E0EEE7F2E002C0E8 +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 +S9030000FC diff --git a/P4/P4/Debug/keys.d b/P4/P4/Debug/keys.d new file mode 100644 index 0000000..7600713 --- /dev/null +++ b/P4/P4/Debug/keys.d @@ -0,0 +1,39 @@ +keys.d keys.o: .././keys.c .././keys.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.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\avr\include\avr\interrupt.h + +.././keys.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.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\avr\include\avr\interrupt.h: diff --git a/P4/P4/Debug/keys.o b/P4/P4/Debug/keys.o new file mode 100644 index 0000000000000000000000000000000000000000..675552c41289e38586caa8fef78bb2ce7601e211 GIT binary patch literal 2872 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 X&%cRR56oY5-gre6-8UdJWa9lB3}ng% literal 0 HcmV?d00001 diff --git a/P4/P4/Debug/makedep.mk b/P4/P4/Debug/makedep.mk new file mode 100644 index 0000000..0693960 --- /dev/null +++ b/P4/P4/Debug/makedep.mk @@ -0,0 +1,10 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +keys.c + +main.c + +sevenseg.c + diff --git a/P4/P4/Debug/sevenseg.d b/P4/P4/Debug/sevenseg.d new file mode 100644 index 0000000..953ed5c --- /dev/null +++ b/P4/P4/Debug/sevenseg.d @@ -0,0 +1,48 @@ +sevenseg.d sevenseg.o: .././sevenseg.c .././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\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.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 + +.././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\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.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: diff --git a/P4/P4/Debug/sevenseg.o b/P4/P4/Debug/sevenseg.o new file mode 100644 index 0000000000000000000000000000000000000000..ca82973b2428c187bc5c15886f952a61ea2e13fe GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c b/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c new file mode 100644 index 0000000..d9f6443 --- /dev/null +++ b/P4/P4/Keys_SAFAK_Dez-06-141334-2023_CaseConflict.c @@ -0,0 +1,22 @@ +/* + * 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.componentinfo.xml b/P4/P4/P4.componentinfo.xml new file mode 100644 index 0000000..e278bca --- /dev/null +++ b/P4/P4/P4.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.2.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include\avr\iom328p.h + + header + C + UMk4QUzkkuShabuoYtNl/Q== + + include/avr/iom328p.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.c + template + source + C Exe + tT5ONm3vILdPjO5YQRtoRA== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p + + libraryPrefix + GCC + + + gcc/dev/atmega328p + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/Atmel.ATmega_DFP.pdsc + 1.2.209 + true + ATmega328P + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/P4/P4/P4.cproj b/P4/P4/P4.cproj new file mode 100644 index 0000000..d792397 --- /dev/null +++ b/P4/P4/P4.cproj @@ -0,0 +1,128 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATmega328P + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + P4 + P4 + P4 + Native + true + false + true + true + + + true + + 2 + 0 + 0 + + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + + + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/P4/P4/keys.h b/P4/P4/keys.h new file mode 100644 index 0000000..a574901 --- /dev/null +++ b/P4/P4/keys.h @@ -0,0 +1,20 @@ +/* + * 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(); + + +#endif /* KEYS_H_ */ \ No newline at end of file diff --git a/P4/P4/main.c b/P4/P4/main.c new file mode 100644 index 0000000..666fe0a --- /dev/null +++ b/P4/P4/main.c @@ -0,0 +1,60 @@ +/* + * Praktikum04.c + * + * Created: 12/12/2021 07:21:18 + * Author : haypsilcn + */ + +#include "keys.h" +#include "sevenseg.h" +#include + +/* +logical 0: on +logical 1: off + + .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 + } + 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 + } + count++; + } +} + +int main(void) +{ + init(); // initializing SW1 and SW2 + + 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); + } +} + + diff --git a/P4/P4/sevenseg.c b/P4/P4/sevenseg.c new file mode 100644 index 0000000..307b5be --- /dev/null +++ b/P4/P4/sevenseg.c @@ -0,0 +1,17 @@ +#include "sevenseg.h" +#include + +void display(bool tens, int num, int numList[]) { + + PORTD = numList[num]; // Displays the Number on PortD + _delay_ms(10); + + // teens durch den Wert von PortB ersetzen + + if(tens) { + PORTB = 1; + } + else { + PORTB = 0; + } +} diff --git a/P4/P4/sevenseg.h b/P4/P4/sevenseg.h new file mode 100644 index 0000000..c27ecf6 --- /dev/null +++ b/P4/P4/sevenseg.h @@ -0,0 +1,19 @@ +/* + * sevenseg.h + * + * Created: 12/12/2021 07:25:14 + * Author: haypsilcn + */ + + +#ifndef SEVENSEG_H_ +#define SEVENSEG_H_ + +#define F_CPU 16000000 +#include +#include "avr/io.h" +#include + +void display(bool tens, int num, int numList[]); + +#endif /* SEVENSEG_H_ */ \ No newline at end of file