Popraw posta i wstaw kod w znacznikach syntax a nie w code
topic7402.htmlA co do twoich pytań to powinieneś poczytać o maskowaniu bitów. Albo obejrzeć Mirka poradniki, w których to porusza temat maskowania bitów
http://mirekk36.blogspot.com/2014/03/ma ... m-oka.htmlhttp://mirekk36.blogspot.com/2014/05/if ... -o-co.html------------------------ [ Dodano po: 10 minutach ]A tak w skrócie ten zapis
PORTD & 0x80 to jest wyrażenie (jak wszystko w C). Wyrażenia w C mogą być prawdziwe (true) lub fałszywe (false). To wyrażenie można zapisać tak
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dzięki temu ładnie widać kiedy ono będzie prawdziwe. Wartość 0x80 lub 0b10000000 w tym wyrażeniu to tzw. maska bitowa, która ma ustawiony najstarszy bit. I teraz to wyrażenie będzie prawdziwe tylko wtedy kiedy w PORTD najstarszy bit równierz będzie miał wartość 1.
Czyli ten warunek
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
będzie spełniony jeśli najstarszy bit PORTD (bit nr 7 bo bity liczymy od zera) będzie miał wartość 1.
Natomiast to wyrażenie
!PORTD będzie prawdziwe jeśli wszystkie bity tego portu, rejestru lub zmiennej będą miały wartość 0. Wykrzyknik w tym wyrażeniu to tzw. negacja logiczna. W przyszłości nie myl tego z negacją bitową, którą oznacza się znakiem tyldy ~.
Czyli zamiast
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
można by zapisać
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.