Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Der finale Code Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 28.11.2017 17:23)
 Als Antwort auf DEMO: Temperaturwert in °C mit Nachkommastellen von Dietmar - 25.11.2017 0:43
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ---------------------------------------------------------------------------
' PT1000-Meßmodul: Temperaturwert in °C mit Nachkommastellen umwandeln
' mittels WORD-Arithmetik auf Open-Macro und Open-Maxi
' von Dietmar Harlos am 28. November 2017
' ---------------------------------------------------------------------------

'INCLUDE "omac.def"              'Definitionen fuer die Open-Macro
INCLUDE "omax.def"              'Definitionen fuer die Open-Maxi

' ---------------------------------------------------------------------------

DIM wert WORD                       'der Wert

DIM stellen BYTE                    'Zähler für dezimale Stellen

' ---------------------------------------------------------------------------

' Demo: Das Meßmodul liefert Werte zwischen 12000 und 55000, was einer
'   Temperatur von -68.5°C bis +603.375°C entspricht. Die Rechenvorschrift
'   dafür lautet: Wert / 64 - 256.

' 17772 -> 21.6875°C

wert=17772

' 55000 -> 603.375°C

'wert=55000

' 12000 -> -68.5°C

'wert=12000

' Geeignet (mit dem Faktor 32) skalieren & durch 64 teilen
' außerdem minus 256, dabei Skalierung beachten:

wert=((wert/2) AND &h7fff) - 256*32

' Nun liegt der Temperaturwert mit Faktor 32 skaliert vor:

PRINT "Temperaturwert mit Faktor 32 skaliert=";wert

' Nun den Temperaturwert in °C ausgeben:

PRINT "Temperaturwert in °C=";

' Negatives Ergebnis behandeln:

IF wert<0 THEN
  wert=-wert
  PUT ASC("-")
END IF

' Vorkommaanteil ausgeben, dabei Skalierung beachten:

PRINT wert/32;".";

' Nachkommaanteil ausgeben:

FOR stellen=1 TO 4
  wert=(wert MOD 32)*10
  PRINT wert/32;
NEXT stellen

PRINT "°C"

' Programmende

End2Host=ON
END


Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: