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
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.
:
Bearbeitet durch User
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
Karl Heinz schrieb: > Wenn angeschlossen, wie vorgeschlagen: gar nichts. Eine kleine Ergänzung hätte ich da noch: Vier Pullup-Widerstände (intern oder extern) braucht man noch. Aber sonst wirklich nichts. Einfach nur einlesen.
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?
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;
Hallo! Je nachdem wie der Schalter intern aufgebaut ist, und wie du ihn anschlisst, mußt du vielleicht das Eingelesene noch invertieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.