
Z góry wszystkim wielkie dzięki za jaką kolwiek pomoc.
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięModeratorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Zakładam, że masz odczytane dwa bajty : LSB i MSB wyniku pomiaru (pierwsze dwa bajty pamięci scratchpad. Jeśli zadowoli Cię rozdzielczość 1 stopnia (bez części ułamkowej), to wystarczy, że LSB podzielisz przez 16, MSB pomnożysz przez 16 a następnie wyniki zsumujesz ze sobą. Po umieszczeniu tej sumy w zmiennej mogącej przechowywać liczby ze znakiem masz już wynik w stopniach Celsjusza. Jeśli natomiast chcesz lub musisz wynik przedstawić razem z częścią ułamkową, to do wyniku otrzymanego w sposób podany wyżej musisz dodać (i umieścić w zmiennej przechowującej liczby zmiennoprzecinkowe) resztę z dzielenia LSB przez 16 pomnożoną przez 0,0625 (tylko że w przypadku obliczeń na liczbach rzeczywistych i ich przekształcaniu na łańcuch znaków bardzo wzrasta zużycie pamięci programu).Poszukuje czegoś dokładnego bo odczytać to tak ale jak to potem przekonwertowac żeby wychodziła prawidłowa temp. to nie wiem za bardzo
Hmmm ....Zakładam, że masz odczytane dwa bajty : LSB i MSB wyniku pomiaru (pierwsze dwa bajty pamięci scratchpad. Jeśli zadowoli Cię rozdzielczość 1 stopnia (bez części ułamkowej), to wystarczy, że LSB podzielisz przez 16, MSB pomnożysz przez 16 a następnie wyniki zsumujesz ze sobą. Po umieszczeniu tej sumy w zmiennej mogącej przechowywać liczby ze znakiem masz już wynik w stopniach Celsjusza...
Nie tylko wierzę, ale poparłem to doświaczeniem (czego wiarą juz nazwać nie można, bo ta nie jest poparta żadnymi dowodami)radzio wybacz , ale ... nie spodziewałem się po Tobie takiej odpowiedzi
![]()
Przecież w to co napisałeś , chyba sam nie wierzysz![]()
Liczbę z zakresu -55..125 chcesz przechowywać w zmiennej 16-bitowej? Można, ale wg mnie szkoda pamięci.wpisujesz/kopiujesz do liczby typu Integer (np. Integer = Makeint(LSB,MSB) i dopiero na tej liczbie wykonujesz działania algebraiczne
Znak jest "rozciągnięty" na 5 najstarszych bitów MSB, więc po pomnożeniu przez 16 nadal będzie na najstarszym bicie zmiennej i nadal "wpakowany" do zmiennej "signed" będzie wskazywał właściwą wartość liczby.by zachować znak tej liczby
Kod: Zaznacz cały
Dim Lsb As Byte , Msb As Byte , Tm As Integer
Lsb = &HD0
Msb = &H07
Msb = Msb * 16
Lsb = Lsb / 16
Tm = Lsb + Msb
Tm = Tm * 256
Tm = Tm / 256
Print Tm
Kod: Zaznacz cały
Lsb = &HD0
Msb = &H07
Tm=Makeint(lsb,msb)
Tm/16
Print Tm
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości