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



Teraz jest 15 mar 2026, o 01:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 27 sty 2015, o 23:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 kwi 2014
Posty: 58
Pomógł: 0

Cześć, mam problem ze zrozumieniem pewnego fragmentu kodu, który napisałem (sic!):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Działa on tak, jak powinien, ale chodzi mi o akcję po wciśnięciu 3 klawisza. Chcę, żeby była wykonywana dopóki nie wcisnę klawisza 1 ALBO klawisza 2. Na mój rozum w tym miejscu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powinno się znaleć OR ( || ), ponieważ warunkiem while jest 1 albo 2 klawisz, a nie oba naraz. Działa jednak tylko AND ( && ). Co z moim rozumowaniem jest nie tak? :shock:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 23:20 

Pomógł: 0

Przycisk zwiera pin do masy, prawda?

Jeśli tak to gdy oba przyciski są puszczone to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

więc:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wciśnięcie, któregokolwiek przycisku powoduje, że jeden z warunków (PINC & KLAW_x) = 0 przez co iloczyn (&&) też jest zerem.

Jeśli zastosujesz sumę ( || ) to oba warunki (PINC & KLAW_x) muszą być zerami aby suma logiczna była zerem - czyli muszą być wciśnięte oba przyciski jednocześnie.

Myślisz dobrze, tylko logika jest tu "odwrotna" (wciśnięty przycisk to 0) i się można zapętlić ;)


Autor postu otrzymał pochwałę


Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2015, o 23:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 kwi 2014
Posty: 58
Pomógł: 0

Ok, to już rozumiem :)

Ale czy to nie jest przypadkiem tak, że warunek while jest spełniony, kiedy jego argumentem będzie logiczna 1, niezależnie od tego czy klawisz jest zwierany do GND lub VCC? Zastanowiło mnie to, że while się wykonuje, gdy kod wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A przecież zwierając switcha do masy powoduję, że
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sty 2015, o 01:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Pętla while będzie wykonywana do puki warunek jest prawdą (true)
i dla tego while(1) jest pętlą nieskończoną bo jeden zawsze jest prawdą
a zero fałszem (jakby to nie zabrzmiało) :).

Analogicznie kiedy warunek przyjmie wartość fałsz (false) pętla się zakończy
lub kiedy warunek jest false przed wejściem do pętli while
pętla ta w ogóle się nie wykona.

------------------------ [ Dodano po: 5 minutach ]

Więc jak długo na na pinie KLAW_1 rejestru PINC jest wymuszony
stan wysoki (wewnętrznym lub zewnętrznym rezystorem)
while będzie się "kręcić" czekać na pojawienie się stanu niskiego
(zwarcia do masy) na ww pinie i wtedy przerwie swoje działanie.

------------------------ [ Dodano po: 8 minutach ]

Operator "&" w tym przypadku jest maskowaniem
rejestru PINC wartością KLAW_1 żeby sprawdzić konkretny pin w rejestrze PINC
a nie operacją AND "&&"


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sty 2015, o 02:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 kwi 2014
Posty: 58
Pomógł: 0

Aa no tak ;) Dzięki wielkie, poleciały plusy :)



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO