Nie żaden aksjomat - tylko jeszcze do końca nie zrozumiałeś - ale już tłumaczę
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
PINC to jest REJESTR. A co to jest REJESTR ??? to jest jeden bajt czyli 8 bitów .... zgadza się ? czy tego nie kojarzyłeś ??? A zatem KAŻDY bit w tym rejestrze odpowiada kolejnym pinom portu, np,
PC0 ----> to jest najmłodyszy bit nr.0 po prawej stronie
PC1 ----> to jest bit nr.1
PC1 ----> to jest bit nr.2
i tak dalej
co zatem wg ciebie miałoby znaczyć wyrażenie
if( !PINC ) ....
pomyśl - chcesz sprawdzać pin PC6 czyli TYLKO bit nr 6 w tym rejestrze .... załóżmy że inne bity (są do nich podłączone nie wciśnięte klawisze) mają wartość = 1 a TYLKO bit nr.6 (PC6) jest wciśnięty - zwarty do masy i w tym bicie jest 0 a zatem cały rejestr ma wartość:
0b1
0111111
co wg ciebie da warunek
if( ! 0b1
0111111 )
ja ci od razu podpowiem że w tym momencie rejestr ma logiczną wartość TRUE ponieważ 0b10111111 jest większe od zera, ale negujemy to za pomocą wykrzyknika i dostajemy FALSE - a zatem warunek nie będzie spełniony jeśli klawisz jest wciśnięty. A chyba nie o to ci chodziło hmmmmm ???
dlatego nie możesz pisać ani nawet myśleć że:
Cytuj:
to jasne, ale skoro używamy go w wyrażeniu logicznym to musi mieć jakąś wartość (0 lub 1)
bo wyżej ci udowodniłem że REJESTR jako zbiór 8 bitów nie przyjmuje TYLKO wartości 0 lub 1 - rozumiesz teraz ???
dlatego MUSIMY sprawdzać co się dzieje na konkretnym bicie rejestru PINC, gdzie każdy bit jak pisałem wyżej odwzorowuje jeden pin od PC0 ... do .... PC7
teraz zobacz zakładamy, że znowu mamy wartość (w trakcie wciśniętego klawisza) gdzie PINC = 0b10111111, a zatem
wyrażenie
( PINC & (1<<PC6) )
da nam wartość:
0b1
0111111 PINC
0b0
1000000 PC6 AND
---------------------------
0b0
0000000
czyli = ZERO
(FALSE)a teraz w warunku mamy negację logiczną czyli wykrzyknik - więc negujemy i mamy TRUE
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
warunek spełniony gdy wciśnięty klawisz
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]