Mam bardzo niewielkie doświadczenie w programowaniu i dlatego proszę o pomoc w rozwiązaniu problemu, na który się "nadziałem". Otóż robię sobie automatyczną ładowarkę do akumulatora samochodowego. W "interface użytkownika" zamarzyło mi się wyświetlanie napisów dłuższych niż ilość znaków wyświetlacza. Napisałem więc sobie prosty kod do scrollowania. Działam na znakowym LCD z HD44780 i obsługuję go za pomocą bufora wyświetlanego w programowym timerze co 125 ms. Obsługę wyświetlacza napisałem korzystając z projektu z warstwami z Greenbooka. Wszystko działa mi wyśmienicie, tylko jest jedno "ale". Ponieważ scrollingu mam zamiar używać w kilku miejscach programu, wypadałoby zrobić funkcję "scroll". A tu kod, który działa doskonale w pętli głównej, zapisany jako funkcja i wywołany w tym samym miejscu gdzie był, działać poprawnie nie chce.
A teraz kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Nie jest to kompletny kod, a jedynie ta część, która dotyczy scrollingu i wyświetlania.
Ten kod działa bez zarzutu. przesuwa ładnie napis niezależnie od jego długości.
A teraz opis problemu.
Utworzyłem funkcję scroll
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wywołuję ją tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozostałe fragmenty kodu nie uległy zmianie. I to nie chce działać! Wygląda na to, że funkcja wykonuje się 1 raz, linia wyświetlacza wypełnia się znakiem * i tyle. Zmienna "j" nie jest inkrementowana. Niestety, za głupi jestem, żeby zrozumieć, dlaczego tak się dzieje. W związku z tym bardzo proszę mądrzejszych o pomoc