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
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)?
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
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ß
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.