BCD- Schalter einlesen

OP #3429977
Lesenswert?

Hallo!
Ich habe hier einen Vorwahlschalter zu liegen, mit dem ich einem Mega8
einen Wert 0 bis 9 vorgeben möchte (Sollwert).
Dieser ist BCD-kodiert. Den könnte ich jetzt an vier Eingangspins
anschließen (und GND). Was muß ich tun, um daraus ein Hex-Byte oder
eine Binärzahl zu bilden, zur weiteren Verarbeitung?
Tabelle aufstellen?
Bits addieren?
Kurze Hilfestellung erbeten! (Schubs in die richtige Richtung).
Joachim
Angehängte Dateien:
#3429984
Lesenswert?

J. H. schrieb:

> Dieser ist BCD-kodiert. Den könnte ich jetzt an vier Eingangspins
> anschließen (und GND).

Vorzugsweise an die Datenbits 0 bis 3 vom bewussten Port.

> Was muß ich tun, um daraus ein Hex-Byte oder
> eine Binärzahl zu bilden, zur weiteren Verarbeitung?

Wenn angeschlossen, wie vorgeschlagen: gar nichts.
Einfach den Port einlesen und die nicht benutzen Bits auf 0 setzen.

zb
1
   x = PINB & 0x0F;

wenn der BCD-Schalter an die Bits 0 bis 3 vom Port B angeschlossen ist.

Ansonsten: ja, dann wirst du die Einzelbits anhand ihrer Wertigkeit eben 
addieren müssen. Ist jetzt auch kein Beinbruch, aber wenn dir die 
Hardware durch die Art des Anschlusses das schon abnimmt, ist es 
natürlich simpler.
Gast #3429989
Lesenswert?

BCD und Hex code sind für Zahlen von 0-9 zunächst mal identisch!

BCD bedeutet binary coded decimal-> damit werden immer aus 4bit die 
Ziffern 0-9 abgebildet - die Zahl 16dez währe somit z.b. in BCD 0001 
0110

Bei einstelligen (dezimal) Ziffern gibts keinen Unterschied zu hex
OP #3430079
Lesenswert?

Ich präzisiere mal:
Ich habe an einem Mega8 nur noch die oberen vier Bits vom Port B
zur Verfügung, alle anderen sind schon belegt. Und: ich kann bis jetzt
"nur" Bascom (Anfänger). "Einlesen" hört sich gut an, aber wie?
Soll ich den ganzen Port nehmen und dann viermal rechts-shiften?
Gast #3430091
Lesenswert?

J. H. schrieb:
> Ich präzisiere mal:
> Ich habe an einem Mega8 nur noch die oberen vier Bits vom Port B
> zur Verfügung, alle anderen sind schon belegt. Und: ich kann bis jetzt
> "nur" Bascom (Anfänger). "Einlesen" hört sich gut an, aber wie?
> Soll ich den ganzen Port nehmen und dann viermal rechts-shiften?

Richtig. Ich kenne mich mit Bascom nicht aus, deswegen der Hinweis: Wenn 
beim Rechts-Shiften von links Nullen reingeschoben werden, dann ist 
alles ok. Wenn nicht (dann heißt es eigentlich "rotieren"), dann mußt du 
nach dem Schieben die oberen 4 Bits auf Null setzen, also

 x = (PINB >> 4) & 0x0F;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren