Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 13 sty 2025, o 18:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 27 cze 2013, o 17:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 60
Pomógł: 0

Witam.
Mam pewien problem, banalny co prawda, ale jednak jak dla mnie dość kłopotliwy. Mianowicie chodzi o zapis:
Kod:
#define KEY_PIN1 (1<<PC6)
#define KEY_PIN2 (1<<PC5)
#define KEY_PIN3 (1<<PC2)

!(PINC & klawisz)


Oczywiście pominąłem większość kodu, gdyż nie rozumiem jak niby stan poszczególnych pinów portu C jest sprawdzanych? Rozumiem to tak:
Zamiast KEY_PIN1 "kompilator widzi" PORTC = 0b01000000
Zamiast KEY_PIN2 "kompilator widzi" PORTC = 0b00100000
Zamiast KEY_PIN3 "kompilator widzi" PORTC = 0b00000100

Zapis sprawdzania stanu klawiszy wygląda według mnie następująco:
PINC (początkowo) = 0b00000000
klawisz - w zależności od wciśniętego micro-switch'a.

! - negacja
!(00000000 & ...) właśnie, co tutaj?!

Troszkę się pogubiłem, dlatego proszę o pomoc! :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 cze 2013, o 18:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27345
Lokalizacja: Szczecin
Pomógł: 1041

Cytuj:
Zamiast KEY_PIN1 "kompilator widzi" PORTC = 0b01000000
Zamiast KEY_PIN2 "kompilator widzi" PORTC = 0b00100000
Zamiast KEY_PIN3 "kompilator widzi" PORTC = 0b00000100


a to co za pomysł ? ;) .... skąd ten PORTC ?

masz tą książkę?

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

bo widzę że masz kłopoty poważne z operacjami bitowymi jeszcze

procek widzi to tak:

!(PINC & klawisz) ------> !(PINC & 0b01000000)

czyli jeśli PC6 nie jest wciśnięty to wartość wyrażenia w nawiasie jest co ? TRUE zgadza się ? więc gdyby nie wykrzyknik negujący logiczną wartość TRUE na FALSE to IF by się wykonał gdy klawisz nie jest wciśnięty - zgadza się ? a przecież nie o to nam chodzi ma się wykonać gdy jest wciśnięty prawda czyli załóżmy że PC6 jest równy 0

!(PINC & 0b00000000)

teraz wartość wyrażenia w nawiasie będzie FALSE - zgadza się ? ;) .... a po zanegowaniu wykrzyknikiem TRUE no i teraz warunek IF się wykona - ma się wykonać ;)

_________________
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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO