Odświeżę starego kotleta, bo mam dziwny problem.
Otóż robię kalkulator na atmedze i wyświetlaczu LCD. Jestem na ukończeniu, ale niestety nie wiedzieć czemu procesor nie oblicza mi poprawnych wartości wyników (korzystam z WinAVR). Przepisałem część programu do Deva i działa:
Zaloguj się, aby zobaczyć kod
Oczywiście do wyświetlania wyniku zamiast printfa korzystam z funkcji wyświetlania stringa na lcd. W powyższym listingu floaty są stałe. W moim właściwym programie wyłuskuję je za pomocą funkcji:
Zaloguj się, aby zobaczyć kod
a po wykonaniu działania korzystam ze sprintfa.
I teraz uwaga

:
Jeżeli wpiszę np.: wynik1=wynik1+2.8
Wynik na wyświetlaczu lcd jest ok.
Jeżeli wyświetlę sam wynik1 lub wynik2 (bez dodawania) również widzę poprawną wartość argumentów.
Niestety jeśli wpiszę: wynik1=wynik1+wynik2
Widzę albo wartość pierwszego argumentu, albo jakieś wartości z kosmosu (liczbowe, nie ma krzaków).
PS. Póki co nie chcę przesyłać całego listingu, gdyż jestem przeciętnym programistą i kod jest bardzo nieoptymalny, chaotyczny i mało czytelny

. Mam nadzieję, że ktoś na bazie powyższych wskazówek zlokalizuje błąd.
Dodatkowo dołączam tabelkę "śmieciawych" wyników. Może ktoś znajdzie w nich jakąś proporcjonalność

.
4.75+19.5 = 24.25 (ok)
19.999+1.5 = 20.499 (powinno być 21.499)
4+1.5 = 4.5 (powinno być 5.5)
5*5=0 (powinno być 25)
2.5*4.5=1.25 (powinno być 11.25)
40.89*2.1=4.089 (powinno być 85.869)
Bardzo proszę o pomoc i wskazówki.