To nie taki banalny problem jakby się na pierwszy rzut oka zdawało. Przyznam się, że chwilę musiałem pomyśleć czemu to nie działa.
Problem jest w tym, że sprawdzasz stan portu D używając maski klawisza (zmienna "klawisz") z portu C i na odwrót. Tak nie można robić bo jeśli chcesz sprawdzić stan klawisza K3 to tak naprawdę sprawdzasz też stan pinu PC6. Jeśli na tym pinie jest stan niski (a tak jest w tym wypadku) to tak jakby klawisz był cały czas wciśnięty. Możesz to sprawdzić podciągając piny do VCC:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem można rozwiązać badając stan danego portu używając masek dotyczących tylko tego portu. Można na przykład dodać do funkcji "klawisz_wcisniety" drugi argument, podając na którym porcie sprawdzamy klawisz.
Na przykład:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Można też w sposób bardziej zaawansowany, przekazując jako drugi argument adres odpowiedniego portu (identycznie jak w funkcji SuperDebounce z BB):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.