witam ponownie... Znowu zatrzymalem sie na jakiejs drobnostce. Chcialem zrobic komunikacje szeregowa miedzy procesorami. W zmiennej typu char znak mam przechowany bajt danych, ktory chce wyslac szeregowo. Wszystko jest ok, tylko nie potrafie "rozebrac" bajtu na bity... Chce to zrobic iloczynem logicznym, mam ksiazke do ansi c i tam jest napisane ze wynikiem operacji bajt & bajt = true/false, tak tez napisalem kawalek kodu (do zobaczenia nizej), podczas uruchomienia debuger'a wyszlo na to ze jezeli w znak mam np. 64 (dziesietnie) i wykonam operacje znak & 64 to w wyniku otrzymam 64 (0x0040). I jak to interpretowac? dlazcego wynikiem nie jest 1? Jak poprawnie to napisac?
PS. Zmodyfikowalem program jeszcze tak: if (znak & 64 == 64){ ... ale rowniez nie dziala to prawidlowo. i w wyniku dzialania programu sa same zera nn1=0, nn2=0, nn3=0.
pozdrawiam, Bartek.
//przyklad programu fragment unsigned char znak; znak = 0x0040;
if( znak & 128 == 1 ){ data_out = 1; puts("nn1 = 1"); } else { data_out = 0; puts("nn1 = 0"); }
data_clk = 0; while(data_in == 1) {} data_clk = 1; //2
if( znak & 64 == 1){ data_out = 1; puts("nn2 = 1"); } else { data_out = 0; puts("nn2 = 0"); }
data_clk = 0; while(data_in == 1) {} data_clk = 1;
//3 if(znak & 32 == 1){ data_out = 1; puts("nn3 = 1"); } else { data_out = 0; puts("nn3 = 0"); }