Forum: Mikrocontroller und Digitale Elektronik BCD in integer


von Jakob (Gast)


Lesenswert?

Hallo!
ich habe eine Schaltung entworfen mit der ich den Zustand von 3 
BCD-Codierer durch ein ATmega8 abfragen möchte.
Nun brauche ich einen C-Code der mir den Wert der BCD-Codierer in einen 
Integer umwandelt!

Kann mir da jemand helfen? Wäre echt super, wenn es klappt.

Besten Dank!

von Ben j. (scarab)


Lesenswert?

1
integer  = bcd[2];
2
integer += bcd[1]*10;
3
integer += bcd[0]*100;

von bla (Gast)


Lesenswert?

Ist doch Kinderkram. Irgendwas wie val=(bcd>>4)*10+(bcd&0x0F) bzw. 
entsprechend wenn bcd mehr Bits hat.

von Jakob (Gast)


Lesenswert?

Naja ich hätte gern gewusst wie ich die 12 Pins (4 pro Decoder) des 
µ-Controllers definieren soll und wie ich aus den Decodern eine Zahl 
bekommen kann die ich in meinem Programm beliebig verwenden kann!

Mal angenommen ich verwende PORT-D und PORT-C als Eingänge für den 
Decodern. Wie kann mein C-Code lauten? etwas ausführlicher bitte, wenn 
es möglich ist.

Besten Dank!

von Ben j. (scarab)


Lesenswert?

D0-D3 -> BCD1  //stelle 10^0
D4-D7 -> BCD2  //stelle 10^1
C0-C3 -> BCD3  //stelle 10^2
1
integer  = (PORTD & 0b00001111)         ;
2
integer += (PORTD & 0b11110000)>>4 *  10;
3
integer += (PORTC & 0b00001111)    * 100;

von gaast (Gast)


Lesenswert?

Jakob schrieb:
> Naja ich hätte gern gewusst wie ich die 12 Pins (4 pro Decoder) des
> µ-Controllers definieren soll und wie ich aus den Decodern eine Zahl
> bekommen kann die ich in meinem Programm beliebig verwenden kann!
>
> Mal angenommen ich verwende PORT-D und PORT-C als Eingänge für den
> Decodern. Wie kann mein C-Code lauten? etwas ausführlicher bitte, wenn
> es möglich ist.

Dafür müsste man nicht nur deine Schaltung und dein kennen, sondern es 
würde auch reichen, wenn du die Zeit, die du in den Thread investiert 
hast, sinnvoll genutzt hättest und dir das AVR-GCC-Tutorial zur Brust 
genommen hättest.

von W.S. (Gast)


Lesenswert?

Jakob schrieb:
> Nun brauche ich einen C-Code...

Na dann schreibe ihn dir doch! Da du dein von dir selbst entworfenes 
System ja am besten kennst, wirst du ja wohl auch selbst am besten 
wissen, welches Bit wohin gehört.

Mal im Ernst: Sowas sollte man selbst können. Wenn nicht, dann solltest 
du lernen, ähem.. präzise gesagt: Du solltest dir das nötige Wissen zum 
eigenständigen Lösen dieser Aufgabe erwerben. Hier einen Neger zu 
suchen, der einem die Arbeit macht, ist nicht im Sinne dieses Forums, 
sondern ein Mißbrauch der Hilfsbereitschaft der Anderen.

W.S.

von Jakob (Gast)


Lesenswert?

W.S. schrieb:

>Hier einen Neger zu suchen, der einem die Arbeit macht, ist nicht im Sinne 
>dieses Forums,
> sondern ein Mißbrauch der Hilfsbereitschaft der Anderen.


Das ist mir auch klar! bloß als Einsteiger braucht man am Anfang Tipps 
und Empfehlungen um zu wissen wie man mit der Problematik umgehen soll!

Danke!

von Ben j. (scarab)


Lesenswert?

Jakob schrieb:
> ... bloß als Einsteiger braucht man am Anfang Tipps
> und Empfehlungen um zu wissen wie man mit der Problematik umgehen soll!

was W.S. meint ist sicher das das keine "Problematik" ist sondern 
absolutes Grundwissen, und ich teile diese Ansicht.

wie gesagt vielleicht mal 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial ansehen oder 
wie einige andere hier in ihrer Anfangszeit einfach selbst herum 
Probieren und solange versuchen bis das erwartete Ergebnis raus kommt.

Wenn du weißt das eine BCD-Zahl ist (ich hoffe das hast du verstanden) 
ist es eigentlich ganz einfach sich den Code selbst herzuleiten.

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.