Skocz do zawartości

[C] Po co ustawiać bity?


Pomocna odpowiedź

mhl,

ahh i aby ustawić odpowiedni pin jaki chcemy ,należy w argumentacji tak to wszystko poskładać za pomocą operatorów ,żeby wyszedł numer docelowego pinu ktorego chcemy wlaczyc/wylaczyc?

Prosty przykład. Masz 8 bitowy rejestr wyjściowy, gdzie każdy bit odpowiada jednemu wyprowadzeniu procesora.

Jak zrobić, żeby nie zmieniając obecnego stanu innych wyjść ustawić wyjście 4 na "1" ?

Jak zrobić, żeby nie zmieniając obecnego stanu innych wyjść ustawić wyjście 1 na "0" ?

Do takich rzeczy używasz oberacji bitowych.

lub szesnastkowy, którego nie polecam

Akurat liczby hexadecymalna są bardzo wygodne w programowaniu mikrokontrolerów. Dlaczego ich nie polecasz? Możesz nie lubić jej używać, aczkolwiek są sytuacje, gdzie naprawdę się bardzo przydają. Może przy zamianie jednego pinu nie do końca( zależy od preferencji programisty ), ale przy zmianie kilku pinów na raz jest wręcz niezastąpione 🙂

Co do głównego pytania to zastosowań jest naprawdę sporo. Na pewno je docenisz wraz z kolejnymi projektami. Przykłady:

- masz w zmiennej wynik jakiegoś pomiaru i chcesz porównać z pomiarem wzorcowym. Robisz na obu zmiennych and(&) i już wiesz, które pomiary się zgadzają, a które nie.

- przesunięcia bitowe są bardzo szybkie w porównaniu z matematycznymi. Gdy zachodzi potrzeba mnożenie/dzielenie przez 2 i jej potęgę warto wykorzystać << czy >>

- Gdy chcesz w jeden zmiennej trzymać wynik wszystkich danych z czujników ( np. 4 czujniki, które dają 0 lub 1 jako wynik ) to wykorzystujesz bitowe or( | ) i odpowiednie przesunięcie i gotowe. Gdy zajdzie potrzeba zmiana tylko jednego czujnika, nie musisz zmieniać całej zmiennej a wystarczy zmienić odpowiedni bit - wtedy robisz to właśnie za pomocą operacji bitowych.

Zastosowań jest naprawdę sporo, a zauważysz to robiąc kolejne projekty.

Pozdrawiam

To ja jeszcze dorzucę swoje zastosowanie.

Często, żeby poinformować główny program,
że przerwanie zaktualizowało jakąś zmienną

deklaruję dodatkowo zmienną o nazwie flaga lub flags.

Wtedy bardzo wygodnie można w programie korzystać

z warunku sprawdzenia flagi czyli tylko jednego konkretnego bitu

(analogia do flag w rejestrach procesora)

Mam do dyspozycji do ośmiu flag w jednej zmiennej uint8_t.

Pozdrawiam

Zuk

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...