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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.