Bascom BASCOM: 2er Komplement (XOR)

Fuzzy

Mitglied
09. Dez. 2008
60
0
6
Worfelden
Sprachen
Hallo,

um beim DS18S20 negative Temperaturen darstellen zu können braucht man das 2er Komplement. Eigentlich kann man das ganz einfach machen, indem man die Variable XOR verknüpft und 1 drauf addiert. Ich such schon seit zwei Tagen wie ich das 'einfach' in BAscom umsetzen kann hab aber nur ein Beispiel gefunden indem aber die Bits der Variablen einzeln 'getoggelt' werden.

for i = 1 to 8
variable.i = toggle variable.i
next i

Das muss doch einfacher gehen oder?

Danke schon mal :rolleyes:
 
??? Was willst Du eigentlich?
(*Kristallkugel anwerf*)
Bisher empfängst Du nur das niederwertigste Byte, und berechnest daraus die (positive) Temperatur. Jetzt willst Du (mithilfe des MSByte) auch negative Temps errechnen können?
Wenn das erste Byte 255 ist, muß das Temperaturbyte als negative Temp ausgewertet werden. Sollte eigentlich mit Integervariable =Temperaturbyte-256 gehen.
Das liefert dann mit negativem Vorzeichen denselben Wert, wie die entsprechende pos. Temp hatte.
(Die Frage ist nur, wie BASCOM sich überzeugen läßt, das Temperaturbyte als vorzeichenloses Byte zu behandeln)
Edit: Quatsch
Wordvariable=256-Temperaturbyte sollte es sein. Dann steht im lowByte des Word derselbe Wert, wie bei der betragsmässig gleichen positiven Temp. Das nötige negative Vorzeichen hast Du ja am ersten Byte erkannt.
 
Hallo LotadaC,

das ist doch schon mal ein Ansatz den ich direkt mal ausprobieren werde wenn ich zuhause bin.

Vielen Dank
 
Hi Fuzzy,

nimm mal die Bascom Referenz (BASCAVR.PDF) mit etwa 19MB Größe,
im Suchfeld "XOR" eingeben und landest auf Seite 246 (bei meiner Version).
Da stehen Beispiele für logische Verknüpfungen (NOT, AND, OR, XOR).
Die Verknüpfungen arbeiten nach meiner Info auf Bit-Ebene.
Es soltle also genau das sein was du suchst.

Gruß
Dino
 
Ok, jetzt vergessen wir den Quark von mir da oben nochmal. Die Temperatur wird im Sensor als vorzeichenbehaftetes 2 Byte "Wort" abgelegt. Dabei handelt es sich um ein 2-Byte-Integer. Also was auch Bascom darunter versteht. Du muβt also lediglich die beiden empfangenen Bytes in einen Integer zusammenführen (Overlay).
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)