PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : frage zu Variablen



Cybererror
05.01.2010, 22:52
Hallo.

Habe zwei Variablen und brauche von der einen die 8Bits und von der anderen nur ein bit und zwar das erste, Wie bekomme ich die zur einer Variablen mit neun bits?

Versteht ihr mich?

TomEdl
05.01.2010, 23:05
Hallo.

Habe zwei Variablen und brauche von der einen die 8Bits und von der anderen nur ein bit und zwar das erste, Wie bekomme ich die zur einer Variablen mit neun bits?

Versteht ihr mich?
Eine Variable mit neun Bits? So ganz verstehen tu ich das nicht, ehrlich gesagt.

Für was soll das Ganze den sein?

Grüße
Thomas

Cybererror
05.01.2010, 23:21
für Temperatur Messung, es ist zwar nur der wert für ,5
weiß aber nicht wie ich ihn dazu rechne.
lese es über i2c aus erst datenfeld mir 8 bit und beim zweiten datenfeld brauche ich nur das erste bit (was halt über die ,5 Grad aussagt.)

yaro
05.01.2010, 23:45
Wenn du das in der Festpunktdarstellungn speichern möchtest (was du anscheinend vor hast), dann multiplizierst du die 8-Bit Variable mit 2 (oder machst einen logischen Schift nach links (<<)) und addierst das Bit aus der zweiten Variable dazu.
Musst halt drauf achten, an welcher Stelle das Bit in der zweiten Variable steht... wenns an erster Stelle steht (bei der 2^0 Stelle), dann kannst du einfach die ganze Variable dazuaddieren, ansonsten musst du dieses Bit eben dahin schieben.
Oder du machst es mit einer abfrage: if(Var2 > 0) then Var1 = Var1 + 1
Nicht vergessen, dass die entstehende variable in einer 16-bit Variable gespeichert werden muss.

Hoffe es hat dir geholfen
Gruß, Yaro

Vitis
06.01.2010, 09:49
9-bit Byte gibts zubächstmal nicht ... mal abgesehen von UART,
ergo wird die nächst größere Stufe ein Word (16 Bit) fällig.
wenn du nur ein Bit eines Bytes auswerten willt kannst du das
entweder direkt ansprechen über bytevariable.x oder über
Maskierung extrahieren

bytevariable = bytevariable AND &B00000001

wenn du zwei bytes zusammenfügen willst kannst du das
über Makeint oder am Schnellsten über Overlayvariable

dim wordvariable as word at &ha0
dim lowbyte as byte at &ha0 overlay
dim highbyte as byte at &ha1 overlay