Znów Was naciągnę na gadanie o dallas’ie
Z aplikacji wynika że w zasadzie ważne są tylko dwa pierwsze bajty odebrane z dallasa. Jeden z nich to info o znaku temperatury, a drugi to jej wartość pomnożona przez 2. To wystarczy do wyświetlenia temperaturki, jednak trzeba ją podzielić przez 2, tylko... jak takie "skomplikowane" obliczenie z dokładnością do 0,5st C zrobić w asemblerze 51?. Z matmy jestem totalna noga,

ale mam chyba pomysła:
MOV A, LSB ; WSADZ DO ACC WARTOSC TEMPERATURY ODCZYTANEJ Z DALLASA
MOV B , #2
DIV AB ;W TYM MOMENCIE JEŚLI WYNIK TEMPERATURY WYCHODZI Z 5ka PO ;PRZECINKU, TO W B JEST (RESZTA Z DZIELENIA) = 1
MOV LSB, A ;ODDAJ WARTOSC TEMPERATURY
MOV A, B
CJNE A, #1, NO_5 ;JEŚLI JEST RESZTA TO WSADZ TAM 5 (PO PRZECINKU)
MOV B, #5
AJMP DS.
NO_5: MOV B, #0
DS.: ACALL WYSWIETL_TMP ;WYSWIETL TEMPERATURE W FORMACIE:
TEMP= LSB.B”C
Co o tym myślicie?.

A czy w udało się komuś napisać procedurę pokazującą temperature z dokładnością do 0,1st C?.

Domyślam się że w tedy trzeba odebrać całego scratchpad’a z DS1820, tam znajdują się 2 wartości, które są potrzebne do przeliczenie we wzorze podanym w PDFie. Nie chce jakiś linków na zachodnie strony... potrzebuje to „odgapić”

od kogoś z was, kogoś komu to działa...
No i najważniejsze pytanie: zostało jakieś 150bajtow wolnego miejsca w procku. Zmieści się tam taka procedurka? (łącznie z obsługa 1wire)