Ĺadny brzuch
Jestem początkującym programistą - doświadczenia nie mam żadnego, ale wkońcu się zmobilizowałem, żeby zacząć. Mam taki problem:
Mam do zaprogramowania mikrokontroler. Nie ważne jaki, po co i dlaczego. Muszę mu wysłać 8 bitową zmieną. Wcześniej było to skonfigurowane jako wysłanie np. PORTB = zmienna; Lecz teraz dwa bity muszą pójść do PORTC. I mam pomysł, aby tą zmienną rozdzilić na tablice i wysłać np. PORTB = zmienna[pierwsze 6 bitów]; PORTC = zmienna[pozostałe dwa];. Zastanawiam się jak to zrobić, ponieważ tak jak wspomniałem jestem prawie zielony z c (wcześniej dużooooo z php). Może za pomocą strlen(zmienna)? Nie wiem czy to przejdzie, dlatego proszę o jakieś sugestie.
Pozdrawiam.
//Jeżeli ktoś nie zrozumiał, formuuje inaczej:
Jak zmienną zmienna zamieścić w dwóch innych zmiennych np. zmienna1 = pierwsze 6 znaków; zmienna2 = pozostałe;?
Użytkownik seak1 edytował ten post 28 luty 2007, 16:46
nie dokonca rozumiem czym jest dla Ciebie ta owa zmienna ... jezeli poprostu ciągiem bitów to w c++( w c chyba tak samo ) odwolac sie do poszczegonych za pomoca operaotra & np. zmienna & (1<<2 ) - sprawdzenie czy 3 bit w jest 1 lub 0
ale operatory przesunięcia bitowego(nie umiem ;P) albo struktura z polem bitowym(co umiem) - pogoogluj o polach bitowych :)
port_a = (zmienna >> 2) & 0x3f; // 0x3f == 00111111b port_b = zmienna & 3; // 3 = 00000011b
operatorem & mozna powiedziec wybieramy sobie bity (taka maska), a >> odpowiednio przesuwamy.
Zalozmy ze zmienna ma wartość 0xAA czyli 10101010b.
pierwsze co robimy to przesuwamy bity w prawo i wybieramy 6 z brzegu:
( 10101010 >> 2 ) & 0x3F = 00101010
teraz do portu b wysylasz pozostale 2 bity, czyli te: 10101010 tu wystarczy prosty AND (juz nic nie musimy przesuwac) czyli &:
10101010 & 3 = 00000010
Użytkownik icek edytował ten post 01 marzec 2007, 13:26
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam do zaprogramowania mikrokontroler. Nie ważne jaki, po co i dlaczego. Muszę mu wysłać 8 bitową zmieną. Wcześniej było to skonfigurowane jako wysłanie np. PORTB = zmienna; Lecz teraz dwa bity muszą pójść do PORTC. I mam pomysł, aby tą zmienną rozdzilić na tablice i wysłać np. PORTB = zmienna[pierwsze 6 bitów]; PORTC = zmienna[pozostałe dwa];. Zastanawiam się jak to zrobić, ponieważ tak jak wspomniałem jestem prawie zielony z c (wcześniej dużooooo z php). Może za pomocą strlen(zmienna)? Nie wiem czy to przejdzie, dlatego proszę o jakieś sugestie.
Pozdrawiam.
//Jeżeli ktoś nie zrozumiał, formuuje inaczej:
Jak zmienną zmienna zamieścić w dwóch innych zmiennych np. zmienna1 = pierwsze 6 znaków; zmienna2 = pozostałe;?
Użytkownik seak1 edytował ten post 28 luty 2007, 16:46
nie dokonca rozumiem czym jest dla Ciebie ta owa zmienna ... jezeli poprostu ciągiem bitów to w c++( w c chyba tak samo ) odwolac sie do poszczegonych za pomoca operaotra & np. zmienna & (1<<2 ) - sprawdzenie czy 3 bit w jest 1 lub 0
ale operatory przesunięcia bitowego(nie umiem ;P) albo struktura z polem bitowym(co umiem) - pogoogluj o polach bitowych :)
port_a = (zmienna >> 2) & 0x3f; // 0x3f == 00111111b port_b = zmienna & 3; // 3 = 00000011b
operatorem & mozna powiedziec wybieramy sobie bity (taka maska), a >> odpowiednio przesuwamy.
Zalozmy ze zmienna ma wartość 0xAA czyli 10101010b.
pierwsze co robimy to przesuwamy bity w prawo i wybieramy 6 z brzegu:
( 10101010 >> 2 ) & 0x3F = 00101010
teraz do portu b wysylasz pozostale 2 bity, czyli te: 10101010 tu wystarczy prosty AND (juz nic nie musimy przesuwac) czyli &:
10101010 & 3 = 00000010
Użytkownik icek edytował ten post 01 marzec 2007, 13:26