From e96062079c09592bea691aea12e60ce5d0cc438d Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 14:53:46 -0300 Subject: [PATCH 01/42] set color --- apoio_registers.h | 50 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/apoio_registers.h b/apoio_registers.h index e1fbca2..fd585b5 100644 --- a/apoio_registers.h +++ b/apoio_registers.h @@ -4,27 +4,45 @@ #include // Definições dos registradores -extern uint16_t *R0; -extern uint16_t *R1; -extern uint16_t *R2; -extern uint16_t *R3; -extern uint16_t *R4; -extern uint16_t *R5; -extern uint16_t *R6; -extern uint16_t *R7; -extern uint16_t *R8; -extern uint16_t *R9; -extern uint16_t *R10; -extern uint16_t *R11; -extern uint16_t *R12; -extern uint16_t *R13; -extern uint16_t *R14; -extern uint16_t *R15; + // Funções para leitura e escrita nos registradores uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); + +void set_color( uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11 , int bit12){ + if( bit10 == 1){ + *r0 |= (0x1 << 10); //ativa o bit de cor RED + + *r1 |= 255;//do 0-7 preenche com 255 + + } else if( bit10 == 0){ + *r0 &= ~(0x1 << 10);//zera o bit 10 + *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo de 0-7 + } + if( bit11 == 1){ + *r0 |= (0x1 << 11);//seta para 1 o bit 11 no registrador 0 + + *r1 |= (255<<8);// preenche os bits de cor em verde + + } else if( bit11 == 0){ + *r0 &= ~(0x1 << 10);//zera o bit 10 + *r1 &= ~(0xFF00);//zera os bit de color em r1 do intervalo 8-15 + } + + if( bit12 == 1){ + + *r0 |= (0x1 << 12); // ativa o bit de cor BLUE + + *r2 |= 255;// preenche os bits de cor em verde no registrador + + } else if( bit12 == 0){ + *r0 &= ~(0x1 << 12);//zera o bit 12 + *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo 0-7 + } +} + // Funções de controle para o hardware void display_message(const char *message); void control_status_led(int battery_level); From c6401193b358e34012c4ad64ab61c0bb8591dbbb Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 15:01:03 -0300 Subject: [PATCH 02/42] set da color --- apoio_registers.h | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/apoio_registers.h b/apoio_registers.h index fd585b5..c664651 100644 --- a/apoio_registers.h +++ b/apoio_registers.h @@ -10,39 +10,6 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); - -void set_color( uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11 , int bit12){ - if( bit10 == 1){ - *r0 |= (0x1 << 10); //ativa o bit de cor RED - - *r1 |= 255;//do 0-7 preenche com 255 - - } else if( bit10 == 0){ - *r0 &= ~(0x1 << 10);//zera o bit 10 - *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo de 0-7 - } - if( bit11 == 1){ - *r0 |= (0x1 << 11);//seta para 1 o bit 11 no registrador 0 - - *r1 |= (255<<8);// preenche os bits de cor em verde - - } else if( bit11 == 0){ - *r0 &= ~(0x1 << 10);//zera o bit 10 - *r1 &= ~(0xFF00);//zera os bit de color em r1 do intervalo 8-15 - } - - if( bit12 == 1){ - - *r0 |= (0x1 << 12); // ativa o bit de cor BLUE - - *r2 |= 255;// preenche os bits de cor em verde no registrador - - } else if( bit12 == 0){ - *r0 &= ~(0x1 << 12);//zera o bit 12 - *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo 0-7 - } -} - // Funções de controle para o hardware void display_message(const char *message); void control_status_led(int battery_level); From f2082ff1ad46823fd4016e0114a3bc387f52b497 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 15:01:39 -0300 Subject: [PATCH 03/42] ARRUMADO --- apoio_registers.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/apoio_registers.h b/apoio_registers.h index c664651..fd585b5 100644 --- a/apoio_registers.h +++ b/apoio_registers.h @@ -10,6 +10,39 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); + +void set_color( uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11 , int bit12){ + if( bit10 == 1){ + *r0 |= (0x1 << 10); //ativa o bit de cor RED + + *r1 |= 255;//do 0-7 preenche com 255 + + } else if( bit10 == 0){ + *r0 &= ~(0x1 << 10);//zera o bit 10 + *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo de 0-7 + } + if( bit11 == 1){ + *r0 |= (0x1 << 11);//seta para 1 o bit 11 no registrador 0 + + *r1 |= (255<<8);// preenche os bits de cor em verde + + } else if( bit11 == 0){ + *r0 &= ~(0x1 << 10);//zera o bit 10 + *r1 &= ~(0xFF00);//zera os bit de color em r1 do intervalo 8-15 + } + + if( bit12 == 1){ + + *r0 |= (0x1 << 12); // ativa o bit de cor BLUE + + *r2 |= 255;// preenche os bits de cor em verde no registrador + + } else if( bit12 == 0){ + *r0 &= ~(0x1 << 12);//zera o bit 12 + *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo 0-7 + } +} + // Funções de controle para o hardware void display_message(const char *message); void control_status_led(int battery_level); From 42c7d5dfee4febfa3c5354da7b956c2c53215832 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 15:24:28 -0300 Subject: [PATCH 04/42] tentando --- .vscode/c_cpp_properties.json | 3 ++- .vscode/settings.json | 5 +++++ libregisters.a | Bin 0 -> 3806 bytes apoio_registers.h => libregisters.h | 2 -- registers.c | 22 ++++++---------------- registers.o | Bin 0 -> 3608 bytes 6 files changed, 13 insertions(+), 19 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 libregisters.a rename apoio_registers.h => libregisters.h (94%) create mode 100644 registers.o diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index c11401d..3ac3b39 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -3,7 +3,8 @@ { "name": "Linux", "includePath": [ - "${workspaceFolder}/**" + "${workspaceFolder}/**", + "${workspaceFolder}" ], "defines": [], "compilerPath": "/usr/bin/gcc", diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7834431 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "libregisters.h": "c" + } +} \ No newline at end of file diff --git a/libregisters.a b/libregisters.a new file mode 100644 index 0000000000000000000000000000000000000000..6b5b5751cb117c68d61ea7e0276f81b0e8c3ddfd GIT binary patch literal 3806 zcmbtW|7#pY6rZ~!jh;z!mZFu4Y>{fzcD+kOTT2Mngl$)l76SK^%4Kue%bm^b9ecYa z2}X-YE$dP25B?Ak{{jDiChZT&)j~_9KO7V!P>=|%M3NsO?GI-O#P?=r_9o*VE%;z| zW3&3j+RG& ztb2Et&}JP!dM&-`MS-wdBh}`P`-XnCi{jp0s;A7qegvqdJ<_ucpQ(GlF+JM6E!p@S z(ZR;&6pN#eh0`~1fYV;%22Sl}2Yhtz&I*ElNS@ZztMf1BxDy;V@7)$A9*2oHJ@=`X z-l}O&{g9gwFie}e$A}dv;+nR_!`%Vdc)tZ8{WXccL`hwAZFY^Vc+H%rZQj+k`(QR3 zBYlhM&6>9D-FooMYgE@Fm+MZ?N|H}>Bes&@ZD3W`Ixg4U*owljYH>SKo!=(2ODnkF zH2Q11#!F4=wa&x+pwwZ}l6C#6c3<~?S;liL#SDZ7tZIX}u_au0x~H&s4N%|#S%rFy z*426x+Uu;{3GFRtuk|gGzQwwCr{z~XMcVpv^k5%HH#sj}OW%i9!;ezfm2Mi?hQF?G zFq@P52m9&loGv=~d$%EQ6wS6vwo)paR>7K5pqaHz!@+j0Fl{n*#dHElsTAfo4vAcr zsIJ99CvS>AveTtXzzworg?uL;TLq_JOe+_SY1dRrIb|$yN=eKdP7KV%LX^ptlAIkK zJ*D)gCtS;Mm1I&KR1-&&F6}128W>O$gYPlepDw+Y;?Ty_JbNxpqJ-4(s>0ks+3!~* zGB-vdGx5m5p6-{f!7jfEI2M$D@T2XGe;Xa`-4opchOZk!9OO&<1o}##{|s@EGJXR6 zRG_DJpxWN0e?s*Lg$W+OPV)Con64xA#>2VNi)oihFZA{ad^$(K4no28l0^X^41c!` zj;R{PKhXvs0vzMvaqzV{*M^^Fd>0o4gsw5v6Hvm&{Q_|G|CsUVngdp9!@t-D7apl> zt4*IcOe#_~F~LaAv0W=`I3~e7FiA1|4J^|1+5HrjT_>A2Z2w85k7SNyG8MZ#@*e|gXaR} z8^8LGpYH`6(j)M5OTb?i@COX%{*ST#LxC^GNpCUGVVt6Wh3zNeuR!7PA7ME6&(~#8 z;EVo;1zhxhz777VKN{$K2y_;=ct7#xLT(w!wdIgZJS?LHK-aze`?c zIQqxJ$DNY+ml)p>`1lfY{uPP;6XXBThJRha@d@UB9tt?-DaRG&57mr9k(7k<`(a$d z`8{w+!g;XEkl^j!r zH{>YIMb@9PT(xXN>f6pN*q|pfpUK%q(PWYQze)jf+;TiiqNG^o4{@;oW5*+)V&3Au zrvk)pY%zxoW{1Pg? zK_?22pJN|E1ML$WVD+EO9^(^*$It5#Q1Z6O+lPx9A~JUjIC!th@gHFJisVC%AKxwX zDchf9_6yIk$5R-#|8=~KLB{FVzdI4)5Ti?a`;a_W+SRJAYTO XBZ$0yuYxYjUcpNR#PO@(E8G7IeN5kY literal 0 HcmV?d00001 diff --git a/apoio_registers.h b/libregisters.h similarity index 94% rename from apoio_registers.h rename to libregisters.h index fd585b5..25747ba 100644 --- a/apoio_registers.h +++ b/libregisters.h @@ -44,8 +44,6 @@ void set_color( uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11 , } // Funções de controle para o hardware -void display_message(const char *message); -void control_status_led(int battery_level); #endif /* REGISTERS_H */ diff --git a/registers.c b/registers.c index 78a50d5..ae311df 100644 --- a/registers.c +++ b/registers.c @@ -4,6 +4,7 @@ #include #include #include +//#include #define FILE_PATH "registers.bin" #define FILE_SIZE 1024 // Same size as used in the first program @@ -79,20 +80,10 @@ int main() { unsigned short *base_address = (unsigned short *)map; unsigned short *r0 = base_address + 0x00; unsigned short *r1 = base_address + 0x01; - unsigned short *r2 = base_address + 0x00; - unsigned short *r3 = base_address + 0x01; - unsigned short *r4 = base_address + 0x00; - unsigned short *r5 = base_address + 0x01; - unsigned short *r6 = base_address + 0x00; - unsigned short *r7 = base_address + 0x01; - unsigned short *r8 = base_address + 0x00; - unsigned short *r9 = base_address + 0x01; - unsigned short *r10 = base_address + 0x00; - unsigned short *r11 = base_address + 0x01; - unsigned short *r12 = base_address + 0x00; - unsigned short *r13 = base_address + 0x01; - unsigned short *r14 = base_address + 0x00; - unsigned short *r15 = base_address + 0x01; + unsigned short *r2 = base_address + 0x02; + + //set_color( &r0, &r1, &r2,1,1,0 ); + printf("Initial value of R0: 0x%02x\n", *r0); printf("Initial value of R1: 0x%02x\n", *r1); @@ -103,8 +94,7 @@ int main() { if (registers_release(map, FILE_SIZE, fd) == -1) { return EXIT_FAILURE; } - printf("Valor de R0 em binário: "); - print_binary(r0); + return EXIT_SUCCESS; } \ No newline at end of file diff --git a/registers.o b/registers.o new file mode 100644 index 0000000000000000000000000000000000000000..5eff6ef11cc6d66865da43bd1de2114d96d447c6 GIT binary patch literal 3608 zcmbtW-)me&6rRnGMq|>frD&xhSEL%XU3OzYEv0M|ZhHl(5ZEV`?ak(HcJ2P+?!6@m zMvF@=m!;ST9|Gb(;2+SWeMq(z8e00WP>?`DBD4}o9wP0-S_1KWb7yuZ*Iiohz}%Vn z&Uen7IWuQ=ztulI-4zNkDIs=}wPq4!Y@xq3j`Lxh?Pr7R@z5Jj6NdN5sBA?IZ+^pb z9~xd_&8X@dH?EPRs zk*fPl!~0F>Ve?kN#^|KtCi;Zy1&N=X2ac zjvIGwDH{*d#v7jd#7k^f^(TJF4GNgH&D|qnEf8^4-YnxDQ%1Gt$S^4lN?NRDT+#0t-mlB7hmgGoNrXCOwa(oB zCFGr-DJ8E?3S5vi>eqQ+sddqKLyUW9yiMcvp+z>dSo3bT{HnJ|-*|?e?89)A_QKV~ zJsQ>hD3w#`a6!Yg^OVvSZoh$Yi#_J}G3KteMj;m^s(d zifL^kdR&Xn9Epz1^tVyQT1s|ieEhgJoS1YAj;qCDkSj^?q*f%31k?82V0`|9y z<78oKD9tlx6ReA|8Zguj876Bk!oj;{xR1BYA3jWJ?!t@cDnAiFCO;FAErGf zgETv!@cAAIJ4_Av3W`QRJN%svI7+o0|HBUW3BnPNj6>$;YzKZq@LeQ?gy)$0NowuZ z{fcn-ecC=o5Spe*+sauc zU|v3~WM>Obl1jt0XIaU0QW?``d6PF0rhqfRBR34c%v3P<7rT)q$I0=Rq!E(UN}?<`WD%{%5K^^WcL z89AbAG$W2R6k1sSuV4PUGyiZVm@ybNLMI2R)l^-j`3O)^XY;cDcMx|wlhmM z@ML9@Y1_iaJWo5Rb>1U`k4ixFe+qlV zr;3bU_G6@!W0iLRNo^xR?gVl0t_I^jBK7(gZ5X*@BcNr5!g86%ybnWalJSrrP-!;EM G`+or|V6+(k literal 0 HcmV?d00001 From 3ae6e4d38b842052c949f8883e921932adf01b93 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 15:56:36 -0300 Subject: [PATCH 05/42] ta compilando --- libregisters.a | Bin 3806 -> 4212 bytes libregisters.h | 50 ++++++++++++++++++++++--------------------------- programa | Bin 0 -> 16472 bytes registers.bin | Bin 32 -> 32 bytes registers.c | 6 +++--- registers.o | Bin 3608 -> 4000 bytes 6 files changed, 25 insertions(+), 31 deletions(-) create mode 100755 programa diff --git a/libregisters.a b/libregisters.a index 6b5b5751cb117c68d61ea7e0276f81b0e8c3ddfd..a11b67946d49129df2a49fa7cfb2cdf8717febb7 100644 GIT binary patch delta 1252 zcmZ`&T}TvB6u$TF?(FRD?79_$esJcVbH4AKd+z1V`r#iH z(@nKa4HXiJAY;sj_SkI??+x|b?eFU!WZCXJ-iCNQo_!w|6ZS{qO0c=CAXWJjUsEz7KUjSuAa8c|&Gn9_F4Odc~|VklRGbV*8ktS=*=okgky}S)|?YZokMK>n|Mo3ye22E zr1RyzJJobP$H>#Smgg1zS?0(?3h!k_*U@zEYSnHfAlX+hltr zJ1f}%$@ZD-kYuACE4?k*5wm}WzEJBA2X>zYH2cR?OLUz>T-C(`4y%4$jPMy%=TD$K zP+aHn>z3!_Nd6A&!xV>ZHkE^(zDiMmH;se4gz9>&a#TuGj zd`;%=#)sPPzbe(OJ2Ag(&4gJZM#$GUh%?$ z)+!=CDB#lUvozsqamEM3;nqNcPKj86#c*RF9@TbDQ| delta 983 zcmZ`%K}%Fo6h80Fo0o6qy_rGtIT(Xa5SvBFpy8W^%u;MKt!z`27*w<<36&_za3d6q z4oAU_{(uM}23*%RS`^XB7zi?2CbSWxI%n>^@-p5B-@E6W`+fJ`bMN~VwoB{PFsg(a zGZ_G|na|^F-kPTb|4y9wkH9Om&Kg?m7|ZZP^t<`~FK zF{MGliW>g2tpPoC1AGg#lL3l!I{iEZ)6zXo|Oj)Km(*<2O%T4NKF2?ln z9%}T&?Xxb+clqim?+xv}nc#gHtNXDt>?PFSCDhxhzTCN~_(FN?nTWfklg6 z8^0o5@yGF}Lk+)%gDE=n0{Z5cO*oV*V>w0jTn)dcsKGHPuEkqb*s9qTU3n8uD-2eap diff --git a/libregisters.h b/libregisters.h index 25747ba..dae77e8 100644 --- a/libregisters.h +++ b/libregisters.h @@ -11,36 +11,30 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); -void set_color( uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11 , int bit12){ - if( bit10 == 1){ - *r0 |= (0x1 << 10); //ativa o bit de cor RED - - *r1 |= 255;//do 0-7 preenche com 255 - - } else if( bit10 == 0){ - *r0 &= ~(0x1 << 10);//zera o bit 10 - *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo de 0-7 +void set_color(uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11, int bit12) { + if (bit10 == 1) { + *r0 |= (0x1 << 10); // Ativa o bit de cor RED + *r1 |= 255; // Preenche os bits de cor em r1 do intervalo de 0-7 + } else if (bit10 == 0) { + *r0 &= ~(0x1 << 10); // Zera o bit 10 + *r1 &= ~(0xFF); // Zera os bits de cor em r1 do intervalo de 0-7 + } + + if (bit11 == 1) { + *r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 + *r1 |= 0xFF00; // Preenche os bits de cor em r1 do intervalo 8-15 + } else if (bit11 == 0) { + *r0 &= ~(0x1 << 11); // Zera o bit 11 + *r1 &= ~(0xFF00); // Zera os bits de cor em r1 do intervalo 8-15 } - if( bit11 == 1){ - *r0 |= (0x1 << 11);//seta para 1 o bit 11 no registrador 0 - - *r1 |= (255<<8);// preenche os bits de cor em verde - - } else if( bit11 == 0){ - *r0 &= ~(0x1 << 10);//zera o bit 10 - *r1 &= ~(0xFF00);//zera os bit de color em r1 do intervalo 8-15 - } - if( bit12 == 1){ - - *r0 |= (0x1 << 12); // ativa o bit de cor BLUE - - *r2 |= 255;// preenche os bits de cor em verde no registrador - - } else if( bit12 == 0){ - *r0 &= ~(0x1 << 12);//zera o bit 12 - *r1 &= ~(0xFF);//zera os bit de color em r1 do intervalo 0-7 - } + if (bit12 == 1) { + *r0 |= (0x1 << 12); // Ativa o bit de cor BLUE + *r2 |= 255; // Preenche os bits de cor em r2 + } else if (bit12 == 0) { + *r0 &= ~(0x1 << 12); // Zera o bit 12 + *r2 &= ~(0xFF); // Zera os bits de cor em r2 + } } // Funções de controle para o hardware diff --git a/programa b/programa new file mode 100755 index 0000000000000000000000000000000000000000..855b54abb2dca8d2c9c53cda1e3dd992ca68fea2 GIT binary patch literal 16472 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 literal 0 HcmV?d00001 diff --git a/registers.bin b/registers.bin index 3fca702d0595f94b6cb00f9419ad25bc338d8d0c..cf6241818ab85c9411291cb8953e6938524e70d5 100644 GIT binary patch literal 32 dcmWd@`v3nwLwuNrtB;SrLb$(AkP8Dc005{-2J`>` literal 32 dcmWd@`v3nwLwJ~ntB;SrLb$(AkP8Dc005_X2J8R; diff --git a/registers.c b/registers.c index ae311df..d919fb8 100644 --- a/registers.c +++ b/registers.c @@ -4,7 +4,7 @@ #include #include #include -//#include +#include "libregisters.h" #define FILE_PATH "registers.bin" #define FILE_SIZE 1024 // Same size as used in the first program @@ -82,13 +82,13 @@ int main() { unsigned short *r1 = base_address + 0x01; unsigned short *r2 = base_address + 0x02; - //set_color( &r0, &r1, &r2,1,1,0 ); + set_color( r0, r1, r2,1,0,1); printf("Initial value of R0: 0x%02x\n", *r0); printf("Initial value of R1: 0x%02x\n", *r1); // Write a new value to R0 - *r0 = *r0 | 0x00; + // *r0 = *r0 | 0x00; // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { diff --git a/registers.o b/registers.o index 5eff6ef11cc6d66865da43bd1de2114d96d447c6..9287434afe7a041c3e2f24f963f03b681881e55d 100644 GIT binary patch delta 1480 zcmZ`&T}V@582--LIdf+_)Ad7}Woa?d=1o{MvKU$#qmt@EDkwA}ArMU4pvA@pf^-mK z_7WHr?I!3ZFr(j_pl*V^sEh7KC@dHhBtf7h+54V-pZhx51K;2CKHvNE{Y*6!8uP7c zlQ|h_%vzbnxRqRpTYY7#x72O*%ynD6#j#9DNw&l%dKT-RvD~a?y{7q~6~JKuDRaeU z7LfVUhGLd%7UI$`r+AvJipMf@N^+-=&U&n@!||Y>Nv3hlu(-_MX z<%|Pz66I>fWu9@7XB?*bO5bEP)hDH#KlkQQ=V$eCt80%^-=;9edTImX>LI_|wL>v$ zJgfn!1JI{6DrX^yeHw0Ie+Qmu6WeV)+Jo5EGlhxu60Ql&a9$585$YkYhm`&Hx{Lby z!)T{HVbzwhbY)}7lwz1MoyyU97iT{)AiU51?227Xvno*dw)#G7anflqOs1}dAbgwQYPW&f8X-eB3PqicT| zs{AlgzTt;^R$hoqu2-sCB2So z5%{J*pojhdSZMO_?KTScgsUO*kiD0r1Y) zdPMxV0h_gXvaSBAoP!ttso>xPF4*k-q?#K1^zKy$JkaioDaT;MY=J3Xh|lu621VaS z^@IlBeKECGhjufjcIfay+XUCmR<%=y88c=K&=De@!;%>_c2Ql3tFX@>HA3|75Yv#t W)myrK#3a1%N4*cYGQlv5ZGQj?o|&Bh delta 1068 zcmZ{jJ4gdT5Qc9rm&YZ!MB*b6g+x#cA__)`Xb9K{7DgK@1)~;PsYtZYK%z|w3ze}* zBLuOslR%1qV8F^su#68Z6iZtnqPy;_E(bTTw>RJXGqbz5R|*$9kD_YPecTr=XUKzE zp3>q3&g~(RfGc~L%)=vnX5q_zpnoddI-uqVLfWgrjiZJ1Qg4vN8Ea2aK|mpjP-ZbB z^&6eV=oaC41EWj4o=kt@^Ysw_?)TQ0xoBnRm)vSS%$QRiUq&5;7=CZ&o)6# z>}8X?N|1B@HP``&&99ge@|ci8&a{3>Uoh!UQGa5guSndj1pgb?r9cz(cw$51FGyoa zCSXI{|GbI65;*fb882AqHwrICGnBj`^}_*GZ&K~DL6^4;nvAG;ouRK$8|)ZK_00xV zIt4VY@kP~;2BW^DKEifQtq6O*xPHxUBegWtsCV}lBmTI)%5EOD0*q5H;^tlkh!Oq) DHTVB) From f4793cf20396c740ae3bd400b408cba27124966c Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:57:41 -0300 Subject: [PATCH 06/42] Update registers.c --- registers.c | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/registers.c b/registers.c index d919fb8..f029d88 100644 --- a/registers.c +++ b/registers.c @@ -51,24 +51,6 @@ int registers_release(void* map, int file_size, int fd) { return 0; } -void print_binary(unsigned short value) { - // Comece a partir do bit mais significativo - for (int i = 15; i >= 0; i--) { - // Verifique se o bit na posição 'i' está definido - if (value & (1 << i)) { - printf("1"); - } else { - printf("0"); - } - - // Adicione espaços para melhor visualização - if (i % 4 == 0) { - printf(" "); - } - } - printf("\n"); -} - int main() { int fd; // Open the file and map it into memory @@ -80,21 +62,16 @@ int main() { unsigned short *base_address = (unsigned short *)map; unsigned short *r0 = base_address + 0x00; unsigned short *r1 = base_address + 0x01; - unsigned short *r2 = base_address + 0x02; - - set_color( r0, r1, r2,1,0,1); - - printf("Initial value of R0: 0x%02x\n", *r0); - printf("Initial value of R1: 0x%02x\n", *r1); + printf("Current value of R0: 0x%02x\n", *r0); + printf("Current value of R1: 0x%02x\n", *r1); // Write a new value to R0 - // *r0 = *r0 | 0x00; + *r0 = *r0 | 0x00; // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { return EXIT_FAILURE; } - return EXIT_SUCCESS; -} \ No newline at end of file +} From 271d44ad6c33986afb43468926c94afaaa2f44b3 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:58:21 -0300 Subject: [PATCH 07/42] Update registers.c --- registers.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/registers.c b/registers.c index f029d88..258dbe9 100644 --- a/registers.c +++ b/registers.c @@ -62,9 +62,14 @@ int main() { unsigned short *base_address = (unsigned short *)map; unsigned short *r0 = base_address + 0x00; unsigned short *r1 = base_address + 0x01; + + set_color( r0, r1, r2, 1,0,1); + printf("Current value of R0: 0x%02x\n", *r0); printf("Current value of R1: 0x%02x\n", *r1); + + // Write a new value to R0 *r0 = *r0 | 0x00; From 61168264255030df6071258b8a0ae62caecd4afa Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 16:44:18 -0300 Subject: [PATCH 08/42] ainda n --- libregisters.a | Bin 4212 -> 3796 bytes libregisters.h | 30 ++++++++++++++---------------- programa | Bin 16472 -> 16344 bytes registers.bin | Bin 32 -> 32 bytes registers.c | 9 +++++---- registers.o | Bin 4000 -> 3600 bytes 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/libregisters.a b/libregisters.a index a11b67946d49129df2a49fa7cfb2cdf8717febb7..d5d2ec1e57f28e30aab2bcc4d796357bdc4fdff8 100644 GIT binary patch delta 506 zcmeyOa7A{4g@T!d0u&^0F)%Q&0C5L0o*1LWnwyxJ$1riaA(OG$#8XC06SyY+JI(lg z@+rn-o)`Sv88$F<9`fjReX-e+sf}^6K8p?Gq{%rfy6T}HJi1F?0A(IH?qmd->9_+# zf|(wj$6o;13?OZjXS2vme#&A$S(&w!-MO@=C^fHS@)=gw$s%k^gg%2*x$+6LF*)np=a~GFM`|+*y8$CFSPm$i0>lE7Ke7q4W-R5OsYaRY^6 z+Io@1`6vJ6&YoPubAxFz^W-pIa}IW}2@DaFr}COJU1kP)Mr`sEUJV#ig-?U?22}sT z$)SAaOqDE?`}pjbma;&U@@X)wV42LvZ^wB8P;%#u$>49Hc^8 zWeGy#Tm&n6)03#7w)D_cJXjH-;LlOggCI2Y5(A|M^u1&w8psE;GxN=S-wy9{&rf-N zxOaF+HgHiu2$^X-Xb*U4?J6WZ?nF|Hr!HL5;*n$)O+~bL;jW(yDTS3mB8!FX5BL|X z;7N#KXR)8;@QkeQM0K_DPOUqs<<_WkX`+%>>-w8dyZT11jOW%;V#!ZOKWLyWp`^5G zx|J)N=GM|eNp5kusXETxs-x_3iCx;z%)ftIb?)Dt2Xtg2KO{oROQ`Fh#@4Q+(U>V1JLqz!) ze6)D?rD)|r7`aSr*O1VhWm9|`?pdez{P*68bZYWiBniZJsCdv;#4}$=Lx?z+7qt5X4W7wZnWVum+T@|iyYYSK5xirM|8a29jn*Zv+8iD=^azzY>~F%j z;B{EoArvgR;ihoi^Mth&>=G6(6MPlE5s`z}_JEDPJ;Mgn>;ZC`gR}O%a7y&G%30CJ zpD`>~VNnba$qd`#2nm{-s}3ItnIY~Nfquz`mtoNn;1zq*Gy^r-by=F-3pgeP_;qWu PD?nNbkY{#yE*<^@+Ro$V diff --git a/libregisters.h b/libregisters.h index dae77e8..6452919 100644 --- a/libregisters.h +++ b/libregisters.h @@ -10,32 +10,30 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); - -void set_color(uint16_t *r0, uint16_t *r1, uint16_t *r2, int bit10, int bit11, int bit12) { +//esse vai mudar o led do status +void set_color(unsigned short r0, int bit10, int bit11, int bit12) { if (bit10 == 1) { - *r0 |= (0x1 << 10); // Ativa o bit de cor RED - *r1 |= 255; // Preenche os bits de cor em r1 do intervalo de 0-7 + r0 |= (0x1 << 10); // Ativa o bit de cor RED + + } else if (bit10 == 0) { - *r0 &= ~(0x1 << 10); // Zera o bit 10 - *r1 &= ~(0xFF); // Zera os bits de cor em r1 do intervalo de 0-7 + r0 &= ~(0x1 << 10); // Zera o bit 1 } - if (bit11 == 1) { - *r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 - *r1 |= 0xFF00; // Preenche os bits de cor em r1 do intervalo 8-15 + r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 + } else if (bit11 == 0) { - *r0 &= ~(0x1 << 11); // Zera o bit 11 - *r1 &= ~(0xFF00); // Zera os bits de cor em r1 do intervalo 8-15 + r0 &= ~(0x1 << 11); // Zera o bit 11 } - if (bit12 == 1) { - *r0 |= (0x1 << 12); // Ativa o bit de cor BLUE - *r2 |= 255; // Preenche os bits de cor em r2 + r0 |= (0x1 << 12); // Ativa o bit de cor BLUE } else if (bit12 == 0) { - *r0 &= ~(0x1 << 12); // Zera o bit 12 - *r2 &= ~(0xFF); // Zera os bits de cor em r2 + r0 &= ~(0x1 << 12); // Zera o bit 12 } + } +// criar outro com as especificações acima só que mudando apenas os rgb + // Funções de controle para o hardware diff --git a/programa b/programa index 855b54abb2dca8d2c9c53cda1e3dd992ca68fea2..28d41fefc632f280b264fefd3219fbecd275318e 100755 GIT binary patch delta 2459 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 diff --git a/registers.bin b/registers.bin index cf6241818ab85c9411291cb8953e6938524e70d5..49080ab7ba42b6e25ae2863b65d402d85b88ebf5 100644 GIT binary patch literal 32 dcmWd@`v3nwgLjyRtB;SrLb$(AkP8Dc005>z2H*ey literal 32 dcmWd@`v3nwLwuNrtB;SrLb$(AkP8Dc005{-2J`>` diff --git a/registers.c b/registers.c index 258dbe9..fea2110 100644 --- a/registers.c +++ b/registers.c @@ -62,16 +62,17 @@ int main() { unsigned short *base_address = (unsigned short *)map; unsigned short *r0 = base_address + 0x00; unsigned short *r1 = base_address + 0x01; + unsigned short *r2 = base_address + 0x02; - set_color( r0, r1, r2, 1,0,1); + set_color( *r0,1,1, 1); - printf("Current value of R0: 0x%02x\n", *r0); - printf("Current value of R1: 0x%02x\n", *r1); + //printf("Current value of R0: 0x%02x\n", *r0); + //printf("Current value of R1: 0x%02x\n", *r1); // Write a new value to R0 - *r0 = *r0 | 0x00; + // *r0 = *r0 | 0x00; // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { diff --git a/registers.o b/registers.o index 9287434afe7a041c3e2f24f963f03b681881e55d..bfb098b4162c281dd823304da6c3efae14aae833 100644 GIT binary patch delta 457 zcmZ1=KS5@K2GaztiCU)_zfb&@%=3bOJHrNs&O;vEt}iyHGPW^Jj%K!DoHTg`v#wm| z2aoR37eJW@jyo9{7#JLPfJiXYqx1OWd(5hn1zGGT`?IvNJC_y}rRJ4P{=wop*@1P5 z&}X1R23J0THYR6YHl|lR>>QI7d89TQuo*CNg5`kHDU%Pfi8E$T-pF1y*@i=La{|W( zM$c1BAe{^hAc`4?i$EM8xC9kv0kTnJQT(@8Y#%TFL@Z%BR7!f@QK5pB?83kTZc`#^gpmbIu){ o5MILMgFs#a$ZJ5*Fqx6xobv%2gjX}!5y+F^g78WvGxEv<0QSvubN~PV delta 816 zcmZ`$O=uHQ5PtiYbbpepQLL3f7f}dBA?d+D4pAx#20Wq=YoYccXLDJ@`IU3b-4Es<#2DL|3$0(-T`>pF`_I3fO}ob}cP*_G$I>@6 zwxe`nUW_WcCoFfXO2_ax`__Q7?+#dfqoa6S6Snv?_ZXtWDc Date: Fri, 26 Apr 2024 16:46:22 -0300 Subject: [PATCH 09/42] Update registers.c --- registers.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/registers.c b/registers.c index fea2110..dcaf9e0 100644 --- a/registers.c +++ b/registers.c @@ -50,6 +50,18 @@ int registers_release(void* map, int file_size, int fd) { return 0; } +void imprime_binario(unsigned short x) +{ + for (int i = 31; i >= 0; i--) { + unsigned int mask = 0x1 << i; + if ((x & mask) == 0) { + printf("0"); + } else { + printf("1"); + } + } + printf("\n"); +} int main() { int fd; From 2b9b4940b785544c95b1f5a6d0bec99d5225dd9c Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:47:00 -0300 Subject: [PATCH 10/42] Update registers.c --- registers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registers.c b/registers.c index dcaf9e0..1711d3b 100644 --- a/registers.c +++ b/registers.c @@ -77,7 +77,7 @@ int main() { unsigned short *r2 = base_address + 0x02; set_color( *r0,1,1, 1); - + imprime_binario(&r0); //printf("Current value of R0: 0x%02x\n", *r0); //printf("Current value of R1: 0x%02x\n", *r1); From 4a30ff6fe42d11334e9b70265ae83f569f772712 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 17:09:42 -0300 Subject: [PATCH 11/42] funcionando o LED status set --- libregisters.h | 14 +++++++------- programa | Bin 16344 -> 16472 bytes registers | Bin 16432 -> 0 bytes registers.bin | Bin 32 -> 32 bytes registers.c | 25 ++++++++++++------------- 5 files changed, 19 insertions(+), 20 deletions(-) delete mode 100755 registers diff --git a/libregisters.h b/libregisters.h index 6452919..8b44eef 100644 --- a/libregisters.h +++ b/libregisters.h @@ -11,24 +11,24 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); //esse vai mudar o led do status -void set_color(unsigned short r0, int bit10, int bit11, int bit12) { +void set_color(unsigned short*r0, int bit10, int bit11, int bit12) { if (bit10 == 1) { - r0 |= (0x1 << 10); // Ativa o bit de cor RED + *r0 |= (0x1 << 10); // Ativa o bit de cor RED } else if (bit10 == 0) { - r0 &= ~(0x1 << 10); // Zera o bit 1 + *r0 &= ~(0x1 << 10); // Zera o bit 1 } if (bit11 == 1) { - r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 + *r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 } else if (bit11 == 0) { - r0 &= ~(0x1 << 11); // Zera o bit 11 + *r0 &= ~(0x1 << 11); // Zera o bit 11 } if (bit12 == 1) { - r0 |= (0x1 << 12); // Ativa o bit de cor BLUE + *r0 |= (0x1 << 12); // Ativa o bit de cor BLUE } else if (bit12 == 0) { - r0 &= ~(0x1 << 12); // Zera o bit 12 + *r0 &= ~(0x1 << 12); // Zera o bit 12 } } diff --git a/programa b/programa index 28d41fefc632f280b264fefd3219fbecd275318e..ef7dd77ae86514b1c97ab965586da932934159fc 100755 GIT binary patch delta 3169 zcmZ`*4Qx}_6~5QMu}QFBet34m5*wN}%^LrtNu7jvm{KoB1<`eh+Kx^kq{$LsK#jc_ zRyWBEU0fF_^sF6pS`}1nMO!yD3KCGMG+iftCMFqmKM@*JsM5(O*+^2fIS_a|_r3dE zlWo`X{q8yEJLjEy?tS;&$$`m1I${&H3q)=K1<0|Z55H@+7ATUn;OJGCd0wwb^Li+z zt__ zr?t^HU`Qv@jWDkjX^-5u%l$U^hRzLB$U3GA(FwS&+gY_Q8tLxq3X{&x{gJNjU7g*1 zyE=Qj`gfCk;r>05Uf8Bz14(_+inh(09^cqm@2Yn-!jBp&VO(E3pdnh!L`O9INAr-P zZ71f&>q$!c`-=#2BV2dt=$lwyEqR&C(ei#1LI0#YA1pjCIA1&xC{_%EU+RsDrWke@ zYN-Z}7(~04do#$aR|K|k5b)MOrw1!g$B{x^+##x7>s*NY&e*)_SnI zkHuWL@uDP2BVSl5Z}+iUEZpc)WhBKY*Ih5q+3Jb2d^IO6ebCFSl^;XSAQVD@n{}E&9C2eg1$tg@c5V zyKuhPQ{!T~WH1{_#5sExXGikcKBz451uZT6BN`Cz5?PNMJMU&^zXL5x+S9zM5 zEiBk~muMosL=L1sV((7Igt`$pS@MW8sZcX_mFc8$I%yI$pJ6ZSjkDOnLP`CA9Cdwu z)OYU4CCT9GSWZvK_SSrRLa|SsWr04xKRL%nYz4;f;aJTn?s_3}36~_*aT#^#b9ko7 zq-NBy5*S$~@Jy-AaPPJxUHW7^R=V2!y5r@6>K913=R5uTBR%2$t{we*$i`?m+_NX* z_+HoUXpduWuj6S?i^CJE_SDDB|HJ70(ujG{3hlb55b@9??KdTfy>GV=-$T^RNz(5S ze~h>rF+MLze|6x%yC6wRh_zox(rQfe7l^Hh_Yj|lKRMQZ#epslB7;0(luzylaM*zV zi~p3QQ7Ch+eL8>-Q4e)SEX6-N)SFO0!W6u%Mtlwb$1&n5rVFmLzM|P!WYGMo(1<4) zv$JID=HXRmrN*!TzjRjmc3_6j-pAgWV;5qkZ=t;$F&9lMP$Y~WE%mOjtKSI1zZHzf z+D)bQ|PFEGZ3L9K*A;!;V{xv3(FyyKdn)m^)p7Svn zb8YoDv5yNjd=>UGRG)}*mgRD8U*xhDP8grj4EteBvkFGtO{P&^%J<=l`!B)>zrV0h ztU2I{M})MeKtqb*s>fwlzkZ6Dke6_v!EY?)?-gkbn!RnB&>Hxm*F}e6%q!Y2J5;KI z*AOVN;pDG-AEHJWsu%SSVAc-IsDw^|vtHa3K-o&{#2UEYw+;2hX!%!(qGu0h?K!5` z2t+Ngq9vr0MW+YlJ|*{Wv)+D+$JxY}N!}gkbWXOWx%Do$F7j}H1L09oKZ8~!*W0k+ zQE|YCt0b`Xb|^G_8RfPL^;S|&Yyqy|FwLW@H${1`qpbq@Y;Iw;ow3P#5V3~GSze0< znNPsjAlTcu@9(*7fo8wk zq}~`~@S@*mQs0z881ws}&u@jS-;;Z{V|dSEZ5W!rCgB;-yxwP;Xi#*g;lO&I`TIUa KDyML;sq#N2v_NA3 delta 2459 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 Ow|rJz2H*ey diff --git a/registers.c b/registers.c index 1711d3b..2774e27 100644 --- a/registers.c +++ b/registers.c @@ -50,19 +50,16 @@ int registers_release(void* map, int file_size, int fd) { return 0; } -void imprime_binario(unsigned short x) -{ - for (int i = 31; i >= 0; i--) { - unsigned int mask = 0x1 << i; - if ((x & mask) == 0) { - printf("0"); - } else { - printf("1"); - } + +void print_binary(unsigned short value) { + int i; + for (i = 15; i >= 0; i--) { + printf("%d", (value >> i) & 1); } printf("\n"); } + int main() { int fd; // Open the file and map it into memory @@ -76,16 +73,18 @@ int main() { unsigned short *r1 = base_address + 0x01; unsigned short *r2 = base_address + 0x02; - set_color( *r0,1,1, 1); - imprime_binario(&r0); - //printf("Current value of R0: 0x%02x\n", *r0); - //printf("Current value of R1: 0x%02x\n", *r1); + + + printf("Current value of R0: 0x%02x\n", *r0); + printf("Current value of R1: 0x%02x\n", *r1); // Write a new value to R0 // *r0 = *r0 | 0x00; + set_color(r0,1,0, 1); + print_binary(*r0); // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { return EXIT_FAILURE; From 18eed0763e9f3a435856234aebcf46b9e37165bf Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 17:10:20 -0300 Subject: [PATCH 12/42] e o bin mudou pra led roxo --- registers.bin | Bin 32 -> 32 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/registers.bin b/registers.bin index 1be4dfb4439faa88c5e745a0cd2ccedabb428a46..a935d4bb90dfd1f1e9460d438a194b5b3e0a822b 100644 GIT binary patch literal 32 dcmWd@`~UwxLwuNrtB;SrLb$(AkP8Dc005}P2KWE~ literal 32 dcmWd@`~UwxLwJ~ntB;SrLb$(AkP8Dc005`;2Jip? From 5732a0fd4a152129aaa55ce04c73798fe22b1282 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 17:22:06 -0300 Subject: [PATCH 13/42] setDisplay funcionando --- libregisters.h | 24 +++++++++++++++++++++++- programa | Bin 16472 -> 16512 bytes registers.bin | Bin 32 -> 1024 bytes registers.c | 3 ++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/libregisters.h b/libregisters.h index 8b44eef..421eb09 100644 --- a/libregisters.h +++ b/libregisters.h @@ -11,7 +11,7 @@ uint16_t read_register(uint16_t *reg); void write_register(uint16_t *reg, uint16_t value); //esse vai mudar o led do status -void set_color(unsigned short*r0, int bit10, int bit11, int bit12) { +void set_colorLed(unsigned short*r0, int bit10, int bit11, int bit12) { if (bit10 == 1) { *r0 |= (0x1 << 10); // Ativa o bit de cor RED @@ -31,6 +31,28 @@ void set_color(unsigned short*r0, int bit10, int bit11, int bit12) { *r0 &= ~(0x1 << 12); // Zera o bit 12 } +} + +void set_colorDisplay(unsigned short*r1, unsigned short *r2, int red, int green, int blue) { + if (red == 1) { + *r1 |= 255; // Ativa o bit de cor RED + + + } else if (red == 0) { + *r1 &= ~(0xFF); // Zera o bit 1 + } + if (green == 1) { + *r1 |= (255 << 8); // Seta para 1 o bit 11 no registrador 0 + + } else if (green == 0) { + *r1 &= ~(0xFF00); // Zera o bit 11 + } + if (blue == 1) { + *r2 |= 255; // Ativa o bit de cor BLUE + } else if (blue == 0) { + *r2 &= ~(0xFF); // Zera o bit 12 + } + } // criar outro com as especificações acima só que mudando apenas os rgb diff --git a/programa b/programa index ef7dd77ae86514b1c97ab965586da932934159fc..10fe31a444a408e67e6d3b2af95dbbf6fa8b8553 100755 GIT binary patch delta 1363 zcmY*YZERCj7(VCjLt8r6?@KovyW1RWZj6m)od|)&RXf9CNN55wl|{gqU;x(|Clpv} z2$!N^y!>##i1C*g6UQa2orx|a0~1keqNW<-(9BrF+zKwCjMn3O?m3%ylHTW>_j%su zdC$FR<^(-4OwX>RlOs*j)~Rx0uBmcx(sh=IB90NGmp(%+{o+LWVN{uRFU-y6s`SM# zKE80|$(H8QmaD&=x@(*%nXjPCIO;e}kL$5~NRQ_9@T}gK?a_lX@z^YlxJSNrSQa#BTGXmA|0{r3X?Aa|{Yti+v)V+eWL@hB>zm=(fc^-YXusQ706Kfb1Scf@57Y4t>$|? z@LLu6=z1`XW2Q;enxv@t^G9%cHnt^%L|Dx)nnP#ttyPXs>en#%)Pwvti*Ur_d%B2; zp+q!?_se#hW-0DCfj={D1P4d%rnI@9{qP^WWcUWw(w~u1`8r|3(?FYzX-}W!Tx~kM z6Px+$JLVZXgSdcr8L>3S*bT(>rqW5+rLCb|Fs!M*_2_*TJ(kug-0;j17}Hj3k6{8&Cc#JSCzYov%9W37 z4?Ro>SMfxGsH}xC#YIP9 z#IH78=ADX-oBwZ3NXO#R4ULrlQwqmATWy2;A}_ss@W8>>x9!^t7dyYQFBf`V9Xxbk zV90nQ@FF!bT{laVonjEmH_<#+PALx7YsMk3IG5A delta 1070 zcmYjPZAepL6n@{kP2JSCxi99THoujeO^0)#xIUJX6#B6sK`D!VWte7^q@XB*u0lHz zS-(W+M@XRe$JD?KLMtp5`NJQT8VdvkwIVdPy`8&z0}q`0-20s8Iq!K7x2u~jbC8nr8HIPtTFuclR0=@-9f#T*WBqf& z3;wQbGnJm=#S>x1+L$_3bJbv+S3^!?V(pHfm24H-B85!C&P1t zg-*eo;aE}Se$(h){4#6mAW;Wr`{(e8^8NLmJt#7obH=eZ-g!lm&9A+S;kf4(kPFQa zxwtbo+&5;?7|$DPm0(R;d|(aLp2aDYnEp-1dJ%skjv>mo7<+^G5U~ldbDOa*h>o9( zMGy;qF?Ns=@(i&YF@{(V*|tox6&*RKAg2;F0%T!2G2cR?E!XV9{&89;Vdyd2Fw0=X zW}?F|Wjjm@Vb^9+EFhZz<_wEs1K%!zJHuj0!IPfg1nG#xdqC62olH%TX=zGg65o=M zn2fh7fZK&-T-d-*6n>OZA9Oo{bOqeSuJk`TG+}gzK;0}K?m!ReATIs@ay zCPzpp5Dkf@iOOBc@C|tlF%#mE2np7~R&1hwp{2xRPQ)Kwi*8~Si@5rD7-6KuR2`N& zU(||hd{6jlL6>l1tFR7?^CFNuP17|5$c14PjE2By2#kyn002S61>FDu literal 32 dcmWd@`~UwxLwuNrtB;SrLb$(AkP8Dc005}P2KWE~ diff --git a/registers.c b/registers.c index 2774e27..4b466ab 100644 --- a/registers.c +++ b/registers.c @@ -82,7 +82,8 @@ int main() { // Write a new value to R0 // *r0 = *r0 | 0x00; - set_color(r0,1,0, 1); + set_colorLed(r0,1,0, 1); + set_colorDisplay(r1,r2,0 , 1 ,1 ); print_binary(*r0); // Release resources From 13c6d4d2ec242f16f60ad4ee2430fdfeac437eea Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 17:36:47 -0300 Subject: [PATCH 14/42] onOff funcionando --- libregisters.h | 11 +++++++++++ programa | Bin 16512 -> 16544 bytes registers.bin | Bin 1024 -> 1024 bytes registers.c | 1 + 4 files changed, 12 insertions(+) diff --git a/libregisters.h b/libregisters.h index 421eb09..5738985 100644 --- a/libregisters.h +++ b/libregisters.h @@ -54,6 +54,17 @@ void set_colorDisplay(unsigned short*r1, unsigned short *r2, int red, int green } } + +void setOnOff(unsigned short *r0, int bit){ + + if(bit == 1 ){ + *r0 |= (0x1 << 0); + } + else if(bit == 0){ + *r0 &= ~(0x1 << 0); + } +} + // criar outro com as especificações acima só que mudando apenas os rgb diff --git a/programa b/programa index 10fe31a444a408e67e6d3b2af95dbbf6fa8b8553..af55e0d3f8c10aab1e7873f6639f3785d460d47d 100755 GIT binary patch delta 927 zcmYjQZAepL6u$4K?xUG=?rzNw^iEC9uc?ETG%|BKQSe6v^+PByAuvHw&}z^a7;9$b zk&o%7D<|6T(1eVYYs_W{yo^xu<$G;m*~Nt zqF4A1FpS;p3(5wxna0Pvl)56cE8Bi2ep)OnA%`wsJPfKHz)5XczFDB$wus&35XBv$ z_}YH46&`9WHdge^LeD}`#v$jih0yT(4y9g-@$*QG_=JSef)3@ZDBs)x9b0Ams*JYk z71j|vE$FW75|?9_=~R!pI!~};*CdXqsrqJ1E*yhsWRrvNK7>sENMfj!Kf=Xj* zS|fheV51F)|F27{2^#Pn#()yKi;qgwdVae2y_5`rvuvG&prc%m9NaGNC%?f^F-O{9 zrJ_zT&!PuL0~DAilHcOrpkdU^R7#AkOcwB5B7=AHk=rBh)xSxjmZAySCcNEl>pm5|uv*SWjb==X5H-|u|icfND(-5$8y0|ONh zi&QS?r?g!9OldJ6_UO8J<=G{*LJR2p%8T>k5WiqtTU|-+4sE=8bmwAIbyY_7voC$W zrG8B!n`as+kmu$Hjius=O~!oTwz&}R3w!6nTyUM8v-qxOW*a!p7n+VA#)C$y?R$zb znJFe_eY?U~(oWe!vQK!`=%~0rGGEBM?h6J~@rWvp$xJ$c#6es%I=vlg&m!vCsme}K zE$mH_#!j~=qw}pwDHN)5f#e;kyfKA-lgCz~JfrgV@u5F7>X{S-11YY1c0w=L+Hl-d z3m-6HDuj772(H#J)oDG&lGsQO7ta~tazO z=0|8Y+HO&8Fdct@?}eRU!DXRDTSe~I&!t>*G7F2c+6Rkf+uF%34|XiUSU=$!;Zwql zBx7#~ZxMD827WO1mC*5%u?&h_CM+TR{EM*zgvZwyJ4rZ9cm?fZG3>&lq8Va%S}cb~ zjEH7SE%hFt9$Tl7E^=lBCq*li;u3vFQM46gu26Lln{5S62I{#=S@N8mcSmk7zdu{c zA2Dpp;yBq~O?(;6;3E9TYaBoV>7MPQp7yN6^Y%tQDoDfjw;DK$J&puC#LhZ1)$m%~ z4S0f<`Uxn*`T7>!C6gS)aW1TEcq}CwW_am^(+`q$?~(@E5!^NUsGvy5?Q-{mA1B>4 hc@?5k+`>Z=>|+485j;-aT!TW+V6(>w_p#ek{ucwMMBxAc diff --git a/registers.bin b/registers.bin index 710cdff19f6b19c6d13757e85c6e91ff486279d0..ba1101279679d3a363bd46979826dfac2dc06268 100644 GIT binary patch delta 16 XcmZqRXy9NM7GwDTpP_mq`%h*7C>I58 delta 16 XcmZqRXy9NM7GwDTpTT(}`%h*7CjSLC diff --git a/registers.c b/registers.c index 4b466ab..2c8dc43 100644 --- a/registers.c +++ b/registers.c @@ -84,6 +84,7 @@ int main() { // *r0 = *r0 | 0x00; set_colorLed(r0,1,0, 1); set_colorDisplay(r1,r2,0 , 1 ,1 ); + setOnOff(r0,1); print_binary(*r0); // Release resources From a4f57b7e49992f0edc5e2e8eec6575cb6b1081c0 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 26 Apr 2024 17:43:43 -0300 Subject: [PATCH 15/42] setOnOffOperacao funcionando --- libregisters.h | 9 +++++++++ programa | Bin 16544 -> 16584 bytes registers.bin | Bin 1024 -> 32 bytes registers.c | 1 + 4 files changed, 10 insertions(+) diff --git a/libregisters.h b/libregisters.h index 5738985..e037658 100644 --- a/libregisters.h +++ b/libregisters.h @@ -65,6 +65,15 @@ void setOnOff(unsigned short *r0, int bit){ } } +void setOnOff_Operacao(unsigned short *r0, int bit){ + + if(bit == 0 ){ + *r0 |= (0x1 << 9); + } + else if(bit == 1){ + *r0 &= ~(0x1 << 9); + } +} // criar outro com as especificações acima só que mudando apenas os rgb diff --git a/programa b/programa index af55e0d3f8c10aab1e7873f6639f3785d460d47d..d09a0466674dcdcab975119f5312e5d0e6e8c902 100755 GIT binary patch delta 1303 zcmZ8ge`r%z6u$ShX_Ky9lQzjCw%8<9TibPA+N`xgB*8@!7^|X!V!>w8(v9p#oskI* zEL1Ha6VkYnf^bIq%h>8$|8&=* z#G0x2&y5$>wT)crGTl^qv!)AZOzAQlksQ(Rd^D8m4yQ=S`Aj7P9z`Ya$;I;)~u-#?!FXxY{1T zGF2)^DJZ1l8LMi-x^2*7bgX~1gx#Xvd0%%}6jzI4=i9||OYq#-@Yxtvt4*!g^hF+@ z_d9Yi?`!NhfZ271>tz)u`b4=I%g03d71(R?l%M9i>*}2)3)Hf2(zH9ACWpswqePOU zi*VaiOZ_lyDy2)1Z{FxpZdmy`rC`w~ylf=Ij{>W@jA3v#k{(EMDjGGM=v2S3(q zpdHF!%~%$_0};m%O+r&$qo={d=XY@+d(dAb8AyjL2m$+4p6JP3F(E|mXwnNlIvsL%Gc39=3l>(cW(q+cU_YV)Aq4v&Wuz%F7Ri|Q z^+qH_CLH#-}*U^pC(4>BmCg>C1nFHO2+jWh`a9NMKdix(_&3$ z$5_~xK*!Jj7#m`^zPi-FOAPQHtSGl=@}JOeS?he8p)@n{9RZuQFjgD?+j&cSHBF@VeQ2 z2yR#x(FnY-=2zFN1HQk_&G^fWYXL1e8b3FUqiuhTPZqmPQdN_qJP!Pqy%@}G?cxcb3xiE(302mzk^cB=Oa?*@g;TkmKZ8_eI5OUE&TZBm*aQ!J(3BD#`;TPgCeQ2$VK3TsL5&>;dxd06B5M+C zL|>zYHOPQ|%(da~Cz3^E;T-l2JVQ1QS?=6oQIi_A++v^}iB`cLk7V1VX+|`S@7|5$b|tJ004+J1>XPw literal 1024 lcmWd@WBC7{p*qaN)yKzQA>7|5$c14PjE2By2#kyn001C^1{DAR diff --git a/registers.c b/registers.c index 2c8dc43..10d1a3b 100644 --- a/registers.c +++ b/registers.c @@ -85,6 +85,7 @@ int main() { set_colorLed(r0,1,0, 1); set_colorDisplay(r1,r2,0 , 1 ,1 ); setOnOff(r0,1); + setOnOff_Operacao(r0,1); print_binary(*r0); // Release resources From 193eccfc1f61b265d9fed9b30145926422c889f6 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Sun, 28 Apr 2024 18:43:04 -0300 Subject: [PATCH 16/42] setModoExibicao feito --- libregisters.h | 29 +++++++++++++++++++++++++++++ programa | Bin 16584 -> 16624 bytes registers.bin | Bin 32 -> 32 bytes registers.c | 6 ++++-- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/libregisters.h b/libregisters.h index e037658..323709c 100644 --- a/libregisters.h +++ b/libregisters.h @@ -74,6 +74,35 @@ void setOnOff_Operacao(unsigned short *r0, int bit){ *r0 &= ~(0x1 << 9); } } + + +void setExibicao( unsigned short *r0, int bit1, int bit2){ + + if( bit1 == 0 && bit2 == 0){ + //estatico + *r0 &= ~(0x1 << 2); + *r0 &= ~(0x1 << 1); + } + + if( bit1 == 0 && bit2== 1){ + //deslizante + *r0 &= ~(0x1 << 2); + *r0 |= (0x1 << 1); + } + + if( bit1 == 1 && bit2 == 0){ + //piscante + *r0 |= (0x1 << 2); + *r0 &= ~(0x1 << 1); + } + + if( bit1 == 1 && bit2 == 1){ + //deslizante/piscante + *r0 |= (0x1 << 2); + *r0 |= (0x1 << 1); + } + +} // criar outro com as especificações acima só que mudando apenas os rgb diff --git a/programa b/programa index d09a0466674dcdcab975119f5312e5d0e6e8c902..6b49cff5b492cbdae9881ad6fc0088d2862bae82 100755 GIT binary patch delta 1439 zcmaJ>ZD?Cn7(VAD{YbPf$H zlt|?+9kYA)M^Hf-Wr#o2J7_zl?n7+L#tiC@{!kiWVv3b!S(SEecYM#i#~Aiw2hM%Y zdEe)G-uIrvy|cqKKTO|mqAg>g1$(TL7$a5*F8Y*hiJ99aeJ|~ywz#kmrB`wXsiyag?pxH9hz23+I@_r)jT?WhpS1BbJ+dX21!<56>Xw_7HzXy0S$Kxw|;%x9;B!)2UgT0F$boyRt!=|o=0pEW8>iIhPS z`6lx~veQB;0ym66kNSUvY#7zEmj$KBYmrge(@bvQKAu_cO)Qj|CRWqzH|X*xjP~*8YQfL^pbfLEnCn&_M_E1f4#DH5x_m`3i@C z2Amx@FTz0ZabF#FWQ0Wuhj0*|XAOKA^wN_s7YxuUSj6WiU{eBg20}_e`3w8~RnXPP z93yN`RXO|l(F*+Jw_#`p_VHN(_9_1I7jT)n3r7`y*)d!$fTq;ej^fIT@9`F5QE!P+ zG|;aqV|EzaxtsOX=wI!;WuZA3Ze8|o^@v)8oHBvDf>IZAlD--^-8Rnr)zH>{y4pn? zq+6bV(HyeFFxB4d>%!lU$exuxFH4`jKs&s&7Y=oJeMcnc56LmwL*8+brSBM=G2}Rz zk2oUIK*C2b(C)QPU>4im%E*s!6&>fLOSk8%?C+jfQx7STiKZ&mpml9;X_Q{30H>Cwxsf?>_LUa(pg*cJQJ7LB^%w zC-sH_v0b$gEBGVC2K|@-R>MBaWSB9xzjC@&aQj`;e$uqUyh-kkNZ&3(+^r+Q!7$Vs z_FAh^#wjaO9);?VtlWgUlVRvHm&%Wjr2Jn(MJmQglPN4SOQM}9kBp0`!{11h;@k95o?zi>qeYIe2G}{hp{Pen5|R|)n*fY z1~<+7X(sfTO-X6ks}pN(oIMz{vA=a!Td4@MVo+A74&N~%*7rQ)KcMT?usgByp6 zgc_6h;?TH?z5}0aA^C`bS0+SifOr<|@q(Vzn4m4MS8yaiUVa-)hevr4+haS%v}Qh zfV!PEKf)p^XGBfmQ9(RyHwfaD;#n1qf^tWWw#Foj`RI;j>H&R8j=sn&CpWNNEH7b{ YjzYQ9u2C1tf__D5bp027|5$b|tJ004+J1>XPw diff --git a/registers.c b/registers.c index 10d1a3b..fa24a8f 100644 --- a/registers.c +++ b/registers.c @@ -82,10 +82,12 @@ int main() { // Write a new value to R0 // *r0 = *r0 | 0x00; - set_colorLed(r0,1,0, 1); - set_colorDisplay(r1,r2,0 , 1 ,1 ); + set_colorLed(r0,0,0, 1); + set_colorDisplay(r1,r2,0 , 0 ,1 ); setOnOff(r0,1); setOnOff_Operacao(r0,1); + //ta invertido + setExibicao(r0, 1,1); print_binary(*r0); // Release resources From 867d35fc8607a98725dcbbfe5953ec8f1a8c1e13 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Sun, 28 Apr 2024 20:39:15 -0300 Subject: [PATCH 17/42] get e setVelocidade --- libregisters.h | 30 +++++++++++++++++++++++++++++- programa | Bin 16624 -> 16704 bytes registers.bin | Bin 32 -> 1024 bytes registers.c | 2 ++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/libregisters.h b/libregisters.h index 323709c..5f1e22b 100644 --- a/libregisters.h +++ b/libregisters.h @@ -106,7 +106,35 @@ void setExibicao( unsigned short *r0, int bit1, int bit2){ // criar outro com as especificações acima só que mudando apenas os rgb -// Funções de controle para o hardware +//ainda com alguns problemas +void setVelocidade(unsigned short *r0, int velocidade){ + + int velo = (velocidade / 100) -1; + + *r0 &= ~(0x3F << 3); + + *r0 |= (velo & 0x3F) << 3; +} + + + +// Funções de GET + + +const char * getEstadoDisplay( unsigned short *r0){ + + return (*r0 & ( 0x1 << 0)) == 0 ? "desligado" : "ligado"; +} + +const char * getEstadoLed( unsigned short *r0){ + + return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; +} + +const char * getEstadoLed( unsigned short *r0){ + + return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; +} #endif /* REGISTERS_H */ diff --git a/programa b/programa index 6b49cff5b492cbdae9881ad6fc0088d2862bae82..80e4bd0d78fb62c672f643795e68d06e1447970f 100755 GIT binary patch delta 1810 zcmZWqeN2-_9KL&Bq0qr-`6`9Yejq4|f<+*Tfj~x0HD((mux}%wpqMVz0f}T|sKqU> z#SFNZY-am|WXZD3ENV4^b4WFDl8~jExcP_1nz*D+gP?3whP-?3eNV!+OYWZEJBtMtT_u6sfEJx@!-(|+A{_(8oV z{D(a}pAe4Ql&}&hx*CX4#l7GOx?^eQNLztnQMtr7ZHh^7%B7%tAsm(43gR?5vZM~Y zfB8w;%K1i*^1DariNiUL1Zn5S15tW-yervrG@&KMNXP>NEH4a}leONl<8M{<1RHNE z5&~`pNg%FvS>aF!2aob|>^0V&Wy_zMS5>a$Loo{_SBvB^aJxOvzRy};^b!0#iaYKJ z^a$?=u9fErb49CwP2W6QkzG;up2%uP)+54iH@KjC8cxNqMpTRkujs_f!aW=Aox*(+ z`y{*8S*7nr_*=w|KSi$}EYLvD0_l!iM7Jc?#O`LVUpbYe_wwwS)@1};Mo5=&gu>;1 z87r|=_I{(g=$WSDTF?9)aE;0p)E!=~M|3?p$`hQ&Bx8Kx$6Z7do?zEBf3jMwz$lkA zC$10SEYPB3Jd_jV+HLMx#_ZAWH+r7CEcqQ5ERVUqz|XZO3{{R8*jLXJ8hgq zy~r3@q1PK@B{{1SBXg=caXIu(&Q#)%Jt@Q6+Tm;8)$H{X0r*H{`<33;?cVl|y}ssd zduvB$v%R3hNNAqC`2ZSA!(97FRnGt?fwzFSfU`i~w5omuY@AWm6r3XYv8t{G{si0( zl%J@o54aWB4=kKj)f2#@z)9c*;6q^c**}p$BEN2*V{B%(|ypdvVG3Hgnn4VY!KE7 zSkKrgXI|bUta6R@dfhLwv@@R_a&4irY{KQ23=*p> zt)SnreWjUo#6%8e@dgOd`T*`h#&pR{GOZfDwCv?P{O2-sYKu?~u~VfM7A?)8KX8kN zwe>f?Hs2R9xuS-47l@k^{7Jz-6}b}dTqc6THG&Y34xZQEnywRP1aD*eHdw61P|cE+ zB-IF7z-BfKb(@H-;?Ie3TL;p_u5GYveL<)@%{r}p9WdV&e1S#h-x5)~!J9}fG1Uk{ zKqqsRS*)Lls2&ley$(G3xk|s*){|@y_66QK{gs6gHN&H%6rT8BV~)*~S)?R6WGwen z)2`M|H-1lEf1Up8V*4u&q;|A+HnsZvE$!ZBZ)<3-qFW02H{F$`(+1X1Rcw6zhM87& zq>6t4*Q!d)|NB#7=IRpjeurNBIX(>4SF2PqC9sB?3ga8)x@wl$P)!AGW)n55{{dEw BLu3E| delta 1361 zcmZXUeQeW37{~9f8~e3kuAN&8}eZlsG8T4MM|7X4#U_m9~k1coDm zVe(Qk)2wF0hs0>WWDD^v{sH_*254|(lVxF1)PEMESuv<3*6dZXw{Sk!yO}wj&xJ2I(3TnZlb}nm{IbTLr&2V0fZT*g{M{b$rycyY!JdWHu$N72W?teJ{8aagg1?hQ+`A8?$ z5C$iGhMQpVr^Rk(o?V~}M-7h8;IeOHl^0vd%EE;vQpFe2K)qK8%8HSq#baRgm$Lk6 z*z7N%eGv1P(h+FG`EN+z`~^JldvagE9^zmPcyjmSY68jw9#0ZiI`(}SNg_|!yV&#j z>nv?_eV%5v1aupCwYTBu)@N9=VP4t#orR_SaJp(29fQ%TgDg#oo@oD?&psttN6yT2{w*f^eBNbF=okxW@onSY>eCvHN*N>G?p@v%ZF zTwQTP-!|P{fWK`Aa}zDRB1;y-59r;3UU61~culllCCGN5HF_+gD!=BCa`wZ)WxdMk zaY_AUl@&uB`zH3V5)_)CrABwRs;oa%R`z`{;(+kdce3+YxP|KrqH{U`)0p+6$YSe7 z;s4n<_-b|bfSGl*2PxbLoiKNAKg!I(XHyoounzhgDr_rH-)z9o4ZG+l_;yq}9{W#& l7F5GNS$u_GnteMsWvLwK4~J~tTIro(@LM=U3&GvE@m~|(q6+{3 diff --git a/registers.bin b/registers.bin index 354a58b3b1169c27c6c258c909f46255095dd6c7..ed7d698e4b0210083d31272d6df49fceb7e13072 100644 GIT binary patch literal 1024 lcmWd^U|{&q;2h@R>f__D5bp02f__D5bp02 Date: Mon, 29 Apr 2024 19:13:01 -0300 Subject: [PATCH 18/42] fiz bastante coisas, principal getCount --- libregisters.h | 116 ++++++++++++++++++++++++++++++++++++++++++++++++- programa | Bin 16704 -> 16944 bytes registers.bin | Bin 1024 -> 1024 bytes registers.c | 15 +++++-- 4 files changed, 125 insertions(+), 6 deletions(-) diff --git a/libregisters.h b/libregisters.h index 5f1e22b..b8b4715 100644 --- a/libregisters.h +++ b/libregisters.h @@ -131,11 +131,123 @@ const char * getEstadoLed( unsigned short *r0){ return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; } -const char * getEstadoLed( unsigned short *r0){ +const char * getCorLed( unsigned short *r0){ - return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; + if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "white"; + } + + if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "yellow"; + } + + if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "cian"; + } + + if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "pink"; + } + + if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "red"; + } + + if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "green"; + } + + if (!(*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "blue"; + } + +} + +const char * getCorDisplay( unsigned short *r1 , unsigned short * r2 ){ + + if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "white"; + } + + if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "yellow"; + } + + if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "cian"; + } + + if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "pink"; + } + + if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "red"; + } + + if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "green"; + } + + if (!(*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "blue"; + } + +} + +const char * getBateryLevel( unsigned short * r3){ + + if (!(*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { + return "critico"; + } + + if (!(*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { + return "baixo"; + } + + if ((*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { + return "médio"; + } + + if ((*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { + return "alto"; + } + +} + +const char * getModoExibicao( unsigned short *r0){ + if (!(*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { + return "estático"; + } + if (!(*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { + return "deslizante"; + } + if ((*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { + return "piscante"; + } + if ((*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { + return "deslizante/piscante"; + } } +int calcularQuantidadeMensagem ( unsigned short *r3){ + + int quantidade =0; + + unsigned short bits_relevantes = ( *r3>> 2) & 0xF; + + for(int i = 0; i < 4; i++){ + + if(bits_relevantes & (0x1 << i)){ + quantidade += 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 Date: Mon, 29 Apr 2024 19:31:48 -0300 Subject: [PATCH 19/42] calcularTemperatura funcionando --- libregisters.h | 33 +++++++++++++++++++++++++++++++++ programa | Bin 16944 -> 21128 bytes registers.bin | Bin 1024 -> 32 bytes registers.c | 4 +++- 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/libregisters.h b/libregisters.h index b8b4715..16c6b3b 100644 --- a/libregisters.h +++ b/libregisters.h @@ -246,6 +246,39 @@ int calcularQuantidadeMensagem ( unsigned short *r3){ return quantidade; } +int calcularVelocidade ( unsigned short *r0){ + + int quantidade =0; + + unsigned short bits_relevantes = ( *r0>> 3) & 0xF; + + for(int i = 0; i < 6; i++){ + + if(bits_relevantes & (0x1 << i)){ + quantidade += (1<> 6) & 0x3FF; + + // Converter para decimal e considerar complemento de dois para valores negativos + int valor_decimal; + if (bits_relevantes & 0x200) { // Se o bit mais significativo estiver definido, é negativo + valor_decimal = -(0x3FF - bits_relevantes + 1); + } else { + valor_decimal = bits_relevantes; + } + + // Calcular a temperatura em graus Celsius + float temperatura = valor_decimal / 10.0f; + return temperatura; +} #endif /* REGISTERS_H */ diff --git a/programa b/programa index 80407f0a0cc96a81e819f08bf0dd62c47185561d..0eb73bd0b525cc7a716435af781c3629a18ca8c9 100755 GIT binary patch delta 3333 zcmZWr4Nz3q6@Ks0g$0q_g|L6Xx*}qQ0Tu)$roduYyV_9DmNd}B85Br=Oac@tI)h7! zCQvj*Pm`!Kb{sRAW;*>L*=A(ygy2XOtkXi%X-#G@3;wOuHpDf~iX^Y!eeXV8w|8dm zch7ged(OS*-S_qm?GyXn76-pBjc-1bbJ@4lC@4)sf!iY3uQ88HasM9{>r`ID$a%4F zb(N|9uIfkeh@{#lRHRqMWD}S6acN&Q{YL!j@}5Ff8I5BqEsW7osaBi&Fb&O1dmkJ7 z=Hai>Uex{bUw>ZkwE1?QeDGvbzW+eXe4Tj2u?g`Jj=6{lOC$Jj1fLYa4{|;Z9D7DuI}*Vw&y71yMDTcIK20yY z6X9Ts(%Mi2&yr|uID*%z!F;0;e1awhjz{oI7I`dfvc^9jm#kk_Aqd|6qaBhw>FpiU zpH(DsNdxFR^2+a5P_FT~4~Ah`l^}!+j(M=}mp^L%F3Ns8%03=tzaC{DjI#Gf*~#5e zL}xkGn=^h9#(XV7V*d)vHIo))b-<8}RlVBHw zTX6{9WT)xW^i&+W{iB`nAc{248s@1MZIo-SLf>kx(%A&zW)c;cS5d%hi)Ge?KrVAO z%#^s!M9luoN)?tW(MtO)mFUk|YGSRBb&GV|nngWU6V+N{MGJk;>PCM==|5I_yRA%T z#-hr}VauewHj82j2J0?^k3R?6i+URcIT1~wq!XK^O(|3ZFakuN(bzD z=ug{obj*`WBX(z;qHInjV_I8ke|PY_C(O$19q!5At|`-V@qcWS^B{_$wj zb7$EhsY4mPP(PH#w)A`M8BTfbtz<7M4qOs5^4Q0%-xIzS$1Dt544;jL3^|@~$Y5N$ z1*-@dww(zXOr8Z0o`s0$y|-N~Lx1O0Z+{)VmS)ZT=&me#2kI{MOGtZZKU;*uZ>jS z57GAYwVo-cSyU&YzQlFY;08Q%2>BL9!#GFstsIp&%;jdt>$&{*A(~EiugFx*VOHj# zf$3gY5PQ29gx!-LvNt>UmpkOnD3Cr%rnZbU@t1TkV`F|dK9ty_I;s8+D}*P22V^)k z+J6o?_C)$0C(&V-o)1xm!{K{?46I%w>@&v7^eeu*MMABs=hA7WSY%_qQ0K8JDGykw zSROGl&s(2Alo%FdSy9|EMXdDY&!1K#b1ceMNbvk8LWYL%7O!D1>s}m1(2INu%O9*! zgU<2Ioe%!^OH{dT40{+KVaJJu+D4ZhS@GBAWO;&p(MZ26>t#T~}PhCdgfN$JH z0ALt62Yl||2!Q{wKLK69KiqsFmd=x8d_{V4 zX{_{YVjTX_Sn8*+XAk__9`V;L`gg+LdxILX?6C(hd^SjXF#Iis!$CThWly_^;T($j z1**T8Am+A+2>z+8O?v9eD=iY7EW9A#d#p6=@{-1F?e7&IcBS=H(`=qktnqKpw}@gj zy(^h%uwb`XO9`$UHhx2430bSdPZZ1oCM6UWK)t?jqvR@~pA{Aq@=K1QLw7+LqzKv# zOXH_85CyByRYS9dyO5@#s6b1jX|^F>GA@0^8FaEJUlN@3_o9*dCs+~D?yDfAqZ~%I zPrgV_3#-Ai+0%T>O17_8KX8iNoR^Jwkv#=-l58slYwE7dByvzFHFR%#L8jj%ihi-uL94u869~IZ7H$n zs^QIKrHnxAa`GwZz_QsCR z_D0f|mYOvF>E@j;?f79+W0SwUv|aN5Vf{>ubUcX;m**#F#}?1vLisu)FQrz}9x_!F zn6#s$;TUZJ>n&23qTy{iRN;!}r?IPyE>x`3te!GTa4%YYWwaRkr qhnCSz36&M1n>JTg=-q0%Njg-yF5b9Nwcezu%5~DOH&Mcd?Ee9r$aA#- delta 2969 zcmZ8j3v5$W7(VyTZe1O$9j;wV>1r8+ZEh_SoMP&3u_g6^8=Cn*V{lQ7iN?)racE|z z17#^A!`}yx5En!PMia0Y$D(rznP_}Wd<03*NrG+?q>O>v1h3z@_uP5uNzVDs|NY*o!MUu$RZ2hGWtf#z}9khWFo z`nK@pxK-BeULENrslXwm8-;XZnBI}Txw`3UU73mdb(-y`ZF0Ra_Wx;UT7K@T{e7Eb z4%_C1^Kxt6-c|C(qu;*r=Dn#+S*PWMn8PZ9CQyATAk-h6)Vz+ z5fh)KOSE=W@CiO3*W^f>2Fx32KNn`c$*;x9yak;&hSWWxHdJNQ(!F)G8W%3*dnXL@y1b^5@ z#|yoMxO5u^TXR8F8=h;qXQh-&70xKyCTG-wn>IF^g3g6B;&f+o>kCF9XDQ4%IjwmZ zea1?)uBc?C^{xooAy-{CPIs(bq8&vg)KTQ1`l4(phwdp-&~DY*pS9NG4qI?>PTfR4 zcYvOAyEKbYqR>ZuZl{z@-?}T&UUHXfo(hsY{wrH}$|`Q+DX#QTv&SP@Xp^TBZNI17 z!aWr<;PK~Z%110@pW94P?}ET<=T$YHY&hB_$CI(6N!B^3wz?7Q8{DaQ*XN@zo~NYO zH@_4z?wSwR0pYq+8_EYkS9qSj@`lP%6A0H8n~Zn13w4`NPjQbn1=Jr+(1Ll_#a;o& zqxuoGTIhPgC1Yub)}q&k(^5~B>qLW)J0bT9dGiGI&Qs=}#A^ZR_VGJ2dgL6!K5d63i%`gVB>zK} z|KVWQ5M~aW{TIjeRUO~~`cc^c@9~{0pP&(+FEN0m`MPKLhs3tc5c(0sj`s7BGwhI% z@lZeg!?Wd+AHoftS?5}P@-&w;T~t*~@qt+p9WT*lPmBCNANAuINH!coMu!LZr-+a3 zq3?@JvX7lr)h`ad?4Nu;)FdUOxmh>zZ$csJ-oNnN0PD}FsvSwL0WJcjfy3Z`POGW{ zyBiVK03*n&1NaiK7x*=B5cm!@a|GzXmhktx0`vo$feP?}3m6Z)W>T$IJJ1=ML;&F1 zQwRXGP9p$N!hSFuLp#t9{1K>7qg!q-<@i}h^XIxypFJy+Pq_rxRYjxe1F zC#2d`<4rC}3e!H>NjuK<5J&0gBMyh^qf(~;!^Wo=>! zQ$ps&cGwx#sTkvQETivkcDZZdRNmkybjsTtcpg?G;27|e@Of~ zg=ax4PtrqCSKwI@^FFb89}901yq$SikwV*}rHgxn>@>eHDEI2Xb_khW5rlv}bT;a8 zefPVgjAlnvZZd%!LV=7|5$b|tJ004-!1>*n! literal 1024 lcmWd^Vfg=_AwA5))yKzQA>7|5$c14PjE2By2#kyn007wT1_J;9 diff --git a/registers.c b/registers.c index 9bea678..e61d8e6 100644 --- a/registers.c +++ b/registers.c @@ -96,7 +96,9 @@ int main() { - printf("N vezes %d\n", calcularQuantidadeMensagem(r3)); + printf("N vezes %d\n", calcularVelocidade(r0)); + + printf("N vezes %f\n", calcularTemperatura(r3)); print_binary(*r3); // Release resources From 40d4e8555f4bbf7608e90479d0ae2ab181bd29b8 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Mon, 20 May 2024 19:37:54 -0300 Subject: [PATCH 20/42] setPalavras quase 100%, falta tratar os caracteres especiais --- libregisters.h | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ programa | Bin 21128 -> 21240 bytes registers.bin | Bin 32 -> 1024 bytes registers.c | 20 +++++++-- 4 files changed, 125 insertions(+), 3 deletions(-) diff --git a/libregisters.h b/libregisters.h index 16c6b3b..93be530 100644 --- a/libregisters.h +++ b/libregisters.h @@ -280,6 +280,114 @@ float calcularTemperatura(unsigned short *r3) { return temperatura; } +unsigned char mapearLetra(unsigned char letra) { + + switch (letra) + { + case 'A': return 0b01000001; + case 0xC0: return 0b11000000; //À + case 0xC1: return 0b11000001; // Á + case 0xC2: return 0b11000010; // Â + case 0xC3: return 0b11000011; // Ã + case 'B': return 0b01000010; + case 'C': return 0b01000011; + case 0xC7: return 0b11000111; //Ç + case 'D': return 0b01000100; + case 'E': return 0b01000101; + case 0xC9: return 0b11001001; //É + case 0xCA: return 0b11001010; // Ê + case 'F': return 0b01000110; + case 'G': return 0b01000111; + case 'H': return 0b01001000; + case 'I': return 0b01001001; + case 0xCD: return 0b11001101; //Í + case 'J': return 0b01001010; + case 'K': return 0b01001011; + case 'L': return 0b01001100; + case 'M': return 0b01001101; + case 'N': return 0b01001110; + case 'O': return 0b01001111; + case 0xD3: return 0b11010011; //Ó + case 0xD4: return 0b11010100; //Ô + case 0xD5: return 0b11010101; //Õ + case 'P': return 0b01010000; + case 'Q': return 0b01010001; + case 'R': return 0b01010010; + case 'S': return 0b01010011; + case 'T': return 0b01010100; + case 'U': return 0b01010101; + case 0xDA: return 0b11011010; //Ú + case 'V': return 0b01010110; + case 'W': return 0b01010111; + case 'X': return 0b01011000; + case 'Y': return 0b01011001; + case 'Z': return 0b01011010; + + //minúsculas + case 'a': return 0b01100001; + case 0xE0: return 0b11100000; //à + case 0xE1: return 0b11100001; //á + case 0xE2: return 0b11100010; //â + case 0xE3: return 0b11100011; //ã + case 'b': return 0b01100010; + case 'c': return 0b01100011; + case 0xE7: return 0b11100111; //ç + case 'd': return 0b01100100; + case 'e': return 0b01100101; + case 0xE9: return 0b11101001; // é + case 0xEA: return 0b11101010; // ê + case 'f': return 0b01100110; + case 'g': return 0b01100111; + case 'h': return 0b01101000; + case 'i': return 0b01101001; + case 0xED: return 0b11101101; //í + case 'j': return 0b01101010; + case 'k': return 0b01101011; + case 'l': return 0b01101100; + case 'm': return 0b01101101; + case 'n': return 0b01101110; + case 'o': return 0b01101111; + case 0xF3: return 0b11110011; //ó + case 0xF4: return 0b11110100; //ô + case 0xF5: return 0b11110101; //õ + case 'p': return 0b01110000; + case 'q': return 0b01110001; + case 'r': return 0b01110010; + case 's': return 0b01110011; + case 't': return 0b01110100; + case 'u': return 0b01110101; + case 0xFA: return 0b11111010; //ú + case 'v': return 0b01110110; + case 'w': return 0b01110111; + case 'x': return 0b01111000; + case 'y': return 0b01111001; + case 'z': return 0b01111010; + default: + printf("Letra inválida! Forneça uma letra válida.\n"); + return 0; + } + } + + +void setPalavras( unsigned short *reg, char letra, char letra2 ){ + + unsigned char valor1 = mapearLetra(letra); + unsigned char valor2 = mapearLetra(letra2); + + + if(valor1 && valor2){ + + *reg &= 0x0000; + *reg |= valor1; + *reg |= (valor2 << 8); + + + } else{ + + printf("Erro"); + } + +} #endif /* REGISTERS_H */ diff --git a/programa b/programa index 0eb73bd0b525cc7a716435af781c3629a18ca8c9..6b8ee2694a1a696e240baa555465624b5563d8a0 100755 GIT binary patch delta 5808 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 delta 3577 zcmZ`+3s6+o89rxWcUk1I3&K8lEowAkWkE%-DYz)Bi;BD2It|*I+JHtg^;M|Y2?2|V z5VS%5)&wU_86BIc)eIILNje%5i9+JEFzGalQ<6oa!RQ!#q{XVa{m#8-38B+}X3zJZ z@Bhw!9`~Gk?v5Pc^+$MZPh)s_N;F{BP;C*_viNc4;*0q86Pm{r~k) zFMFsbQ`nY?U5lH)PTH*h$H(tK^lYoydFa8yvP{|=_IN@Jl7$A#*e*474E2Of<4@4- zFc<$VrH5PjLiko*u9iPg%Qd2;yl@*oArusZ=c2)I7w=T-ZhaxWsBhQnSQz6}Xh~3u8e^5VF@a_8X zarGkw)Ng*4c3Z6ehA76AgzrOeZ+&KL+HQ41-hKHy!Fc!Sw+omzQjy?o)Xx?E3!N1v zB^aAlD}?7HLSL-va~9AIOR`R1K&H5q>3VRia>goeUH)aUF})2}E26xO`PWbxYWZ4G zhRPI0IjY`YhWmMxpVSwANb0-=xFVLcX1@T75=tgQ}X-8QTNjn`ou)+P`PGl!!qUP=S3Cy>3r591>MVzfVY|fIWe4 zrd#%z+)K%h48vp*nnCFf=Y$F|Y9&ER9kkzJ=O5Ca95eYF)DP(%5t>1tIGhGmTHfwT zvU8q5#mOl&)j4_6NB0!P+qf#wpz}6*0*$P0M5(kR=Y)x36)y~(yGPGDQzt(SnFvir z=wI<#=w-F3XawELdvwg1HGTLl(lvNSymi%5eM+k5j#b~kOZxP=o<68WRwuGIa82KUKe}fY1)s3n40()!V1cc+Q>(s#yN??Il0g)sAfmjJKY(92ahi@xNjhL6v#6DCMRdNUS5(sT(yC8vL zSSVIPu|D?8p1ZNDyVrYTpBKeuEWZAtY$5s|^2ru*EiMe*!eeM$)rBnG+7m*mwcy0| zF?P^bi3GrUU=wZ2nU*qwp-;sS zS&>n_k*2_%gJ0`_qO{VfoXN9nP=qckA;baJE-Ua&f{>OB+>76~PbqS4s!kuI3_wee zmH^%f(k8&wAiV@QG)PAQ*9YkXz{ntd0We*r$lO%j->*;xVE0v80!Y6`n*e98(MtgK zIUNOfKBo_IQ+XXt&r8zp#dLo}#d%4FWAHkLXj7ge=_1@=tj$+gOy-F(zo=UnZ3w%` zql^)_f{G*Tp<9z-#|aZUVVkHSKh46NYK7rttXdVlm7m6IsXyPv-DE0A6+NT7Whdq*?OB6$+EUs;H&F$Mfhq+BwKHe*>?lZS$X^!2Di≪umS}?U^9li}Z z>0P&#GwOG{?4g@IqshO3(`l7SXVUtr}Y)$)C{45;NTQD$StYWEJ=%?8;jM)FUH z?FYNB0ZXR7h1TNfGCGi?(Q9QiU-B2l>4k~ICv2(Yi{-XBsnP67$}Y0jY(Uhav$KeC zOH(0RRmon;Wve|xFLqd#M&JTa?SRzhi=zY+&qvrH$(Q15LD(4$*q_0hnS(AAS&An~ zP3ZevJ-g7ImVBFhJWtBDU0U1!d7QnJ?y=gh$W{@lnp{0EaEC;c-xp<06y6u&!6(Yu z{ZwY2241Yj_>D3fypvAo;&}-TqK{`}``6@Y3e9QbGA*I=8p1BJ z`(1I~Sy~q%ys4wr{!HrjXHkdWOc5*06!2%6zWJkMS&=*XMykU1w6JEP1T{{p|w!!Q5< diff --git a/registers.bin b/registers.bin index 44d69a8b05164c9b8d533d58b3f0eb197bbb75b2..2fe1ab667118079e0d1183a2b1546e7b7f11f2e3 100644 GIT binary patch literal 1024 lcmWd^Vfg=_p*YMV-^a&aA>7|5$c14PjE2By2#kyn006H$1~~u# literal 32 dcmWd^Vfg=_!9C2w)yKzQA>7|5$b|tJ004-!1>*n! diff --git a/registers.c b/registers.c index e61d8e6..69bbdf6 100644 --- a/registers.c +++ b/registers.c @@ -73,9 +73,21 @@ int main() { unsigned short *r1 = base_address + 0x01; unsigned short *r2 = base_address + 0x02; unsigned short *r3 = base_address + 0x03; + unsigned short *r4 = base_address + 0x04; + unsigned short *r5 = base_address + 0x05; + unsigned short *r6 = base_address + 0x06; + unsigned short *r7 = base_address + 0x07; + unsigned short *r8 = base_address + 0x08; + unsigned short *r9 = base_address + 0x09; + unsigned short *r10 = base_address + 0x10; + unsigned short *r11 = base_address + 0x11; + unsigned short *r12 = base_address + 0x12; + unsigned short *r13 = base_address + 0x13; + unsigned short *r14 = base_address + 0x14; + unsigned short *r15 = base_address + 0x15; + + - - printf("Current value of R0: 0x%02x\n", *r0); printf("Current value of R1: 0x%02x\n", *r1); @@ -96,11 +108,13 @@ int main() { + setPalavras(r4, 'H', 'ó'); + printf("N vezes %d\n", calcularVelocidade(r0)); printf("N vezes %f\n", calcularTemperatura(r3)); - print_binary(*r3); + print_binary(*r4); // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { return EXIT_FAILURE; From d300ce72c7966892fafef7215fb47a2d5f605b8b Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Thu, 23 May 2024 15:48:12 -0300 Subject: [PATCH 21/42] getLetra testado e funcionando --- libregisters.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ programa | Bin 21240 -> 21312 bytes registers.bin | Bin 1024 -> 1024 bytes registers.c | 7 ++++- 4 files changed, 81 insertions(+), 1 deletion(-) diff --git a/libregisters.h b/libregisters.h index 93be530..24216cc 100644 --- a/libregisters.h +++ b/libregisters.h @@ -389,6 +389,81 @@ void setPalavras( unsigned short *reg, char letra, char letra2 ){ } +char mapearCaractere(unsigned char valor) { + switch (valor) { + case 0b01000001: return 'A'; + case 0b01000010: return 'B'; + case 0b01000011: return 'C'; + case 0b01000100: return 'D'; + case 0b01000101: return 'E'; + case 0b01000110: return 'F'; + case 0b01000111: return 'G'; + case 0b01001000: return 'H'; + case 0b01001001: return 'I'; + case 0b01001010: return 'J'; + case 0b01001011: return 'K'; + case 0b01001100: return 'L'; + case 0b01001101: return 'M'; + case 0b01001110: return 'N'; + case 0b01001111: return 'O'; + case 0b01010000: return 'P'; + case 0b01010001: return 'Q'; + case 0b01010010: return 'R'; + case 0b01010011: return 'S'; + case 0b01010100: return 'T'; + case 0b01010101: return 'U'; + case 0b01010110: return 'V'; + case 0b01010111: return 'W'; + case 0b01011000: return 'X'; + case 0b01011001: return 'Y'; + case 0b01011010: return 'Z'; + case 0b01100001: return 'a'; + case 0b01100010: return 'b'; + case 0b01100011: return 'c'; + case 0b01100100: return 'd'; + case 0b01100101: return 'e'; + case 0b01100110: return 'f'; + case 0b01100111: return 'g'; + case 0b01101000: return 'h'; + case 0b01101001: return 'i'; + case 0b01101010: return 'j'; + case 0b01101011: return 'k'; + case 0b01101100: return 'l'; + case 0b01101101: return 'm'; + case 0b01101110: return 'n'; + case 0b01101111: return 'o'; + case 0b01110000: return 'p'; + case 0b01110001: return 'q'; + case 0b01110010: return 'r'; + case 0b01110011: return 's'; + case 0b01110100: return 't'; + case 0b01110101: return 'u'; + case 0b01110110: return 'v'; + case 0b01110111: return 'w'; + case 0b01111000: return 'x'; + case 0b01111001: return 'y'; + case 0b01111010: return 'z'; + default: + printf("Valor inválido! Não corresponde a uma letra.\n"); + return '\0'; // Retorna um caractere nulo para indicar erro + } +} + +char getLetra(unsigned short *reg, int pos){ + + if(pos == 0){ + return mapearCaractere( *reg & 0xFF); //0-7 + } + + else if(pos == 1){ + return mapearCaractere ((*reg >> 8) & 0xFF);//bit 8-15 + + } + + +} + + #endif /* REGISTERS_H */ diff --git a/programa b/programa index 6b8ee2694a1a696e240baa555465624b5563d8a0..4e43e9a7b6dc97691b146405f9c9a68aaac534b1 100755 GIT binary patch delta 2679 zcmZve3s6*57{|}OD`*?J3!=C{czLAZ==ww{wc@e5Aj!i=Nj1}^OM(crf@w3j7Wr7g ze4M6a%1L`@LpFo1>Fpt6z8xyH$B4R$V7BtANv$oh)Bn4>8dKew|NZ~&`M&erbH8)< z;rl>p+%9c+P+GAu@shqaf@w!>1P_zU`e?oXGFtD>l+03WQA!wo^<3+h3#RN)rd!8$-TKWF?5@!n`pZYd+*?BH^m3)ioe}NPIgKvg8cUC1ucfET zn^NU_$gujB#F(qmx-NVrm9(x4;sY3~?ju__Th|R-4Yo?B9uX~S3ZmCqk*uZ?oh3>m z`kE-6=rECm=rf|JMD;||h_-{As+I6<8q6TtM3hOihG;s`a-uAva-zqHiil0gMD2phUD3vIWD4A#`k(p=~QG%0jHen>u93msp6GXv8PZIUuq|PP!l_;OcOJpOu zNc0@hcSQ4uP7=*0Y9z7~?IkK8+DY_0o}XQNmv8|MZYC-udX1=v=vAVHICWI2#bis= zMP#LF3E2X*l+31#r|kj+#bWLfHBGK*SH_J~?RHc?$dHd=j=ERoL|GWcmnC^pq~ z%v;wjgo3cvUxFsKmq%MH+?T z5jq_RXE7{d)Ts5 z2k2w!UEaytVw2<#jXW|gR#M%QMLYw{B;7uV43_qW^Zpc4gU^OhKQwhFF zf_4OE(AvCV{ux^vaG~AEd`k#JgTEQB-nGNL*R+Lg4s`37_b`7a!6cdarwIvtmm+xL z5OcRBRP@_Dx?bm;V=FFoD1{|U4s9zgoL?HN%sBL3sWPwB;jk|*D=nFCS8PhfBAZfd zFL&6?`0Sy(E{H>0pdHXI=yT`@^bOPu(JpjBze5rldM`8(8UiIk+yU;@f<9@FFwnRB|zh$=i%J{&grGS7rHU*<)yC9QldOl{?Lu-mQtBy3U}Z-+g4mFtsZQa?vC z#-d5g(%-mBPP;Eymnety?Z;?Y)Wom6LeLNA-ME}eVJ%M0^?CX5xkl;Y3Vx(1Blxt0iNly*+# zFIyr^&mc2YHvOl5A>U<*2&zC-;k)Dk(t3Uw*>!=sUzq%L?>xh&JalS==|CWQKmIJy zvBz)hlsjc=vmBH~-#>g%#x%nsTbbSFNV7R?^UCcGyZh;kDA~PqdW%lh590aRW_`^t z|5S8zQ#Se>#Ls1$L;v&NkDGEvh1O5-=ic#R_uL#INmf2LZ{j^`=)V_^W?q{&QL^#V HdBgq&SArN% delta 2046 zcmaKtdrVtZ9LLYS1y%{HEi{7;HleLB76NSHWy}%~ip7yow=BUqv7qAqU}k3Q;RA~! znqX1cPNvRiQXCS43v=Ej%*VD)jesH9T$mXs@)*-PUd3g~1athJdoQ7?%Jv4C0p1*t{n#UGrsoS0>#>UZi?5V<=(&zR# zA^V0=?oG+MI3sVT$o>ZwhSU4%A+&d1zykcN zh`hz{*ybR0rzLov2qEsQ|C1jRUt;IVC6=b;7T*0r;$@v`S;wNb6wj^vi!nKM^UBnV zN@^Q-9EGFKFxP*}u(PkuX?VG>uE=S4){oU<)D+%v;4O7Eb;G@Z*(DtPv8S*$cD9?h zKq8c#RZ(}kJ?dU0^nW9H)A#Eom;Ph%vz$+Lv@dtsLr6-okfeKnUqlOL(@%`)u}03% zjO9R!pibx*Gzi{5!k8P+jlVF~1l=^sm=Ago>W7|#jzQlWV~mJ|2;+>UKy#o)&>E;4 zT5%ouB6*A?-#`HbhM<1v+rOd!bOB0qggpKm3P8Vv7C}dEq5$;8DHMP)HVJlg6J)SK$B&v19UYaqlp_nV;ra7-me4bB1BYY`_d6?t?CmWc<>K zS%YIZ!-J01#@ED>*eLOnm{s`JIX{Vc`+xWVcnglN465dPVxt=6e7V3h;-|t5VLS%s zdKG*mQ~(VOY7Jz9AH{olCX82WyaId(JX_-)?4T~xKs^ir7&d7J@ZBNa3VsKC3aXue zZbIM=`2-OE7BBvC81L2i0OAc3jGbGq?~#x2jMm{a3?|$R&2Sfw!NuqXuU#%6^GCJ( zOza$ZbIpsi zj4oa-G+cBX1$Tj_pkTakfSSq@EJxJ3U-3Uf81fx}`e-p|r%Ko1KNuhKM+ohao+}#? z>Gtvxsk3~oC|%e(t`nb(ryo{kMNjgN9RnL4uEa4!P^&A;^q+shw8oWfI+Uk)mo-yr ccQHXor0v@Z?x~VLSwj4Dd|LrxmhI{P0SpqreAd0AmOUNdN!< delta 25 gcmZqRXy6bK7h(ASpP@L+Bj3lzUm@IoqreAd0An=>D*ylh diff --git a/registers.c b/registers.c index 69bbdf6..64349e8 100644 --- a/registers.c +++ b/registers.c @@ -108,12 +108,17 @@ int main() { - setPalavras(r4, 'H', 'ó'); + setPalavras(r7, 'l', 'p'); printf("N vezes %d\n", calcularVelocidade(r0)); printf("N vezes %f\n", calcularTemperatura(r3)); + printf("O display esta: %c\n", getLetra(r5,0)); + + + + print_binary(*r4); // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { From 5b44ce518fb3370726895e8faa0494d32af16dee Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 23 May 2024 15:53:01 -0300 Subject: [PATCH 22/42] arrumando a ordem dos set e get --- libregisters.h | 217 +++++++++++++++++++++++++------------------------ 1 file changed, 110 insertions(+), 107 deletions(-) diff --git a/libregisters.h b/libregisters.h index 24216cc..275f786 100644 --- a/libregisters.h +++ b/libregisters.h @@ -117,6 +117,116 @@ void setVelocidade(unsigned short *r0, int velocidade){ } +unsigned char mapearLetra(unsigned char letra) { + + switch (letra) + { + case 'A': return 0b01000001; + case 0xC0: return 0b11000000; //À + case 0xC1: return 0b11000001; // Á + case 0xC2: return 0b11000010; // Â + case 0xC3: return 0b11000011; // Ã + case 'B': return 0b01000010; + case 'C': return 0b01000011; + case 0xC7: return 0b11000111; //Ç + case 'D': return 0b01000100; + case 'E': return 0b01000101; + case 0xC9: return 0b11001001; //É + case 0xCA: return 0b11001010; // Ê + case 'F': return 0b01000110; + case 'G': return 0b01000111; + case 'H': return 0b01001000; + case 'I': return 0b01001001; + case 0xCD: return 0b11001101; //Í + case 'J': return 0b01001010; + case 'K': return 0b01001011; + case 'L': return 0b01001100; + case 'M': return 0b01001101; + case 'N': return 0b01001110; + case 'O': return 0b01001111; + case 0xD3: return 0b11010011; //Ó + case 0xD4: return 0b11010100; //Ô + case 0xD5: return 0b11010101; //Õ + case 'P': return 0b01010000; + case 'Q': return 0b01010001; + case 'R': return 0b01010010; + case 'S': return 0b01010011; + case 'T': return 0b01010100; + case 'U': return 0b01010101; + case 0xDA: return 0b11011010; //Ú + case 'V': return 0b01010110; + case 'W': return 0b01010111; + case 'X': return 0b01011000; + case 'Y': return 0b01011001; + case 'Z': return 0b01011010; + + //minúsculas + case 'a': return 0b01100001; + case 0xE0: return 0b11100000; //à + case 0xE1: return 0b11100001; //á + case 0xE2: return 0b11100010; //â + case 0xE3: return 0b11100011; //ã + case 'b': return 0b01100010; + case 'c': return 0b01100011; + case 0xE7: return 0b11100111; //ç + case 'd': return 0b01100100; + case 'e': return 0b01100101; + case 0xE9: return 0b11101001; // é + case 0xEA: return 0b11101010; // ê + case 'f': return 0b01100110; + case 'g': return 0b01100111; + case 'h': return 0b01101000; + case 'i': return 0b01101001; + case 0xED: return 0b11101101; //í + case 'j': return 0b01101010; + case 'k': return 0b01101011; + case 'l': return 0b01101100; + case 'm': return 0b01101101; + case 'n': return 0b01101110; + case 'o': return 0b01101111; + case 0xF3: return 0b11110011; //ó + case 0xF4: return 0b11110100; //ô + case 0xF5: return 0b11110101; //õ + case 'p': return 0b01110000; + case 'q': return 0b01110001; + case 'r': return 0b01110010; + case 's': return 0b01110011; + case 't': return 0b01110100; + case 'u': return 0b01110101; + case 0xFA: return 0b11111010; //ú + case 'v': return 0b01110110; + case 'w': return 0b01110111; + case 'x': return 0b01111000; + case 'y': return 0b01111001; + case 'z': return 0b01111010; + default: + printf("Letra inválida! Forneça uma letra válida.\n"); + return 0; + } + } + + +void setPalavras( unsigned short *reg, char letra, char letra2 ){ + + unsigned char valor1 = mapearLetra(letra); + unsigned char valor2 = mapearLetra(letra2); + + + if(valor1 && valor2){ + + *reg &= 0x0000; + *reg |= valor1; + *reg |= (valor2 << 8); + + + } else{ + + printf("Erro"); + } + +} + + // Funções de GET @@ -280,114 +390,7 @@ float calcularTemperatura(unsigned short *r3) { return temperatura; } -unsigned char mapearLetra(unsigned char letra) { - - switch (letra) - { - case 'A': return 0b01000001; - case 0xC0: return 0b11000000; //À - case 0xC1: return 0b11000001; // Á - case 0xC2: return 0b11000010; // Â - case 0xC3: return 0b11000011; // Ã - case 'B': return 0b01000010; - case 'C': return 0b01000011; - case 0xC7: return 0b11000111; //Ç - case 'D': return 0b01000100; - case 'E': return 0b01000101; - case 0xC9: return 0b11001001; //É - case 0xCA: return 0b11001010; // Ê - case 'F': return 0b01000110; - case 'G': return 0b01000111; - case 'H': return 0b01001000; - case 'I': return 0b01001001; - case 0xCD: return 0b11001101; //Í - case 'J': return 0b01001010; - case 'K': return 0b01001011; - case 'L': return 0b01001100; - case 'M': return 0b01001101; - case 'N': return 0b01001110; - case 'O': return 0b01001111; - case 0xD3: return 0b11010011; //Ó - case 0xD4: return 0b11010100; //Ô - case 0xD5: return 0b11010101; //Õ - case 'P': return 0b01010000; - case 'Q': return 0b01010001; - case 'R': return 0b01010010; - case 'S': return 0b01010011; - case 'T': return 0b01010100; - case 'U': return 0b01010101; - case 0xDA: return 0b11011010; //Ú - case 'V': return 0b01010110; - case 'W': return 0b01010111; - case 'X': return 0b01011000; - case 'Y': return 0b01011001; - case 'Z': return 0b01011010; - - //minúsculas - case 'a': return 0b01100001; - case 0xE0: return 0b11100000; //à - case 0xE1: return 0b11100001; //á - case 0xE2: return 0b11100010; //â - case 0xE3: return 0b11100011; //ã - case 'b': return 0b01100010; - case 'c': return 0b01100011; - case 0xE7: return 0b11100111; //ç - case 'd': return 0b01100100; - case 'e': return 0b01100101; - case 0xE9: return 0b11101001; // é - case 0xEA: return 0b11101010; // ê - case 'f': return 0b01100110; - case 'g': return 0b01100111; - case 'h': return 0b01101000; - case 'i': return 0b01101001; - case 0xED: return 0b11101101; //í - case 'j': return 0b01101010; - case 'k': return 0b01101011; - case 'l': return 0b01101100; - case 'm': return 0b01101101; - case 'n': return 0b01101110; - case 'o': return 0b01101111; - case 0xF3: return 0b11110011; //ó - case 0xF4: return 0b11110100; //ô - case 0xF5: return 0b11110101; //õ - case 'p': return 0b01110000; - case 'q': return 0b01110001; - case 'r': return 0b01110010; - case 's': return 0b01110011; - case 't': return 0b01110100; - case 'u': return 0b01110101; - case 0xFA: return 0b11111010; //ú - case 'v': return 0b01110110; - case 'w': return 0b01110111; - case 'x': return 0b01111000; - case 'y': return 0b01111001; - case 'z': return 0b01111010; - default: - printf("Letra inválida! Forneça uma letra válida.\n"); - return 0; - } - } - - -void setPalavras( unsigned short *reg, char letra, char letra2 ){ - - unsigned char valor1 = mapearLetra(letra); - unsigned char valor2 = mapearLetra(letra2); - - if(valor1 && valor2){ - - *reg &= 0x0000; - *reg |= valor1; - *reg |= (valor2 << 8); - - - } else{ - - printf("Erro"); - } - -} char mapearCaractere(unsigned char valor) { switch (valor) { From 7c8343c888619996e994bafa9e3748c4e11bcefb Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 23 May 2024 20:34:31 -0300 Subject: [PATCH 23/42] Create Makefile --- Makefile | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ + + From 5bd76b348f11931fed838e8479a81fbe2f55bbad Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 23 May 2024 20:44:40 -0300 Subject: [PATCH 24/42] Update Makefile --- Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Makefile b/Makefile index 139597f..f6b1b28 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,18 @@ +all: bibhardware.a tool +tool: registers.o bibhardware.a +gcc -o tool registers.o -bibhardware -L. + +bibhardware.a: libregisters.o + ar rcs bibhardware.a libregisters.o + +registers.o: registers.c + gcc -c register + + +bibhardware.o: libregisters.c + gcc -c libregisters.c + +clean : + rm -f *.o tool *.a From dadd94e2c2af9cb68d951921d8462438a151305c Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Fri, 31 May 2024 15:51:25 -0300 Subject: [PATCH 25/42] make file finalizado --- Makefile | 21 ++++++++++----------- bibhardware.a | Bin 0 -> 19286 bytes programa | Bin 21312 -> 0 bytes registers.o | Bin 3600 -> 18728 bytes tool | Bin 0 -> 21312 bytes 5 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 bibhardware.a create mode 100755 tool diff --git a/Makefile b/Makefile index f6b1b28..70eddaf 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,17 @@ -all: bibhardware.a tool +# Regras principais +all: tool tool: registers.o bibhardware.a -gcc -o tool registers.o -bibhardware -L. + gcc -o tool registers.o -lregisters -L. -bibhardware.a: libregisters.o - ar rcs bibhardware.a libregisters.o +bibhardware.a: registers.o + ar rcs bibhardware.a registers.o -registers.o: registers.c - gcc -c register +registers.o: registers.c libregisters.h + gcc -c registers.c -bibhardware.o: libregisters.c - gcc -c libregisters.c - -clean : - rm -f *.o tool *.a +# Limpeza dos arquivos gerados +clean: + rm -f *.o tool *.a diff --git a/bibhardware.a b/bibhardware.a new file mode 100644 index 0000000000000000000000000000000000000000..d898be880cee1fa240614166351c645d8c430f35 GIT binary patch literal 19286 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 literal 0 HcmV?d00001 diff --git a/programa b/programa index 4e43e9a7b6dc97691b146405f9c9a68aaac534b1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100755 GIT binary patch literal 0 HcmV?d00001 literal 21312 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 W^6`INO$+{)5BuR@#eV~~pf7>| diff --git a/registers.o b/registers.o index bfb098b4162c281dd823304da6c3efae14aae833..ba5b8511995e7878bc3f0ee003088db36612a511 100644 GIT binary patch literal 18728 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 B0lxqM literal 3600 zcmbtVU1(fI6h50KZLLYOYSBtXF4}0D+9ezNVinmm-S&dkhvH%d%jRZtw^^Irjd$;r zq!6fR38=u5>HeJJ=M_|&F-sG)_{N*;nj$wMCU5MgTyMp|(F!Fayencc}Wfr1C_ z&YACg=ggTiXJ$W1zImi25+NlKdYzgxg%V9|Yw8K1CTKf#(7n!Q|4P~6FLpRlv%_G; z4pY_e*wW!Jxp+7{wosl}iUcp(m1M2+5>3vwhS#8H!zd3c47INcWQCFCeN3jHOOcoU zHp$;ngIu0ij0AfXb#|*s&32F$xtr+}>{j%pKTLY(#W^IzS(GOh^n{~2v)W9!DidDN z6aLL4%Y;FmI(fZOs`A|)E>|@SmbhB;ym0l(MXvePLtIxoyg7~XR`Fw3QuAR86Xq*a zuB`@7+vnN@9^Mpo!MyV&LzU!`oxvWMX@|F^9X`(+K6Q>BVELrLqKI+6?=lwX3+FDQ z3$AS9A3MD9J-~WOVX|hICmt?vD+jLK(l;JOpM=5vFtt)i-mj<3eRG?)Ey5#X%gC4y zMy0#TvfSMSK!4JpPYY6;sLh(S6GL{TwQG;qQL+}FvCk!E?eN-FYUMqyEvy|T=XjTM z6l|MD9qxPvuL^@<5(hTVggTh*W_q_|3Pa{YA`7HffbL(4#ax)#{)5qf85&}>p8Gj z!q^X=5k>h!{~vuTMJ+@#z|f$O9rb}CXO2^3EE?I>zGdqaAKf#I{cBu0c=ou)7kgyvDT%AO*c)SA{GpDfbThCX9^U|ebpyO_1N;c%$a6Oz97NUZ z1ncXqn`RvRuOwg8ma(A?_@_6(so9bl;(kwOiX%m@iKe-&3D<;1U0fN;`d(1TIKE5h zY?tyNG=ii(cf@r7iwi+{hx>fg%N6`ArPC$f$(&AShEJ!nPHu!VB6=4G&4OOt%-=tF zomf7QIJSo#R`|Ha-=g7PXgIfJgMYz@vx{wzZ#BLi=Zc0u!aTL^T@A-yy~6)B;=hdG zESu%IU|)LtCp27-|AvOQvyY1Zj>Ivb4(Jm|TI1{Sa~iJ4KeGXTR^k{CAAJS+RO9RM ze>C`BolZY#eB45n{{i^`p$_;IepKRW-AT4V-q!frd9L`w8vdw;pVRP84Yyc_AihjZ z%oF0biL3iRVBqQ=P8ztnZxkzy=Y408N8hWD!%E{j;KY1)%%|9p<2w`^ER`tc73-5s zF`wsGpJIig@5cD8-Y>3&oS!NLu~CmNoac|T48$7EU75-M8!UE5%i^x-l8}?n zWj&QmwzrxR?hno}(Ln0T0Gfp5ge*4B2)?+Bke&5`Uf>b9u?+oe0+Mg8{}SVfY0@9o zAMZ6{>OH|znwJ5;#zYg9zk*(21^zt>kmERt!h-yCQTeO!5F3@Q^Dan#9fNLik28i+ zoB4ku{VlfXV&?xo8xhm=|3Uhn*PU56{n3S>Civ538jlUjfcPcC`2$k^>ipMR8!iKQ uG*~9(hVces9n&8%&9i5S7G*=L|4m>Jvwn{;wx0h^JnAfdeQ5le{{I1^0NZK+ diff --git a/tool b/tool new file mode 100755 index 0000000000000000000000000000000000000000..a8bd8ec9b6191c01b80a5a666450fb210292fc57 GIT binary patch literal 21312 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 Date: Wed, 5 Jun 2024 00:13:45 -0300 Subject: [PATCH 26/42] Update registers.c --- registers.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/registers.c b/registers.c index 64349e8..df680db 100644 --- a/registers.c +++ b/registers.c @@ -88,38 +88,50 @@ int main() { - printf("Current value of R0: 0x%02x\n", *r0); - printf("Current value of R1: 0x%02x\n", *r1); + // printf("Current value of R0: 0x%02x\n", *r0); + // printf("Current value of R1: 0x%02x\n", *r1); // Write a new value to R0 // *r0 = *r0 | 0x00; + //alterar a cor do led set_colorLed(r0,1,0, 1); + + //alterar a cor do display r, g e b set_colorDisplay(r1,r2,0 , 1 ,1 ); + + //deixa o display ligado ou nao setOnOff(r0,1); + + //teste a operacao setOnOff_Operacao(r0,1); - //ta invertido + + +//ta invertido setExibicao(r0, 1,1); //("O display esta %s\n", getEstadoDisplay(r0)); + + //teste modo de exibição printf("O display esta %s\n", getModoExibicao(r0)); setPalavras(r7, 'l', 'p'); + //teste para calculo de velocidade + //printf("N vezes %d\n", calcularVelocidade(r0)); - printf("N vezes %d\n", calcularVelocidade(r0)); - - printf("N vezes %f\n", calcularTemperatura(r3)); + //teste para calcular a temperatura + //printf("N vezes %f\n", calcularTemperatura(r3)); - printf("O display esta: %c\n", getLetra(r5,0)); + //printf("O display esta: %c\n", getLetra(r5,0)); - print_binary(*r4); + //print_binary(*r4); // Release resources if (registers_release(map, FILE_SIZE, fd) == -1) { return EXIT_FAILURE; From a4fd1c10ebdf038e43aed34ff1c5e627cd8d2e73 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:16:52 -0300 Subject: [PATCH 27/42] Update registers.c --- registers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/registers.c b/registers.c index df680db..a7c32ef 100644 --- a/registers.c +++ b/registers.c @@ -117,7 +117,8 @@ int main() { //teste modo de exibição printf("O display esta %s\n", getModoExibicao(r0)); - + //tese para pegar o nivel da bateria + printf("O nivel da bateria %d\n", getBateryLeve(r3)); setPalavras(r7, 'l', 'p'); //teste para calculo de velocidade From d5570d19d4215eb988e0dbfb536f99490a132b5c Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:46:19 -0300 Subject: [PATCH 28/42] Update libregisters.h --- libregisters.h | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/libregisters.h b/libregisters.h index 275f786..e6bd26c 100644 --- a/libregisters.h +++ b/libregisters.h @@ -54,7 +54,7 @@ void set_colorDisplay(unsigned short*r1, unsigned short *r2, int red, int green } } - +//se o display vai estar ligado void setOnOff(unsigned short *r0, int bit){ if(bit == 1 ){ @@ -64,7 +64,7 @@ void setOnOff(unsigned short *r0, int bit){ *r0 &= ~(0x1 << 0); } } - +//se o led de operação do display vai estar ligado ou desligado void setOnOff_Operacao(unsigned short *r0, int bit){ if(bit == 0 ){ @@ -75,6 +75,33 @@ void setOnOff_Operacao(unsigned short *r0, int bit){ } } +void setPadraoFabrica(unsigned short *reg, int bit){ + + if(bit == 0 || bit > 1) { + return; + } + + else if(bit == 1){ + // muda de 0 para um o bit 13 do primeiro registrador + *r0 |= (0x1 << 13); + + //coloca na versão de fábrica a velocidade de exibição + *r0 &= ~(0x1 << 2); + *r0 &= ~(0x1 << 1); + + //coloca a velocidade na versão default + + *r0 &= ~(0x3F << 3); + + *r0 |= (2 & 0x3F) << 3; + + //muda o led de operação do display para o padrao de fabrica + *r0 &= ~(0x1 << 9); + + } + +} + void setExibicao( unsigned short *r0, int bit1, int bit2){ From efbf1ace8b7a57f0936d9581209e944596260b8e Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:52:46 -0300 Subject: [PATCH 29/42] Create compilar --- compilar | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 compilar diff --git a/compilar b/compilar new file mode 100644 index 0000000..6a1e428 --- /dev/null +++ b/compilar @@ -0,0 +1,23 @@ +para rodar o trabalho pode se optar por utilizar pelo terminal: + +primeiro passo: + +gcc registers.c -o programa -L -lregisters + + +segundo passo: + +./programa + +terceiro passo: + +./emulator + + +esse programa também possui um makefile, podendo ser executado após a instalação do make na maquina pelo terminal + +após isso é só dar /make , ./programa e no final ./emulator + + + + From a904d0ea61fea10ad9734d97f23249e96695246a Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:55:37 -0300 Subject: [PATCH 30/42] Update compilar --- compilar | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compilar b/compilar index 6a1e428..c347d8a 100644 --- a/compilar +++ b/compilar @@ -21,3 +21,6 @@ após isso é só dar /make , ./programa e no final ./emulator +No código eu apenas cheguei a implementar 2/3 do que foi solicitado, é possível alterar a cor e o status de ligado ou desligado do display e a outra parte +foi implemtar um método que da um get no status da bateria, ambos funcionando e testados. Sobre o texto interativo, foi complicado já tentar tratar caracteres +especiais então acabei perdendo tempo lidando com ç e assentos. No fim ficando sem tempo para entender como poderia ser um display com mais de 24 caractéres. From 42d59d5d7f233a68719b739f1858ba54433924fc Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:04:32 -0300 Subject: [PATCH 31/42] Create biblioteca.c --- biblioteca.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 biblioteca.c diff --git a/biblioteca.c b/biblioteca.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/biblioteca.c @@ -0,0 +1 @@ + From b2d8630477e461091df6c9495fb2f81b9167ecc6 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:04:56 -0300 Subject: [PATCH 32/42] Update libregisters.h --- libregisters.h | 507 +++---------------------------------------------- 1 file changed, 22 insertions(+), 485 deletions(-) diff --git a/libregisters.h b/libregisters.h index e6bd26c..6d037ec 100644 --- a/libregisters.h +++ b/libregisters.h @@ -6,494 +6,31 @@ // Definições dos registradores -// Funções para leitura e escrita nos registradores -uint16_t read_register(uint16_t *reg); -void write_register(uint16_t *reg, uint16_t value); - -//esse vai mudar o led do status -void set_colorLed(unsigned short*r0, int bit10, int bit11, int bit12) { - if (bit10 == 1) { - *r0 |= (0x1 << 10); // Ativa o bit de cor RED - - - } else if (bit10 == 0) { - *r0 &= ~(0x1 << 10); // Zera o bit 1 - } - if (bit11 == 1) { - *r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 - - } else if (bit11 == 0) { - *r0 &= ~(0x1 << 11); // Zera o bit 11 - } - if (bit12 == 1) { - *r0 |= (0x1 << 12); // Ativa o bit de cor BLUE - } else if (bit12 == 0) { - *r0 &= ~(0x1 << 12); // Zera o bit 12 - } - -} - -void set_colorDisplay(unsigned short*r1, unsigned short *r2, int red, int green, int blue) { - if (red == 1) { - *r1 |= 255; // Ativa o bit de cor RED - - - } else if (red == 0) { - *r1 &= ~(0xFF); // Zera o bit 1 - } - if (green == 1) { - *r1 |= (255 << 8); // Seta para 1 o bit 11 no registrador 0 - - } else if (green == 0) { - *r1 &= ~(0xFF00); // Zera o bit 11 - } - if (blue == 1) { - *r2 |= 255; // Ativa o bit de cor BLUE - } else if (blue == 0) { - *r2 &= ~(0xFF); // Zera o bit 12 - } - -} -//se o display vai estar ligado -void setOnOff(unsigned short *r0, int bit){ - - if(bit == 1 ){ - *r0 |= (0x1 << 0); - } - else if(bit == 0){ - *r0 &= ~(0x1 << 0); - } -} -//se o led de operação do display vai estar ligado ou desligado -void setOnOff_Operacao(unsigned short *r0, int bit){ - - if(bit == 0 ){ - *r0 |= (0x1 << 9); - } - else if(bit == 1){ - *r0 &= ~(0x1 << 9); - } -} - -void setPadraoFabrica(unsigned short *reg, int bit){ - - if(bit == 0 || bit > 1) { - return; - } - - else if(bit == 1){ - // muda de 0 para um o bit 13 do primeiro registrador - *r0 |= (0x1 << 13); - - //coloca na versão de fábrica a velocidade de exibição - *r0 &= ~(0x1 << 2); - *r0 &= ~(0x1 << 1); - - //coloca a velocidade na versão default - - *r0 &= ~(0x3F << 3); - - *r0 |= (2 & 0x3F) << 3; - - //muda o led de operação do display para o padrao de fabrica - *r0 &= ~(0x1 << 9); - - } - -} - - -void setExibicao( unsigned short *r0, int bit1, int bit2){ - - if( bit1 == 0 && bit2 == 0){ - //estatico - *r0 &= ~(0x1 << 2); - *r0 &= ~(0x1 << 1); - } - - if( bit1 == 0 && bit2== 1){ - //deslizante - *r0 &= ~(0x1 << 2); - *r0 |= (0x1 << 1); - } - - if( bit1 == 1 && bit2 == 0){ - //piscante - *r0 |= (0x1 << 2); - *r0 &= ~(0x1 << 1); - } - - if( bit1 == 1 && bit2 == 1){ - //deslizante/piscante - *r0 |= (0x1 << 2); - *r0 |= (0x1 << 1); - } - -} -// criar outro com as especificações acima só que mudando apenas os rgb - - -//ainda com alguns problemas -void setVelocidade(unsigned short *r0, int velocidade){ - - int velo = (velocidade / 100) -1; - - *r0 &= ~(0x3F << 3); - - *r0 |= (velo & 0x3F) << 3; -} - - -unsigned char mapearLetra(unsigned char letra) { - - switch (letra) - { - case 'A': return 0b01000001; - case 0xC0: return 0b11000000; //À - case 0xC1: return 0b11000001; // Á - case 0xC2: return 0b11000010; // Â - case 0xC3: return 0b11000011; // Ã - case 'B': return 0b01000010; - case 'C': return 0b01000011; - case 0xC7: return 0b11000111; //Ç - case 'D': return 0b01000100; - case 'E': return 0b01000101; - case 0xC9: return 0b11001001; //É - case 0xCA: return 0b11001010; // Ê - case 'F': return 0b01000110; - case 'G': return 0b01000111; - case 'H': return 0b01001000; - case 'I': return 0b01001001; - case 0xCD: return 0b11001101; //Í - case 'J': return 0b01001010; - case 'K': return 0b01001011; - case 'L': return 0b01001100; - case 'M': return 0b01001101; - case 'N': return 0b01001110; - case 'O': return 0b01001111; - case 0xD3: return 0b11010011; //Ó - case 0xD4: return 0b11010100; //Ô - case 0xD5: return 0b11010101; //Õ - case 'P': return 0b01010000; - case 'Q': return 0b01010001; - case 'R': return 0b01010010; - case 'S': return 0b01010011; - case 'T': return 0b01010100; - case 'U': return 0b01010101; - case 0xDA: return 0b11011010; //Ú - case 'V': return 0b01010110; - case 'W': return 0b01010111; - case 'X': return 0b01011000; - case 'Y': return 0b01011001; - case 'Z': return 0b01011010; - - //minúsculas - case 'a': return 0b01100001; - case 0xE0: return 0b11100000; //à - case 0xE1: return 0b11100001; //á - case 0xE2: return 0b11100010; //â - case 0xE3: return 0b11100011; //ã - case 'b': return 0b01100010; - case 'c': return 0b01100011; - case 0xE7: return 0b11100111; //ç - case 'd': return 0b01100100; - case 'e': return 0b01100101; - case 0xE9: return 0b11101001; // é - case 0xEA: return 0b11101010; // ê - case 'f': return 0b01100110; - case 'g': return 0b01100111; - case 'h': return 0b01101000; - case 'i': return 0b01101001; - case 0xED: return 0b11101101; //í - case 'j': return 0b01101010; - case 'k': return 0b01101011; - case 'l': return 0b01101100; - case 'm': return 0b01101101; - case 'n': return 0b01101110; - case 'o': return 0b01101111; - case 0xF3: return 0b11110011; //ó - case 0xF4: return 0b11110100; //ô - case 0xF5: return 0b11110101; //õ - case 'p': return 0b01110000; - case 'q': return 0b01110001; - case 'r': return 0b01110010; - case 's': return 0b01110011; - case 't': return 0b01110100; - case 'u': return 0b01110101; - case 0xFA: return 0b11111010; //ú - case 'v': return 0b01110110; - case 'w': return 0b01110111; - case 'x': return 0b01111000; - case 'y': return 0b01111001; - case 'z': return 0b01111010; - default: - printf("Letra inválida! Forneça uma letra válida.\n"); - return 0; - } - } - - -void setPalavras( unsigned short *reg, char letra, char letra2 ){ - - unsigned char valor1 = mapearLetra(letra); - unsigned char valor2 = mapearLetra(letra2); - - - if(valor1 && valor2){ - - *reg &= 0x0000; - *reg |= valor1; - *reg |= (valor2 << 8); - - - } else{ - - printf("Erro"); - } - -} +// Funções de configuração +void set_colorLed(unsigned short *r0, int bit10, int bit11, int bit12); +void set_colorDisplay(unsigned short *r1, unsigned short *r2, int red, int green, int blue); +void setOnOff(unsigned short *r0, int bit); +void setOnOff_Operacao(unsigned short *r0, int bit); +void setPadraoFabrica(unsigned short *r0, int bit); +void setExibicao(unsigned short *r0, int bit1, int bit2); +void setVelocidade(unsigned short *r0, int velocidade); +void setPalavras(unsigned short *reg, char letra, char letra2); +// Funções de mapeamento de caracteres +unsigned char mapearLetra(unsigned char letra); +char mapearCaractere(unsigned char valor); // Funções de GET - - -const char * getEstadoDisplay( unsigned short *r0){ - - return (*r0 & ( 0x1 << 0)) == 0 ? "desligado" : "ligado"; -} - -const char * getEstadoLed( unsigned short *r0){ - - return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; -} - -const char * getCorLed( unsigned short *r0){ - - if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { - return "white"; - } - - if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { - return "yellow"; - } - - if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { - return "cian"; - } - - if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { - return "pink"; - } - - if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { - return "red"; - } - - if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { - return "green"; - } - - if (!(*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { - return "blue"; - } - -} - -const char * getCorDisplay( unsigned short *r1 , unsigned short * r2 ){ - - if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { - return "white"; - } - - if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { - return "yellow"; - } - - if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { - return "cian"; - } - - if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { - return "pink"; - } - - if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { - return "red"; - } - - if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { - return "green"; - } - - if (!(*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { - return "blue"; - } - -} - -const char * getBateryLevel( unsigned short * r3){ - - if (!(*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { - return "critico"; - } - - if (!(*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { - return "baixo"; - } - - if ((*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { - return "médio"; - } - - if ((*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { - return "alto"; - } - -} - -const char * getModoExibicao( unsigned short *r0){ - if (!(*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { - return "estático"; - } - if (!(*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { - return "deslizante"; - } - if ((*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { - return "piscante"; - } - if ((*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { - return "deslizante/piscante"; - } -} - -int calcularQuantidadeMensagem ( unsigned short *r3){ - - int quantidade =0; - - unsigned short bits_relevantes = ( *r3>> 2) & 0xF; - - for(int i = 0; i < 4; i++){ - - if(bits_relevantes & (0x1 << i)){ - quantidade += (1<> 3) & 0xF; - - for(int i = 0; i < 6; i++){ - - if(bits_relevantes & (0x1 << i)){ - quantidade += (1<> 6) & 0x3FF; - - // Converter para decimal e considerar complemento de dois para valores negativos - int valor_decimal; - if (bits_relevantes & 0x200) { // Se o bit mais significativo estiver definido, é negativo - valor_decimal = -(0x3FF - bits_relevantes + 1); - } else { - valor_decimal = bits_relevantes; - } - - // Calcular a temperatura em graus Celsius - float temperatura = valor_decimal / 10.0f; - return temperatura; -} - - - -char mapearCaractere(unsigned char valor) { - switch (valor) { - case 0b01000001: return 'A'; - case 0b01000010: return 'B'; - case 0b01000011: return 'C'; - case 0b01000100: return 'D'; - case 0b01000101: return 'E'; - case 0b01000110: return 'F'; - case 0b01000111: return 'G'; - case 0b01001000: return 'H'; - case 0b01001001: return 'I'; - case 0b01001010: return 'J'; - case 0b01001011: return 'K'; - case 0b01001100: return 'L'; - case 0b01001101: return 'M'; - case 0b01001110: return 'N'; - case 0b01001111: return 'O'; - case 0b01010000: return 'P'; - case 0b01010001: return 'Q'; - case 0b01010010: return 'R'; - case 0b01010011: return 'S'; - case 0b01010100: return 'T'; - case 0b01010101: return 'U'; - case 0b01010110: return 'V'; - case 0b01010111: return 'W'; - case 0b01011000: return 'X'; - case 0b01011001: return 'Y'; - case 0b01011010: return 'Z'; - case 0b01100001: return 'a'; - case 0b01100010: return 'b'; - case 0b01100011: return 'c'; - case 0b01100100: return 'd'; - case 0b01100101: return 'e'; - case 0b01100110: return 'f'; - case 0b01100111: return 'g'; - case 0b01101000: return 'h'; - case 0b01101001: return 'i'; - case 0b01101010: return 'j'; - case 0b01101011: return 'k'; - case 0b01101100: return 'l'; - case 0b01101101: return 'm'; - case 0b01101110: return 'n'; - case 0b01101111: return 'o'; - case 0b01110000: return 'p'; - case 0b01110001: return 'q'; - case 0b01110010: return 'r'; - case 0b01110011: return 's'; - case 0b01110100: return 't'; - case 0b01110101: return 'u'; - case 0b01110110: return 'v'; - case 0b01110111: return 'w'; - case 0b01111000: return 'x'; - case 0b01111001: return 'y'; - case 0b01111010: return 'z'; - default: - printf("Valor inválido! Não corresponde a uma letra.\n"); - return '\0'; // Retorna um caractere nulo para indicar erro - } -} - -char getLetra(unsigned short *reg, int pos){ - - if(pos == 0){ - return mapearCaractere( *reg & 0xFF); //0-7 - } - - else if(pos == 1){ - return mapearCaractere ((*reg >> 8) & 0xFF);//bit 8-15 - - } - - -} - +const char *getEstadoDisplay(unsigned short *r0); +const char *getEstadoLed(unsigned short *r0); +const char *getCorLed(unsigned short *r0); +const char *getCorDisplay(unsigned short *r1, unsigned short *r2); +const char *getBateryLevel(unsigned short *r3); +const char *getModoExibicao(unsigned short *r0); +int calcularQuantidadeMensagem(unsigned short *r3); +int calcularVelocidade(unsigned short *r0); +float calcularTemperatura(unsigned short *r3); +char getLetra(unsigned short *reg, int pos); #endif /* REGISTERS_H */ - - From deb972a074e5f689c61c10d6636d1fa8e8b5441f Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:06:40 -0300 Subject: [PATCH 33/42] Update libregisters.h --- libregisters.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libregisters.h b/libregisters.h index 6d037ec..db29f15 100644 --- a/libregisters.h +++ b/libregisters.h @@ -1,5 +1,5 @@ -#ifndef REGISTERS_H -#define REGISTERS_H +#ifndef LIBREGISTERS_H +#define LIBREGISTERS_H #include @@ -33,4 +33,4 @@ int calcularVelocidade(unsigned short *r0); float calcularTemperatura(unsigned short *r3); char getLetra(unsigned short *reg, int pos); -#endif /* REGISTERS_H */ +#endif // LIBREGISTERS_H From 74a1b6ae46b8386499c2fb9b9fe5d1eddd3510a3 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:10:08 -0300 Subject: [PATCH 34/42] Update biblioteca.c --- biblioteca.c | 485 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 485 insertions(+) diff --git a/biblioteca.c b/biblioteca.c index 8b13789..32f92ae 100644 --- a/biblioteca.c +++ b/biblioteca.c @@ -1 +1,486 @@ +#include "libregisters.h" +#include + +//esse vai mudar o led do status +void set_colorLed(unsigned short*r0, int bit10, int bit11, int bit12) { + if (bit10 == 1) { + *r0 |= (0x1 << 10); // Ativa o bit de cor RED + + + } else if (bit10 == 0) { + *r0 &= ~(0x1 << 10); // Zera o bit 1 + } + if (bit11 == 1) { + *r0 |= (0x1 << 11); // Seta para 1 o bit 11 no registrador 0 + + } else if (bit11 == 0) { + *r0 &= ~(0x1 << 11); // Zera o bit 11 + } + if (bit12 == 1) { + *r0 |= (0x1 << 12); // Ativa o bit de cor BLUE + } else if (bit12 == 0) { + *r0 &= ~(0x1 << 12); // Zera o bit 12 + } + +} + +void set_colorDisplay(unsigned short*r1, unsigned short *r2, int red, int green, int blue) { + if (red == 1) { + *r1 |= 255; // Ativa o bit de cor RED + + + } else if (red == 0) { + *r1 &= ~(0xFF); // Zera o bit 1 + } + if (green == 1) { + *r1 |= (255 << 8); // Seta para 1 o bit 11 no registrador 0 + + } else if (green == 0) { + *r1 &= ~(0xFF00); // Zera o bit 11 + } + if (blue == 1) { + *r2 |= 255; // Ativa o bit de cor BLUE + } else if (blue == 0) { + *r2 &= ~(0xFF); // Zera o bit 12 + } + +} +//se o display vai estar ligado +void setOnOff(unsigned short *r0, int bit){ + + if(bit == 1 ){ + *r0 |= (0x1 << 0); + } + else if(bit == 0){ + *r0 &= ~(0x1 << 0); + } +} +//se o led de operação do display vai estar ligado ou desligado +void setOnOff_Operacao(unsigned short *r0, int bit){ + + if(bit == 0 ){ + *r0 |= (0x1 << 9); + } + else if(bit == 1){ + *r0 &= ~(0x1 << 9); + } +} + +void setPadraoFabrica(unsigned short *reg, int bit){ + + if(bit == 0 || bit > 1) { + return; + } + + else if(bit == 1){ + // muda de 0 para um o bit 13 do primeiro registrador + *r0 |= (0x1 << 13); + + //coloca na versão de fábrica a velocidade de exibição + *r0 &= ~(0x1 << 2); + *r0 &= ~(0x1 << 1); + + //coloca a velocidade na versão default + + *r0 &= ~(0x3F << 3); + + *r0 |= (2 & 0x3F) << 3; + + //muda o led de operação do display para o padrao de fabrica + *r0 &= ~(0x1 << 9); + + } + +} + + +void setExibicao( unsigned short *r0, int bit1, int bit2){ + + if( bit1 == 0 && bit2 == 0){ + //estatico + *r0 &= ~(0x1 << 2); + *r0 &= ~(0x1 << 1); + } + + if( bit1 == 0 && bit2== 1){ + //deslizante + *r0 &= ~(0x1 << 2); + *r0 |= (0x1 << 1); + } + + if( bit1 == 1 && bit2 == 0){ + //piscante + *r0 |= (0x1 << 2); + *r0 &= ~(0x1 << 1); + } + + if( bit1 == 1 && bit2 == 1){ + //deslizante/piscante + *r0 |= (0x1 << 2); + *r0 |= (0x1 << 1); + } + +} +// criar outro com as especificações acima só que mudando apenas os rgb + + +//ainda com alguns problemas +void setVelocidade(unsigned short *r0, int velocidade){ + + int velo = (velocidade / 100) -1; + + *r0 &= ~(0x3F << 3); + + *r0 |= (velo & 0x3F) << 3; +} + + +unsigned char mapearLetra(unsigned char letra) { + + switch (letra) + { + case 'A': return 0b01000001; + case 0xC0: return 0b11000000; //À + case 0xC1: return 0b11000001; // Á + case 0xC2: return 0b11000010; // Â + case 0xC3: return 0b11000011; // Ã + case 'B': return 0b01000010; + case 'C': return 0b01000011; + case 0xC7: return 0b11000111; //Ç + case 'D': return 0b01000100; + case 'E': return 0b01000101; + case 0xC9: return 0b11001001; //É + case 0xCA: return 0b11001010; // Ê + case 'F': return 0b01000110; + case 'G': return 0b01000111; + case 'H': return 0b01001000; + case 'I': return 0b01001001; + case 0xCD: return 0b11001101; //Í + case 'J': return 0b01001010; + case 'K': return 0b01001011; + case 'L': return 0b01001100; + case 'M': return 0b01001101; + case 'N': return 0b01001110; + case 'O': return 0b01001111; + case 0xD3: return 0b11010011; //Ó + case 0xD4: return 0b11010100; //Ô + case 0xD5: return 0b11010101; //Õ + case 'P': return 0b01010000; + case 'Q': return 0b01010001; + case 'R': return 0b01010010; + case 'S': return 0b01010011; + case 'T': return 0b01010100; + case 'U': return 0b01010101; + case 0xDA: return 0b11011010; //Ú + case 'V': return 0b01010110; + case 'W': return 0b01010111; + case 'X': return 0b01011000; + case 'Y': return 0b01011001; + case 'Z': return 0b01011010; + + //minúsculas + case 'a': return 0b01100001; + case 0xE0: return 0b11100000; //à + case 0xE1: return 0b11100001; //á + case 0xE2: return 0b11100010; //â + case 0xE3: return 0b11100011; //ã + case 'b': return 0b01100010; + case 'c': return 0b01100011; + case 0xE7: return 0b11100111; //ç + case 'd': return 0b01100100; + case 'e': return 0b01100101; + case 0xE9: return 0b11101001; // é + case 0xEA: return 0b11101010; // ê + case 'f': return 0b01100110; + case 'g': return 0b01100111; + case 'h': return 0b01101000; + case 'i': return 0b01101001; + case 0xED: return 0b11101101; //í + case 'j': return 0b01101010; + case 'k': return 0b01101011; + case 'l': return 0b01101100; + case 'm': return 0b01101101; + case 'n': return 0b01101110; + case 'o': return 0b01101111; + case 0xF3: return 0b11110011; //ó + case 0xF4: return 0b11110100; //ô + case 0xF5: return 0b11110101; //õ + case 'p': return 0b01110000; + case 'q': return 0b01110001; + case 'r': return 0b01110010; + case 's': return 0b01110011; + case 't': return 0b01110100; + case 'u': return 0b01110101; + case 0xFA: return 0b11111010; //ú + case 'v': return 0b01110110; + case 'w': return 0b01110111; + case 'x': return 0b01111000; + case 'y': return 0b01111001; + case 'z': return 0b01111010; + default: + printf("Letra inválida! Forneça uma letra válida.\n"); + return 0; + } + } + + +void setPalavras( unsigned short *reg, char letra, char letra2 ){ + + unsigned char valor1 = mapearLetra(letra); + unsigned char valor2 = mapearLetra(letra2); + + + if(valor1 && valor2){ + + *reg &= 0x0000; + *reg |= valor1; + *reg |= (valor2 << 8); + + + } else{ + + printf("Erro"); + } + +} + + + +// Funções de GET + + +const char * getEstadoDisplay( unsigned short *r0){ + + return (*r0 & ( 0x1 << 0)) == 0 ? "desligado" : "ligado"; +} + +const char * getEstadoLed( unsigned short *r0){ + + return (*r0 & ( 0x1 << 9)) == 0 ? "desligado" : "ligado"; +} + +const char * getCorLed( unsigned short *r0){ + + if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "white"; + } + + if ((*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "yellow"; + } + + if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "cian"; + } + + if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "pink"; + } + + if ((*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "red"; + } + + if (!(*r0 & (0x1 << 10)) && (*r0 & (0x1 << 11)) && !(*r0 & (0x1 << 12))) { + return "green"; + } + + if (!(*r0 & (0x1 << 10)) && !(*r0 & (0x1 << 11)) && (*r0 & (0x1 << 12))) { + return "blue"; + } + +} + +const char * getCorDisplay( unsigned short *r1 , unsigned short * r2 ){ + + if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "white"; + } + + if ((*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "yellow"; + } + + if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "cian"; + } + + if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "pink"; + } + + if ((*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "red"; + } + + if (!(*r1 & (0x1 << 1)) && (*r1 & (0x1 << 8)) && !(*r2 & (0x1 << 1))) { + return "green"; + } + + if (!(*r1 & (0x1 << 1)) && !(*r1 & (0x1 << 8)) && (*r2 & (0x1 << 1))) { + return "blue"; + } + +} + +const char * getBateryLevel( unsigned short * r3){ + + if (!(*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { + return "critico"; + } + + if (!(*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { + return "baixo"; + } + + if ((*r3 & (0x1 << 0)) && !(*r3 & (0x1 << 1))) { + return "médio"; + } + + if ((*r3 & (0x1 << 0)) && (*r3 & (0x1 << 1))) { + return "alto"; + } + +} + +const char * getModoExibicao( unsigned short *r0){ + if (!(*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { + return "estático"; + } + if (!(*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { + return "deslizante"; + } + if ((*r0 & (0x1 << 1)) && !(*r0 & (0x1 << 2))) { + return "piscante"; + } + if ((*r0 & (0x1 << 1)) && (*r0 & (0x1 << 2))) { + return "deslizante/piscante"; + } +} + +int calcularQuantidadeMensagem ( unsigned short *r3){ + + int quantidade =0; + + unsigned short bits_relevantes = ( *r3>> 2) & 0xF; + + for(int i = 0; i < 4; i++){ + + if(bits_relevantes & (0x1 << i)){ + quantidade += (1<> 3) & 0xF; + + for(int i = 0; i < 6; i++){ + + if(bits_relevantes & (0x1 << i)){ + quantidade += (1<> 6) & 0x3FF; + + // Converter para decimal e considerar complemento de dois para valores negativos + int valor_decimal; + if (bits_relevantes & 0x200) { // Se o bit mais significativo estiver definido, é negativo + valor_decimal = -(0x3FF - bits_relevantes + 1); + } else { + valor_decimal = bits_relevantes; + } + + // Calcular a temperatura em graus Celsius + float temperatura = valor_decimal / 10.0f; + return temperatura; +} + + + +char mapearCaractere(unsigned char valor) { + switch (valor) { + case 0b01000001: return 'A'; + case 0b01000010: return 'B'; + case 0b01000011: return 'C'; + case 0b01000100: return 'D'; + case 0b01000101: return 'E'; + case 0b01000110: return 'F'; + case 0b01000111: return 'G'; + case 0b01001000: return 'H'; + case 0b01001001: return 'I'; + case 0b01001010: return 'J'; + case 0b01001011: return 'K'; + case 0b01001100: return 'L'; + case 0b01001101: return 'M'; + case 0b01001110: return 'N'; + case 0b01001111: return 'O'; + case 0b01010000: return 'P'; + case 0b01010001: return 'Q'; + case 0b01010010: return 'R'; + case 0b01010011: return 'S'; + case 0b01010100: return 'T'; + case 0b01010101: return 'U'; + case 0b01010110: return 'V'; + case 0b01010111: return 'W'; + case 0b01011000: return 'X'; + case 0b01011001: return 'Y'; + case 0b01011010: return 'Z'; + case 0b01100001: return 'a'; + case 0b01100010: return 'b'; + case 0b01100011: return 'c'; + case 0b01100100: return 'd'; + case 0b01100101: return 'e'; + case 0b01100110: return 'f'; + case 0b01100111: return 'g'; + case 0b01101000: return 'h'; + case 0b01101001: return 'i'; + case 0b01101010: return 'j'; + case 0b01101011: return 'k'; + case 0b01101100: return 'l'; + case 0b01101101: return 'm'; + case 0b01101110: return 'n'; + case 0b01101111: return 'o'; + case 0b01110000: return 'p'; + case 0b01110001: return 'q'; + case 0b01110010: return 'r'; + case 0b01110011: return 's'; + case 0b01110100: return 't'; + case 0b01110101: return 'u'; + case 0b01110110: return 'v'; + case 0b01110111: return 'w'; + case 0b01111000: return 'x'; + case 0b01111001: return 'y'; + case 0b01111010: return 'z'; + default: + printf("Valor inválido! Não corresponde a uma letra.\n"); + return '\0'; // Retorna um caractere nulo para indicar erro + } +} + +char getLetra(unsigned short *reg, int pos){ + + if(pos == 0){ + return mapearCaractere( *reg & 0xFF); //0-7 + } + + else if(pos == 1){ + return mapearCaractere ((*reg >> 8) & 0xFF);//bit 8-15 + + } + + +} From 04f1242f45fdeb279f21b5b95032cea8a55625ef Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:12:17 -0300 Subject: [PATCH 35/42] Update Makefile --- Makefile | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 70eddaf..d376c9c 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,14 @@ # Regras principais all: tool -tool: registers.o bibhardware.a - gcc -o tool registers.o -lregisters -L. - -bibhardware.a: registers.o - ar rcs bibhardware.a registers.o - -registers.o: registers.c libregisters.h - gcc -c registers.c +tool: biblioteca.o libregisters.a + gcc -o tool biblioteca.o -lregisters -L. +libregisters.a: biblioteca.o + ar rcs libregisters.a biblioteca.o +biblioteca.o: biblioteca.c libregisters.h + gcc -c biblioteca.c # Limpeza dos arquivos gerados clean: From 83ee56572490733eecb98d6cfdbba13c8d1544f0 Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Thu, 13 Jun 2024 21:37:55 -0300 Subject: [PATCH 36/42] arrumado o reg --- biblioteca.c | 12 ++++++------ biblioteca.o | Bin 0 -> 15664 bytes libregisters.a | Bin 3796 -> 19900 bytes libregisters.h | 7 ++++--- programa | 0 registers.bin | Bin 1024 -> 1024 bytes tool | Bin 21312 -> 21344 bytes 7 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 biblioteca.o delete mode 100755 programa diff --git a/biblioteca.c b/biblioteca.c index 32f92ae..090fba1 100644 --- a/biblioteca.c +++ b/biblioteca.c @@ -74,20 +74,20 @@ void setPadraoFabrica(unsigned short *reg, int bit){ else if(bit == 1){ // muda de 0 para um o bit 13 do primeiro registrador - *r0 |= (0x1 << 13); + *reg= (0x1 << 13); //coloca na versão de fábrica a velocidade de exibição - *r0 &= ~(0x1 << 2); - *r0 &= ~(0x1 << 1); + *reg &= ~(0x1 << 2); + *reg &= ~(0x1 << 1); //coloca a velocidade na versão default - *r0 &= ~(0x3F << 3); + *reg &= ~(0x3F << 3); - *r0 |= (2 & 0x3F) << 3; + *reg |= (2 & 0x3F) << 3; //muda o led de operação do display para o padrao de fabrica - *r0 &= ~(0x1 << 9); + *reg &= ~(0x1 << 9); } diff --git a/biblioteca.o b/biblioteca.o new file mode 100644 index 0000000000000000000000000000000000000000..733768c03966490102084c46e7561e264ac1cd61 GIT binary patch literal 15664 zcmeI(e{@vknFsK9k|3cAOsG&nL5CK4q=gV%T+spzKL$ga2o!>75i?09WMqd9zzpPX8D`M!5< z9ulqF{ja^}4ELGO`}5v;@60oE!`=SkMOhw?vYSWERheg2m8!cw6BnAWPPD}-R?Gjbc%M~cE~;FqGY@$S=yZ}>0FrfcbE=G zb9TcoIE}i-n*P4ZlD*0)Ni=kN;$NdzjZm&Om+3MUAH_27{x(GVBqSO-JaG)tqt6Zp z>A}g-gLJ4k20;l2L5Y~NKF|HmaN>x^nU6TbiT3kO(SW@u*Xxw!R5iVLT(8q-PSL=< z#5Q0?ci(B|6*dQYSScR@eJF|c%rb|-Qko^6r2{G_~*4ak~u}@NW~aOGArE~HZxhLg=>rfTDZpOe{h}2c*p(zj-raT zqR{JCZR=WA)cOZs>nB56d#_5iCflYQNpyOW{ysf&r#|P-+3eH{h?acuet%zUdv?|2 zUeB;L^OB;}JxroIFWKAV@AK~W_a!>#%{id2b?<#$SxO~aigt|NhD*O_#}Mr9&&ev< zRkUM_Ay3=f3+<_SIzIEduAFMQaN)w4BZyiNy@2RNMEejOLi8_)=A*@KL<mzuMQJUfR}fVqT7=SD5#5MrDWW1oix4eFG#k;YXmJgq@4>D{^nFBE zA}U5S8c_+NuOPY!kwUZt(MS5dG4%#|=|*%M(P=~{5S>J{6!rcC(K19YA^HKLUn5$M zXfL7_i2fN-DWYaX|A}7y5z$Im6QY|DZ9%jOQ4G;7i0(jiE21()0YobiwWF6}L~kRS zkLWa_S%}_2l#i$!EhZtVKy*2x_fVRLs1kMwq9CF^{ZHx)O8*+!50wE?>+sg2luJ+%qD zD^ho1H<}B)D0vu1s8aanXy#)h(e2Y8cb&-(l5NRXno2vG{O$U3>G1AvVS^_Bc?}vf zaG|l`yowbzHe67#8*n*R>GwyKzAp20<@3Yv8QJez)q0_|J=b-ic8$r*%uLEmZ|6?e z-1Nt=?gwwW-sf5p?VfEd@nLM#HI#w)1azuT#ybCU4RX*Rc1>o;$tu^-Rc^{NG@Qeq z*`*hiyZB3V5_dXTK2Rs|FFBKu19dXM;lw}haE_*5NS^b_YOuo@pp(quV3}WZPU6$u zls>WJ-DFN|<^`VbE;G{@pojRyJ;a@ev{X=GsE_V)s+#Gw|KvLl`+M~ng7 z@k|F*-aodS^?u9Wd)Avb0tb55yQcN5ca*x)O&(_Q zM3aY^JkjJ~CQmeZn8^f99%eE@lZTm1(Bxqz6Eu04$plRvW->vOhnf7(en92W;2Bh;plZTnS&g5YxuQPdACEB*2p2_A+9%eE(lZTni&E#R#sJ9FC zOy*|tFq5xsg&|+lc^Hy4orfV)(|H)uG@XZ;94(Me$8JrhW6RU&SaCWX^QY6Xx#@K5 z|0NI0zn;mA(M7>O)%fNF5_E{zUp#ag*v5EsyG;n27IB~^@kn{hbjXTeTyQ| z+Tful0={@nz!x^9EX&u&`Pc2QXW%d54EUqbh^h?MheK-vl@Z0=hU!o(s5S+|;m8J6 z5en3*x=`&p6%AIZwb5X(R+We2K~)hA#X=PkRUQa!jHsGJPgRB@DiDrERIomF=rL1f zy1pw=tGlZU)mNAxW78d583;$B&h;6Y=)39AFC)H+NHiL(uZz@H27Rt8^)KoQ_03Z^ zE?97b@9NU>cx^21n=vDQW`4o68FBM;#+GZY$uF2Wg^Z77rN1qxA^LISO{Msz*8
}cwpOyfBYl!?#)^-;*zYVb&Yh{Y`ESAD_@;1 zR`|?y+BcZyrti&PP~Ob)2i)zm?sdjL$nv-Pl^=J?Pq7@Ia?bc!Yn<{vmQTXTu*a8u zMK&so*EAj}nBJQ4k1fx7$Z3!7DA=asA6s5!icR~~ET7>nug;WjW_cI(wte<#j~&06 zH#p;G-Qu(#uNMn8WDc3~)lNBnTEn&m|JeCw zl{)3CS&kpxobv1`S*U>XyP4(4u$=O&`KCQ+pbb;bQ6F3ws4N>_O9$Ap&Fb%8Fj7DL zs;j1M5J+oB)1uH}}{fcjmRq)W`&)gi_osQ!;x|GuH=`erTb@Co{Ux>>{8a6Zug zdvvpQwY@-peV7jPX4b6UAJY%i|Ha=xl`?Bp?|-i!@Y{z&Gv1|R_;~ZBL8)?6suU7o z_!hcZle%mi{T;eli`u8r=i!Ccn^}W;KZjn=lVR2#DwK!H!=XqlSP{stQ1!vs?G+LI z2~?~<;hZN6L-lpxz$UjP_pHOdybrfF$K zum%Sii|gs8r@kPdk68~B#0cr*Q0il@Q!HqZyWn z^-)}Ra4ae7UmwJybld-E&hKtleJl~%&l95lIM&}Q{2TO>!fpMxh1>em^=BtGJD+c{ zpP29h`T^nB(a#H?O<%z4&-Oo$-Xz>le?|EB>6d?H;CcQ~xSeOSa68Ypgxh&u$@c>} z&(*^1JbxnG&hri7OF4fJ-&bt^tLRgOuc6;8JV@Uu{0{mH!ejI^!tbV!=KGVKPZNC_ z-=D1S<8=}devI}1eh@F?`0k;g8Ud2>&JhnDA%lZNh&;KQ8=t^pnEhrJoXhmfkMh!}Hc5+)M8i zK7rmX+`jHT!i!k{obcuJUg2x#eZoU@om!gBuB#Y5NBF(;T;UJWhYN3}<0oBgwtt&v zj28aytUp%x^Yrn;Tj@UGFVpe!vU}X4^s9xxN}nqHHF|;Y6ZDzF-=yQGZuhuv(Ps;{ zc~YV9cUga-@H6xx;qTM&v%7oT59mvUe@I^;{D0`Hgnvd~E!>lv9Vbb@EP=-!mp)2Ec|-< zF5z?N&BEu=cMJE^9~Zuu{-p2{`X1rS=zE2i()S6!g`N_A8~vd00KG+ckp7bJ5dDbo z8u~HechcL0$LYs~Z=#z~W@QL)9!l%<`37UAny?hGIOvN6+E!DAu2%=L-K7eYo&v=y}4QrQ6>l zZT}C@+eH0s{N3lc@Q3Ipg+E3=CH&v$?ZTg@cL@J2y;Jy`^lstr(R+k{NIxe$+pABu z-gUQ?LO{3@JnC=|^4n0@+V)}65H`DWk2kE1Q*VD%ezlT0v_ycsG z@So8q34fY?weSP>x zqwuHcTZP--bDM;>vi^4A$LKqS|Bn8!@YD2N!r!Mi3-6`x7M?vSz1|)dK9c^V@Nx7# z!Y9%93ZG8jC;SGwFFm~TzQL!eP`LfQuS|F~zgIL0xA%p23%B1}T7=vC!tKKCePJcO zzu5c2KH>KMZ=rB|pSMi7z0cby+}`KiE!^JcZ4qwo^R^4O_j%0;*2iYwx9xpiAHe1I zK5wCLd!M&VxV_KYDBRxXRr&RsYGQ$My^lrH`)V6SgW*7aEVwbI@+$+efXXkguUGj- zqmi^!L~3e+wYoyBzD1m`|Bz;yzAam^j?dTD#`Ei<5q*C&wuudc)wfqg12w_)QT_S< z`g9jKrTkjqbXdsf1zuOSfT!O+HGkKDrC;bsI#@M6y|?+paQzf*nZBv9>05A;F8&%AUybDP+x9+P=HBf5 ztwnTzK4tq{9=H9zW$VlKcj$tF&R^bj=@#vrFwP%t`P%mO{0%fVTJC0rI!+9?NimLW mkF;2>9Zf0^f3TysMdE~srwYqtp!PkpOml_*2j<>n`~L+N=6+)U literal 0 HcmV?d00001 diff --git a/libregisters.a b/libregisters.a index d5d2ec1e57f28e30aab2bcc4d796357bdc4fdff8..c05800775465f2fa2502b0db45e591f244f65841 100644 GIT binary patch literal 19900 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 @@ -33,4 +33,5 @@ int calcularVelocidade(unsigned short *r0); float calcularTemperatura(unsigned short *r3); char getLetra(unsigned short *reg, int pos); -#endif // LIBREGISTERS_H + +#endif /* REGISTERS_H */ \ No newline at end of file diff --git a/programa b/programa deleted file mode 100755 index e69de29..0000000 diff --git a/registers.bin b/registers.bin index da39d3a9151fb157d8040147d218f84807fc4386..fccffa61058a7c6203c73ab67d6325a1ec34981e 100644 GIT binary patch delta 16 XcmZqRXy9NMm-+wyKST9K_MglEF?I%b delta 16 XcmZqRXy9NM7h(ASpCNi9`%h*7CyxbC diff --git a/tool b/tool index a8bd8ec9b6191c01b80a5a666450fb210292fc57..097d781ca61b16bc8f43173db8fe6dc7ad763cbb 100755 GIT binary patch delta 5294 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 I8ap%T|KAa6EC2ui From e3153ced05fdcc0272986c13fb1efbd1b4500354 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:38:39 -0300 Subject: [PATCH 37/42] Update Makefile --- Makefile | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index d376c9c..c6cd82f 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,17 @@ # Regras principais all: tool -tool: biblioteca.o libregisters.a - gcc -o tool biblioteca.o -lregisters -L. +tool: main.o registers.o libregisters.a + gcc -o tool main.o registers.o -lregisters -L. -libregisters.a: biblioteca.o - ar rcs libregisters.a biblioteca.o +libregisters.a: registers.o + ar rcs libregisters.a registers.o -biblioteca.o: biblioteca.c libregisters.h - gcc -c biblioteca.c +main.o: main.c libregisters.h + gcc -c main.c + +registers.o: registers.c libregisters.h + gcc -c registers.c # Limpeza dos arquivos gerados clean: From 2cb8266bc5c1731b3268befd34da25343b644579 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:40:22 -0300 Subject: [PATCH 38/42] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c6cd82f..21a9d9f 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,10 @@ libregisters.a: registers.o ar rcs libregisters.a registers.o main.o: main.c libregisters.h - gcc -c main.c + gcc -c main.c -o main.o registers.o: registers.c libregisters.h - gcc -c registers.c + gcc -c registers.c -o registers.o # Limpeza dos arquivos gerados clean: From be8adbe0ba2e1a24b4945a7903e5da7ab59cabe0 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 21:42:34 -0300 Subject: [PATCH 39/42] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 21a9d9f..c6cd82f 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,10 @@ libregisters.a: registers.o ar rcs libregisters.a registers.o main.o: main.c libregisters.h - gcc -c main.c -o main.o + gcc -c main.c registers.o: registers.c libregisters.h - gcc -c registers.c -o registers.o + gcc -c registers.c # Limpeza dos arquivos gerados clean: From 0d12ecc5b9a6c1d26c58da8b8c2e18996c3425df Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Thu, 13 Jun 2024 22:04:28 -0300 Subject: [PATCH 40/42] arrumando o registers --- Makefile | 5 +---- bibhardware.a | Bin 19286 -> 0 bytes registers | Bin 0 -> 21392 bytes registers.bin | Bin 1024 -> 1024 bytes registers.c | 2 +- registers.o | Bin 18728 -> 0 bytes tool | Bin 21344 -> 0 bytes 7 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 bibhardware.a create mode 100755 registers delete mode 100644 registers.o delete mode 100755 tool diff --git a/Makefile b/Makefile index c6cd82f..ba0e426 100644 --- a/Makefile +++ b/Makefile @@ -2,14 +2,11 @@ all: tool tool: main.o registers.o libregisters.a - gcc -o tool main.o registers.o -lregisters -L. + gcc -o tool registers.o -lregisters -L. libregisters.a: registers.o ar rcs libregisters.a registers.o -main.o: main.c libregisters.h - gcc -c main.c - registers.o: registers.c libregisters.h gcc -c registers.c diff --git a/bibhardware.a b/bibhardware.a deleted file mode 100644 index d898be880cee1fa240614166351c645d8c430f35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19286 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 diff --git a/registers b/registers new file mode 100755 index 0000000000000000000000000000000000000000..b192b323cf2969c62c425e2ef08c5c1fbf212588 GIT binary patch literal 21392 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 YzuK1DQ4SNSdgdn6g1@=8HwP>J3-osUDgXcg literal 0 HcmV?d00001 diff --git a/registers.bin b/registers.bin index fccffa61058a7c6203c73ab67d6325a1ec34981e..101793fd289cc15bd5896ebcbd5dfcb7ea8355af 100644 GIT binary patch delta 12 TcmZqRXy9NL7h%}Q{FfO35vKz4 delta 12 TcmZqRXy9NLm-)Yu`7bj77SaRy diff --git a/registers.c b/registers.c index a7c32ef..46cc6c4 100644 --- a/registers.c +++ b/registers.c @@ -118,7 +118,7 @@ int main() { printf("O display esta %s\n", getModoExibicao(r0)); //tese para pegar o nivel da bateria - printf("O nivel da bateria %d\n", getBateryLeve(r3)); + printf("O nivel da bateria %s\n", getBateryLevel(r3)); setPalavras(r7, 'l', 'p'); //teste para calculo de velocidade diff --git a/registers.o b/registers.o deleted file mode 100644 index ba5b8511995e7878bc3f0ee003088db36612a511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18728 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 B0lxqM diff --git a/tool b/tool deleted file mode 100755 index 097d781ca61b16bc8f43173db8fe6dc7ad763cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21344 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 From 77d2f81578689a9710b61371336c3057c4029c42 Mon Sep 17 00:00:00 2001 From: Pedro B B Fonseca <84049639+PedroFonseca447@users.noreply.github.com> Date: Thu, 13 Jun 2024 22:05:00 -0300 Subject: [PATCH 41/42] Update Makefile --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ba0e426..70115a3 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # Regras principais all: tool -tool: main.o registers.o libregisters.a - gcc -o tool registers.o -lregisters -L. +tool: main.o registers.o biblioteca.o libregisters.a + gcc -o tool registers.o biblioteca.o -lregisters -L. libregisters.a: registers.o ar rcs libregisters.a registers.o @@ -10,6 +10,9 @@ libregisters.a: registers.o registers.o: registers.c libregisters.h gcc -c registers.c +biblioteca.o: biblioteca.c biblioteca.h + gcc -c biblioteca.c + # Limpeza dos arquivos gerados clean: rm -f *.o tool *.a From 7f3137d60ef042390489ba647aaa951776299c1a Mon Sep 17 00:00:00 2001 From: pedro_fonseca Date: Thu, 13 Jun 2024 22:06:02 -0300 Subject: [PATCH 42/42] finalizado --- Makefile | 4 ++-- libregisters.a | Bin 19900 -> 20710 bytes registers.o | Bin 0 -> 4408 bytes tool | Bin 0 -> 21392 bytes 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 registers.o create mode 100755 tool diff --git a/Makefile b/Makefile index 70115a3..24b39e1 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Regras principais all: tool -tool: main.o registers.o biblioteca.o libregisters.a +tool: registers.o biblioteca.o libregisters.a gcc -o tool registers.o biblioteca.o -lregisters -L. libregisters.a: registers.o @@ -10,7 +10,7 @@ libregisters.a: registers.o registers.o: registers.c libregisters.h gcc -c registers.c -biblioteca.o: biblioteca.c biblioteca.h +biblioteca.o: biblioteca.c biblioteca.o gcc -c biblioteca.c # Limpeza dos arquivos gerados diff --git a/libregisters.a b/libregisters.a index c05800775465f2fa2502b0db45e591f244f65841..a2350503540d299b39454185a618db0647b4edfc 100644 GIT binary patch delta 2270 zcmb_dZD?Cn7(Vwl-{#A1OH(@BMXZM6Mml4=x>@EVnvJ@OSQt!~-X^zex~z>iAGV?- z8Y*7GX5CQ{bg=#y2>x&%%4(f6o3JS|Y1yBli2buMwLcVpSZAcZ@5#Nr$58Q)FP!(> z=XpQQIq!LMa{gW6=8Q1iQ+zNi)n(8{2niA*+WtA#y+FwSH&o?dDw|W(Z2YjCA*!;` zfU1&Kg4H#tpc@(VM`E?poNATclPv$~5@BS@D& z!-?cwvjT+tXcNJuQa5Q+8T6>sCv9qiL*=Rn=}U&OT(tmv&4f09(7$e`Z9Bvd@b+QglqQ#>|y%9T~5tq zFnyXkK;Oz@50JX_9;+kl2vj~%4xZv z%2^VR!!;xh#S=y_& zT$o=#66k@=f!6!=J2cW6g^17@XUpzh-P#!3|1bRhhHPwhhgyhIsQ(LALsaHjxX2wB1^Q6GrY$I ztmpU-IDP}if2{LHjmuy|xy1SN=l+J{0|dI(IKlOXL~qygkQ-b8pXg7HZvkH;&ju_F z2u}E~Xz&kN=+SV1F5eMqHC~57Fr(n!apdXukGF_d1zOnMLo4o+;!X=au&2v4f=voC z(L_~GmsqmU8G8U;rjY)5%o}o+^kq-ePH(r^X{DpyUh!FL-P0Qq2d(rcU`kfn;p-I_ l-E`E~>k48sgX|OO8DEz(gFOuLJN?zyE$;N3?eHIa_;1Kzy&V7m delta 1651 zcmb_cUuaWj6#wp*|DiQEiA$nY8l-Wx9WGsKow|udGp}r-la@Iqq+Lzc(AsL6D>@7* z1cXbdXwP28_D~;$y=*G7S&K;NgNpQ_I0k(vEDvR5Dy*=FbvTxtb92A;TfsLEoP6i| z{eIs$=brE0{B~Wr|BZ5WPod-8Xw7=PjIjt~-2Q)8k2CiAd^D9y_KysWWLY-#MP@X2 z?T5{`e`!;|!P^||o$+`SZU*1xSG_RA8@Cww70u9>HKV6u99=qOB+7@3ql?A-lA^x} z{*A$cR!S`U?y|b7F-u|EP@lIV&GZ;4iXSwhfA zEa19;YuQ|jGaTcJ727dh)=E9-I$`Cmdvv^ulI&t;yjr4^pr`TOoiQG+RiC2jW(%dB zIZQAQSDYPYYYb+c=Xca@K9wEa`FUoT9n`bg)Nn3(zHdlRMMu)n6K#8=@e8r|I~U-b zOW)K=#SCZ#p z|5`Xbz74${oy=*?gBq6dH&lZXAs6_N!(@A?@QFo>d~^e3N$HrBubPo?Io+49z%N@k zEz~dFAK8@}UN9#t7kIMnK(?l5Pc57tkluGOkPgaJcb-ux1`^|>edbn z*x+nDR6j29J_!5Td8;z9E5w^P%-}MKWBX_i{OG&E!3L+)PH!)Dk9Ly7w`wQ<*#?Rl zf@f;82wVKko&_uGb@Wf+kTM2yxUu{-JSl_s2y-n_bxReP`aC*KvoU9+-LG z=kq-8Gtc|$*}K=&-8-X^2on-vTbZv3%GlTvzn|dU1nXf-*l$Z8zLnIR>so!bPjik< zJN7lrNls}Eb$a|u3Up>WIcv_PF^rkUOKT*joG3X=HCVlQ+kQ|x-pRRhiQBp7jrR#P z)N5L1()HAwA3Zz9JQ^6|`p5xh4sh0s7$>%!#s{`JlczDY@dfnKoQr1x-IN@)snw7D zyTBb3xOw@4H1S@Vc+;_OI?1_)decq0NeR=md3a>31Tt=@b0Xc_Bs1%M0QZ#v_c89& z$=BwNZ!1nS=cu!n)cK_}o0;`Xze>(F)OqLJm0Qka{c6Oy=tuJRpkA7f)Q`=xp~%!>q;9g)-|`vV~f;s1GSd&C-=M zwQfS?!V#mWWOXI2lVicfY}bw*TaOXWON-Sz)*uA%iV@Wj_zfV!QRN~#S0gW(k?zk91r9VywslFH={e2bVcXL z!?isJPVx#~EqkqHe+isqA6_kcf6LCtk*P*Wwd@NHMY#jUv=JPz4)*KqHYS=Atar-- zKKna4eomH2{(O$aR?~y^3W`FY9e+H8$3ytjAslOod_*2%ZT5utCp~}Ln=)TxV(Ae7 zLI{7^i}Sq~hwlZkBO(6v5dKaG|1gAq8p6L0;opVupF;RAAzZq58NZ*ROUqCMSk*v5 zU^&aQ%Ne?M4ENSxB{;OMY|1o>h7QcHJFA+7vX!EHteZowl4Did%H(yEm2|q^R6tUh zO0i<@HnP6*ynE#V`pf;fT&t7nr!@48UI9@D3+V#-1BUfNC0mj8?I;XGyA7%naD7oP z>PJky#!@M&BALUfO#W~xrx&PV#%MhtxcjID^Yohl*$GI3D~OsPIL;je{$2D4UIruq zUr3MOM*&Gh9NZ(w8*Xz~oVO)T<)jtooW$>u_!W`R?&kn@tiybeD|d?opb_)~#6@9`*%U6=gjIDbm~0V&Q3EDQ-6{OKyCmwU+6&dC{XPrN=B|&|uguRyC<4n${4FK_nxe%9(n}@G|*-jY7k5G;!u- zNq9=aTTfy0jkV#-u~f^V=V3{1bYKnOAol`2E=7J@Lj=!-`_w6 z#Qd-0@%I5@%4dR9Ccgg}6iGz>0zE?=jPDb`YvcTXS;ml`EFyo=ZYQJY%YFyE@iId{ z=)0E~>VGi*gWhOjZdHmkyviidI!h<4c(W-5&!@I literal 0 HcmV?d00001 diff --git a/tool b/tool new file mode 100755 index 0000000000000000000000000000000000000000..b192b323cf2969c62c425e2ef08c5c1fbf212588 GIT binary patch literal 21392 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 YzuK1DQ4SNSdgdn6g1@=8HwP>J3-osUDgXcg literal 0 HcmV?d00001