Forum: Mikrocontroller und Digitale Elektronik Bascom Binäre Daten zusammensetzen


von Quark (Gast)


Lesenswert?

Hallo,

ich suche nach einer Möglichkeit mit Bascom aus 8 einzelnen 
Bit-Variablen eine Dezimalzahl zu erzeugen.

Z.B. Habe ich hier 8 Variablen A,B,C,D,E,F,G,H

A=1
B=0
C=0
D=0
E=1
F=1
G=0
H=0

Diese müsste ich zu einer Binärzahl zusammensetzen, damit ich diese dann 
mit Binval etc. in eine Dezimalzahl umwandeln kann. Bei diesem Beispiel 
wäre das Binär: 10001100 und entsprechend 140 in Dezimal.

von Bernd (Gast)


Lesenswert?

x = A*128 + B*64 + ...

von pff (Gast)


Lesenswert?

sollte gehen:
sammel muss als byte definiert sein.
a= sammel.0
b= sammel.1

usw.

von pff (Gast)


Lesenswert?

alles quatsch was ich schrieb...
sammel.0= a
sammel.2 = b

usw....

von Weingut P. (weinbauer)


Lesenswert?

oder per Alias aufeinander legen

von Karl H. (kbuchegg)


Lesenswert?

> ich suche nach einer Möglichkeit mit Bascom aus 8
> einzelnen Bit-Variablen eine Dezimalzahl zu erzeugen.

Man kann auch mal in die Gegenrichtung überlegen und sich mal fragen ob 
und warum diese 8 Variablen Bit-Variablen sein müssen bzw. ob es nicht 
einfacher wäre von Haus gleich eine Byte-Variable dafür zu benutzen.

von ubuntu (Gast)


Lesenswert?

warum man sich bascom antut...

von Quark (Gast)


Lesenswert?

Die Methode von pff funktioniert. Danke!

@KarlHeinz: Das sind 8 einzelne Statusbits. Und die Zusammen sollen 
einen Dezimalen (Error) Code ergeben. Den kann man dann gut in einem 
Display anzeigen lassen und dann vom Benutzer auswerten. Wenn ich da 
jetzt einfach bloß eine Zahlenfolge von 1en und 0en sehe kann da ein 
unerfahrener Benutzer wenig mit Anfangen.

von Idi (Gast)


Lesenswert?

ubuntu schrieb:
> warum man sich bascom antut...

tut man wenn es nicht unbedingt und unvermeidlich C sein muß.

von Tilmann (Gast)


Lesenswert?

Hallo,

ich hatte das selbe Problem, nämlich für einen gesamten Eingangsport mit 
8 Pins einen Gesamt-Wert geliefert zu bekommen zwischen 0 und 255.

Eure Lösung habe ich nicht kapiert, aber so ging es:

dim A ... H as Byte
dim C_gesamt as Byte

'Der gesamte Port C soll zu einem Byte zusammengefaßt werden
               A = pinc.0
               B = pinc.1 * 2
               C = pinc.2 * 4
               D = pinc.3 * 8
               E = pinc.5 * 16
               F = pinc.6 * 32
               G = pinc.7 * 64
               H = pinc.4 * 128
'leider kann man nicht A+B+C+D+E+F+G+H auf einmal addieren.
               C_gesamt = A + B
               C_gesamt = C_gesamt + C
               C_gesamt = C_gesamt + D
               C_gesamt = C_gesamt + E
               C_gesamt = C_gesamt + F
               C_gesamt = C_gesamt + G
               C_gesamt = C_gesamt + H
               Print "Port-Eingang C gesamt" ; C_gesamt

Gruß Tilmann

von hamegh (Gast)


Lesenswert?

Idi schrieb:
> ubuntu schrieb:
>> warum man sich bascom antut...
>
> tut man wenn es nicht unbedingt und unvermeidlich C sein muß.

das muss nun wirklich nicht sein, es gibt bei weitem leistungsfähigere 
Alternativen zu Bascom. man muss also nicht zwangsweise C nehmen wenn 
man es nicht mag.

von Matthias S. (mat-sche)


Lesenswert?

Hi,

auch ich nutze bascom.... Und wenn ich mal Zeit habe und groß bin, dann 
werde ich eine "leistungsfähigere" Sprache lernen ;)

Für solche Sachen kann auch gut der overlay Befehl genutzt werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.