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



Teraz jest 28 kwi 2026, o 13:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 12 lis 2015, o 18:52 
Offline
Użytkownik

Dołączył(a): 24 wrz 2014
Posty: 25
Pomógł: 0

Mam takie króciutkie pytanko co oznacza ten zapis if (!++key2_lock) ? Przeanalizowałem cały kod z blogu Mirka nie rozumiem, tylko tej jednej linijki, co dzieje się z tą zmienną? Kod poniżej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z góry dziękuję za podpowiedź.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2015, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

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

można by zapisać w ten sposób
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Czyli warunek będzie spełniony wtedy gdy zmienna key2_lock będzie miała wartość równą 0.

Reakcja na zwolnienie klawisza działa w ten sposób.
Po wciśnięciu klawisza spełniony zostaje warunek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Bo zmienna key2_lock ma wartość zero i klawisz jest wciśnięty (stan niski na pinie KEY2). Warunek ten jest spełniony tak długo jak wciśnięty jest klawisz. Czyli po wciśnięciu klawisza zmienna key2_lock ustawiana jest na jeden.

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


Jeśli ten warunek jest spełniony to program w tej linii
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

najpierw zwiększa wartość key2_lock o jeden i sprawdza czy zmienna ma wartość zero. Ten if w tej chwili nie jest spełniony.

W następnym obiegu pętli program znów zwiększa wartość zmiennej i sprawdza jej wartość. I tak do momentu aż zmienna " się przekręci" z 255 na 0. Wtedy if zostanie spełniony i wykona się to co ma się wykonać po puszczeniu przycisku.
Czas w którym zmienna key2_lock zwiększ swoją wartość to jest właśnie debouncing.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2015, o 12:28 
Offline
Użytkownik

Dołączył(a): 24 wrz 2014
Posty: 25
Pomógł: 0

Dziękuję kolego za pomoc.
Pozdrawiam



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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