Forum: Mikrocontroller und Digitale Elektronik 8 BCD in 4 Bytes umwandeln


von H. B. (Gast)


Lesenswert?

Hallo,

suche für ein PIC18 Projekt folgende Routine (Microchip Assembler).

Ich habe 8 BCD Stellen (jede von 0-9) in je einem Register.
1. Stelle = 1er, 2. Stelle = 10er, 3. Stelle = 100er usw.
Ich möchte nun die Zahl, die sich daraus ergiebt, z.B. Dezimal 25 120 
367
in ein 32 Bit Register schreiben, das auf 4 8 Bit Register aufgeteilt 
ist.

Hat dafür jemand eine Lösung oder einen Denkansatz?


viele Grüße

: Verschoben durch User
von Flo (Gast)


Lesenswert?

Wert in 4 Byte-Variable =1.Stelle + 2.Stelle * 10 + 3.Stelle * 100

von Flo (Gast)


Lesenswert?

und so weiter und so fort... ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Willst du aus den 8 BCD-Stellen einen binären 4-Byte-Long machen, oder 
ein Packed-BCD-Format (also 2 BCD-Stellen in jeweils 1 Byte)?

von Wayne M. (vibra)


Lesenswert?

moin


nennt sich glaub ich packed BCD
4bit für eine Zahl von 0-9 = 2 Zahlen in einem Byte

also wenn du schon BCD vorliegen hast must du doch nur noch die 4Bit 
ausmaskieren und dann in der richtigen reihenfolge zusammen setzen.

schau mal ins wicki
http://en.wikipedia.org/wiki/Binary-coded_decimal

mfg

von Falk B. (falk)


Lesenswert?


von H. B. (Gast)


Lesenswert?

Danke für die Antworten,

Lothar Miller schrieb:
> Willst du aus den 8 BCD-Stellen einen binären 4-Byte-Long machen, oder
> ein Packed-BCD-Format (also 2 BCD-Stellen in jeweils 1 Byte)?

Ich brauche einen binären 4-Byte-Long den ich dann auf 26-Bit "verkürze" 
um damit bei einem DDS-Chip die Frequenz einszustellen.

Gruß

von Thorsten S. (Gast)


Lesenswert?

Beispiel:

du hast:     9    3    5    6    7    1    2    3 in bcd
also      1001 0011 0101 0110 0111 0001 0010 0011 als bcd ziffern

und du willst:

00000101 10010011 10111000 10010011

binär daraus machen!?

kann dein Pic hardware multiplikation?

was spricht dagegen dies durch multiplikation zu erlagen? ansonsten mit 
shiften und addieren die multiplikation nachbauen, oder wenn nicht 
zeitkritisch ist, aufaddieren...

Gruß,
Thorsten

von H. B. (Gast)


Lesenswert?

Hallo Thorsten,

genau das will ich machen.

Der PIC18 hat 8x8Bit Hardwaremultiplikation, werde mir dazu was 
überlegen, oder gibts dafür evtl. bereits fertige Routinen?

Vielen Dank für die Hilfe.


viele Grüße

von Thorsten S. (Gast)


Lesenswert?

Hi,

1)für eine Multipliation gibt es ganz sicher funktionen und beispiele
2)für dein Probem auch, ist ja nun nichts aufregendes und vor allem 
nichts neues (wer suchet der findet)
3)ich würde mir eine Testversion eines C-Compilers runterladen und den 
kram in c ausmultiplizieren, den asm code dann einfach kopieren...

Gruß,
Thorsten

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.