Witam. Proszę o pomoc w rozwiązaniu problemu. Próbuję napisać program, który po krótkim naciśnięciu przycisku KEY będzie powodował ROL'owanie trzech kolejnych diod LED1, LED2 oraz LED3. Funkcja powodująca przewijanie wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
gdzie zmienna akcja1 z obiektu struktury klawisz1 zmienia się cyklicznie z 0 na 1 po każdym naciśnięciu klawisza KEY:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I teraz pojawia się problem ponieważ po wciśnięciu klawisza KEY zapala się tylko pierwsza dioda LED1. Jeśli w pierwszym listingu usunąć Timer2 i zastosować delay_ms to uzyskuje zamierzony efekt lecz nie mogę już wyłączyć diod po kolejnym wciśnięciu.
Proszę o pomoc w rozwiązaniu tych dwóch problemów. Niżej wstawiam kod całego programu.
Z GÓRY DZIĘKUJĘ ZA POMOC!
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
------------------------ [ Dodano po: 57 minutach ]Znalazłem już błąd.
1. Po pierwsze w funkcji :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
trzeba utworzyć zmienną statyczną. Po każdym wejściu w funkcję kompilator na nowo definiował zmienną bajt wartością 1 zamiast zapamiętać ostatnią wartość. Rozwiązuje to dodanie słowa static:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
2. Timer był źle zainicjalizowany, ale nie miało to większego znaczenia w tym przypadku.