From c5fb13368857d05b2c47e76e62c6b6744e06a422 Mon Sep 17 00:00:00 2001 From: mrnek Date: Mon, 29 May 2023 12:57:48 +0300 Subject: [PATCH] add calc impl --- .gitignore | 3 ++- GccApplication3.atsln | 20 ++++++++++++++++++++ GccApplication3.atsuo | Bin 0 -> 13312 bytes GccApplication3.cproj | 3 +++ calculator.c | 9 +++++---- calculator.h | 3 ++- main.c | 41 ++++++----------------------------------- 7 files changed, 38 insertions(+), 41 deletions(-) create mode 100644 GccApplication3.atsln create mode 100644 GccApplication3.atsuo diff --git a/.gitignore b/.gitignore index cdfa015..8103628 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ cmake-buid-debug # Executables -*.exe \ No newline at end of file +*.exe +Debug \ No newline at end of file diff --git a/GccApplication3.atsln b/GccApplication3.atsln new file mode 100644 index 0000000..dcbc6c4 --- /dev/null +++ b/GccApplication3.atsln @@ -0,0 +1,20 @@ +п»ї +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "GccApplication3", "GccApplication3.cproj", "{94BBCABE-3E5B-448F-A40B-2B08DEF16444}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.ActiveCfg = Debug|AVR + {94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Debug|AVR.Build.0 = Debug|AVR + {94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.ActiveCfg = Release|AVR + {94BBCABE-3E5B-448F-A40B-2B08DEF16444}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/GccApplication3.atsuo b/GccApplication3.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..aa5615b17c2c364a291b97e7698b3d6873383165 GIT binary patch literal 13312 zcmeHNYit}>6~3FS6X!)+QbJqWvMp&z6MMV6Ucd78dhOJC)NbrJ3E3na&yJnRj%Us8 ztQ$9u1Qfv^9#T~Vh(9R`MF@eY6d+Mh5GucrqB=-O^bdj`1&WY(Nbmzh!}rb1jmPWV z*;&VOVySm^_TIVo&OPVcd(OG%+&eRGKk)n4-+bf`qAcweE5-Y_)`(S}`Vh(lJKZnD z3KaPK{;gZLoJt{3{2(o(8TcP)4ZCaDfV>gFHD3)_16T`K2f%WR^?(h44*~82JOKDG zU?bo`z$U;)01p8^3ZPsNK1lcO3>+4D{45a>J;Fp@5K~yW;AxX+xUKV)9lvz3PrbbH z)ptTG(P{6;oSp-~m=|Y7AFz+2)FaOM4Kc566RePTcIS1dQbBoU8WM^qikvtobmW#e zf`1J($@-$xt?K_~u_8oPs6(WqYDZ54ZKj;7Vc;9G*T4`X$j^yE8~-HeQBkUuo&^8Y z!G{4s@zZXTUM8ud%vnbpAoZU#N*loTa{cEVN*lm-+5qZ5?Ev+kc7Sv}0^l4;T#tLo zPoVrH;1h1$Q=YahC_e+(3fKl{0yG1nfM)?QKpc<&v;dNTRzMq|9nb;j1Z)TF0PF

