Witam,
na wstępie piszę, że niestety nie mogę udostępnić kodu, ponieważ nie chciałbym żeby posądzono mnie o plagiat (kod programu przeznaczony jest na pracę inżynierską).
Mam problem z dziwnie zachowującą się zmienną typu long. Przechowuję w niej ręcznie stworzoną liczbę w taki sposób, że na wyświetlaczu LCD wyświetlam liczbę jako pojedyncze cyfry. Przechodząc po menu prawo/lewo zmieniam cyfrę, a przechodząc góra/dół zwiększam/zmniejszam wartość cyfry. Na końcu z pojedynczych cyfr tworzę jedną liczbę za pomocą takiego kodu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
gdzie digit1 to najważniejsza część liczby (dziesiątki tysięcy), a digit6 najmniej ważna część (jedności).
Następnie zmienną reference_pressure formatuję w taki sposób, że dziele ją przez 100 (aby zmienić skalę), a następnie robię modulo 100 z reference_pressure (wynik modulo to wartość po przecinku).
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Na LCD dla wartości digit1 > 0 wyświetla bardzo dobrze (przynajmniej dla wymaganego przeze mnie zakresu), jednak gdy digit1 = 0, a digit2 > 0 to zaczynają się wyświetlać kompletne bzdury. Np. dla 99900 wyświetla -311,0-72, a dla 91300 wyświetla +257,89. Wygląda to tak, jakbym wykraczał poza zakres liczby. Ale z tego co się orientuję typ long jest 32 bitowy, więc nie powinno być problemu.
Może Wy potraficie mi powiedzieć, o co w tym wszystkim chodzi !
