Problem polega na tym, że jednorazowe naciśnięcie przycisku nie przełącza O RAZ tylko gdy przytrzymam, przełącza dalej(co widać przy cofaniu punktów setów). Jest to zrozumiałe z punktu widzenia programu. Nie zastosowałem w nim przerwań tylko zwykłe opóźnienia. Kod jest dość długi, więc nie będę go teraz umieszczał. Jak ktoś będzie chciał podejrzeć jakiś fragment to wkleję, ale liczę, że może uda mi się uzyskać pomoc bez tego. Program po prostu załącza kolejne wyswietlacze LED i w trakcie załączania sprawdza jaka jest zmienna i wg niej przypisuje nań cyfre. Działanie przycisków są opóźnione o 100ms, ze względu, że gdy tego nie było, to przełączało się o kilkadziesiąt punktów przy jednorazowym kliknięciu(pętla wykonywała się kilkadziesiąt razy), no i gdy przytrzyma się dłużej niż 100ms, to wskoczy drugi punkt, ale w tym czasie (tych 100ms) nie wykonuje się pętla główna i stąd to migotanie, przy przełączaniu.
Jak z tego wybrnąć, żeby licznik działał tak jak to zwykle działają, bez migotania i jednorazowe klikniecie to jeden punkt. Czy da się jakoś bez obsługi przerwań?? Pozdrawiam.
Z filmu można wywnioskować, że napisałeś program w sposób totalnie blokujący. Idąc tą drogą daleko nie zajdziesz i co chilę będziesz miał problemy.
Wyświetlanie cyfr na wyświetlaczu powinieneś zrobić w przerwaniu a nie w pętli głównej. Tak wywnioskowałem z opisu. Wtedy unikniesz migania wyświetlacza nawet wtedy kiedy zablokujesz pętlę główną na dłuższy czas np. jakimś długim delayem. Delay niestety zablokuje pętle główną ale przerwania a tym samym wyświetlanie będzie działać bez problemu. Robienie wyświetlacza multipleksowanego w pętli głównej a nie w przerwaniu to jakieś nieporozumienie.
Robienie multipleksowania bez przerwań to hmmm co tu dużo mówić - no to jest jakaś niedorzeczność kompletna Poza tym na filmiku jak na dłoni widać, że masz jakieś mega duchy na tym wyświetlaczu - czyli na innych cyfrach przebijają sąsiednie ... wygląda to okropnie niestety ...
Panie kolego - czas zabrać się za przerwania.
viper303 napisał(a):
Kod jest dość długi, więc nie będę go teraz umieszczał.
Masz rację, że nie umieszczasz bo tak NIGDY się nie robi ... i nie jest to złośliwość tylko motywowanie ciebie do tego aby zrobić to tak jak się należy.
heh, chciałem być sprytniejszy od Pana:D nie no po prostu jako adept jeszcze nie umiem myśleć jak kompilator(bo to mój pierwszy program), ale powoli się uczę:)pozdrawiam i biorę się za robotę:)
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