<5tcgUAm7o(J>;1^_Pr4g&@OLjd+0Mt;;S zA9r)fyUb6c{zbQK1i9*#x#FX4`3!R1E$5IMZW$;RE$!I4_pQG?xFPlBKmK#o6Mg?C zy1LTeyVum!f3Z7LmngFX-P4H9~Wo9nU{AlLQnd>*dICEv@ zYUJi;Z+>p(`pmV=%+F?ie)APPzLK%D!nkfKMn+W(wPYw(z7XYlh*dkyl3`F>ke*)* z3^{FTB(D^*QLgRW@eeG<_?AAdRU&?WwZV^xamdvGte^@jsE9GxoPIF@OQ^#dnXpd& ziT01eNPTDS-`iCfDB@ecvl z1o)@TFQUvnKm+z5wwLq)zm1pvQc(OG(YIj*-zNVW?0yOJ&Y3U3Zg4(SaRyJd=AQ3I z-1(=?4T}F!^rfw4sz*J>72T|$7>liX^HswkwemmLk&L_RDb{mh)h=sXGopi5DXZtB zgIZxySG8ia&xERvDkwHZhG8r8yt%6_nux}tv8G6O$*@WVZI`K)tb$@RMFvVEhOQpa zriSu4&D@nuv?b&5L}y!PTe3}6JHy0yIW#y`w6yVPciu2G)xwCy=swNV3c4CSs28ml z<0np3CMK;|N~)kKxrw}PTHSebR3B@KRPMW|gr7V~1zdGn2i?Vn(?$Jdt?~4vGaYaN znkth}iQE$>IoXYkYdD}xtL+E59O13OhvQ(>&AL*>^*=RSOlu>hv4MhC)J#j^x(q04 zP8ri?S3Ztq54Q9pv6j)+(e}}JJlh&mT9nl`cehzA9n#f8zL+1iqQiQzq!_N;*(8j? z9?QZ|K5rb=&20XqVwCeaq)!y11G;G{BZg)_^qjLav#5{ghHgzo2e>E@FH_aFQJ5%K zd~Xmtl;+IV-C)0gNX^A#+QX(~*`1JCts=@Wr^q&(w!qylrLJz7@d%h)L{C*+MZSL) z&Wl@84QX)g1-N$iGK>~ z&WMm+fAs|XHeTXps@`+9g)zwNlT+dx766VMJ5l)~vCff(x< zNMjcybR6}R%-M1Tvu9!UvUn?xH`)-fCD3CMv)PWE9*%+cM)B-KHA{h21viy_O7dQw z?xe1KEWc;kk2^_g#d{Ft2Jz!idV37N^PS05s=F)I)7;Y2nrcoaJ9?YDlCe~CA{FaM z_w>fwlF8(S>3yo&H8BDArdgqyXyj0Z}ZCZf*Z3e?bF4N`sE88D0 zC39yh>FOWPB!kNT)95SppZ10xKW#NF?5w2AlPL{SYC$g;4LPxa<(ZA`3*g_Ye`$=X zLRY9o9N)|70NNOn_{Cx|@Xs?Cp0xz!|C8wZH+KST*Qh0`P89NIr>g~t^#=*l)8{)< zEgcE`n%fewL~}fzjyHF7w8xrbNWC5Ht?ixZ#D!}M6x&57+Z*~XXX4KUCH^P(%FMe* z7D4I0dauwudz2HD^pFTibFc4RsKH)z$#+q-}?N>*YV9pZ_WELgg8Kr6q{oq5sP`+rausAJ_4-N8$C3p_cKdY^j8ucY-TI z>(Ru!$e{l30rWlP26+95vCl$+80(h%_`~)MVr9It7Wc0q-aql)GbsL(=quyPZg9^V z=%N?~&l+T@oC=AlaxU**h?}W$uer6}_@iEFpN-e1p&!Gz`-~!vPuc6lTZdY=D|x+ai$~ z-U!x8{Qlxj@KbYm^Gf@}6Gs!Y9CYWy&+baP7IOY~3@;ya2Y{5Uz5c6fubtTa)%2xx z+ZuoOk8E0wU7iQ+SN@*gb1*5bKEh^L9Dc!+!wCv^{v6gU0=pE$FAk01zh64`HtoXQ zOP>iXmF=LdFd%F6mAI=?)1zhjHiWtoX3)C*Jr-{t{Ptj+KiTrns41xad-bm$_;?!3 z8xF#l$MU36!!v2WMEkQ59eAe@6#u8tm){F8l}k@hyXU+u#G}AZ8J0Fc*8Alr(746z zAipz{-=7U)59P}68vxEsEeizxZ{rTiKW~xb`KRCfb5HQs9w8Ruf1CpTH(dT};b#oz zm&iZAXW*SqQ2rJ44T`_T4>{TvGXM0CzU7Wvi~nS8{2_i%7Xbw2pI*=F047zu@mS#t zm)31CFI#`TqFws*_vx8RX_mR&wc_91wqIw&pZ@jJ^S64RI&Lc0etGe}t2gM4OS)xV zk#xIqa;eNO!x$d&)99)q+L`$7uaEywdG_-yUl~0A)}MJyA&HfFb)r2j(@RBv4zy3% z7n0m&v*6;4NFKiY^4EXx@Na+dy(`MrSKoQBKGCtcu$GE`Ze!eFIQzf(?>FAfeQD3N z8-*3g@7(y>{`y45GyBWGSj+zKds@G=5c|jPCBEr5Xq|0RVVKwX>Y{XC&iMZi%`q<0 literal 0 HcmV?d00001 diff --git a/GccApplication3.cproj b/GccApplication3.cproj index f37922e..4d1b3a6 100644 --- a/GccApplication3.cproj +++ b/GccApplication3.cproj @@ -99,6 +99,9 @@ compile + + compile + compile diff --git a/calculator.c b/calculator.c index c6e609d..e310481 100644 --- a/calculator.c +++ b/calculator.c @@ -1,12 +1,12 @@ -#include #include "calculator.h" + void handleCalc(struct calculator *calc, int input) { switch (calc->state) { case NUMBER_FIRST: switch (input) { case 0: - calc->num1 = (calc->num1 * 10) + 7; - break; + calc->num1 = (calc->num1 * 10) + 7; + break; case 1: calc->num1 = (calc->num1 * 10) + 8; break; @@ -131,7 +131,8 @@ void handleCalc(struct calculator *calc, int input) { break; } } -void clearCalc(struct calculator* calc) { + +void clearCalc(struct calculator *calc) { calc->state = NUMBER_FIRST; calc->operation = NO_OP; calc->num1 = 0; diff --git a/calculator.h b/calculator.h index 802474d..0e74fb7 100644 --- a/calculator.h +++ b/calculator.h @@ -33,8 +33,9 @@ struct calculator { // 5 состояние атомата enum calculator_state state; }; + void clearCalc(struct calculator *calc); -void handleCalc(struct calculator *calc, int input) +void handleCalc(struct calculator *calc, int input); #endif /* CALCULATOR_H_ */ \ No newline at end of file diff --git a/main.c b/main.c index a62a143..240bfc5 100644 --- a/main.c +++ b/main.c @@ -5,6 +5,7 @@ #include "timer.h" #include "keyboard.h" #include "uart.h" +#include "calculator.h" void setup_registers() { MCUCR &= ~(1 << 4); // PUD @@ -33,6 +34,8 @@ int main(void) { setup(); puts("Hello\r\n"); struct key keys[KEYS_AMOUNT]; + struct calculator calc; + clearCalc(&calc); fill_buttons_names(keys); while(1) { get_physical_keys(keys); @@ -44,43 +47,11 @@ int main(void) { if (down) { printf("%d", keys[i].button); + handleCalc(&calc, keys[i].button); + printf("num1: %d | num2: %d | result: %d | operation: %d | state: %d", + calc.num1, calc.num2, calc.result, calc.operation, calc.state); } } - - //down_amount = 0; - //up_amoumt = 0; - // - //for (int i = 0; i < KEYS_AMOUNT; i++) { - //if (keys[i].logical == false) { - //down_amount++; - //} else { - //up_amoumt++; - //} - ////bool up; - ////bool down; - ////get_event(&keys[i], &up, &down); - ////if (down) { - ////down_amount++; - ////} - ////else { - ////up_amoumt++; - ////} - //} - //diff = up_amoumt; - ////if (diff != diff_prev) { - //for (int i = 0; i < KEYS_AMOUNT; i++) { - //bool up, down; - //get_event(&keys[i], &up, &down); - ////if (keys[i].logical == true) { - ////printf("%d", keys[i].button); - ////} - //if (down) { - ////printf("%s\r\n", i); - //printf("%d", keys[i].button); - //} - //} - ////} - //diff_prev = diff; } }