Forum: Mikrocontroller und Digitale Elektronik MSP430 C-Source Code zur BCD Konvertierung


von nawhki (Gast)


Lesenswert?

Board : MSP430STK2 von Olimex

Hi,
Ich brauche bei meinem Projekt (Ansteuerung PLL ADF4107) ein C-Source 
Code, die eine Long Variable in 20 Bits BCD  konvertieren kann, so dass 
ich die eingegebene Frequenz auf das Olimex LCD anzeigen kann.
Hat jemand eine Loesung fuer mich ?

Danke..

mfg
nawhki

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Und wenn du sie selber schreibst. Ist ja nicht sooo schwer. Hier ein 
Beispiel bei dem die 20-Bit (max. 99999) BCD Zahl in 32-Bit 
untergebracht wird:
1
typedef unsigned long bcd_t;
2
3
bcd_t l2bcd(long l)
4
{
5
   bcd_t ret = 0;
6
7
   if (l < 0 || l >= 99999)   // UNDERFLOW oder OVERFLOW
8
      l = 99999;              // => "Error"
9
10
   ret = ret | (l / 10000);   // 1. Ziffer
11
   l = l % 10000;
12
   ret = ret << 4;
13
14
   ret = ret | (l / 1000);    // 2. Ziffer
15
   l = l % 1000;
16
   ret = ret << 4;
17
18
   ret = ret | (l / 100);     // 3. Ziffer
19
   l = l % 100;
20
   ret = ret << 4;
21
22
   ret = ret | (l / 10);      // 4. Ziffer
23
   l = l % 10;
24
   ret = ret << 4;
25
26
   ret = ret | l;             // 5. Ziffer
27
28
   return ret;
29
}
30
31
#define TEST
32
#ifdef TEST
33
#include <stdio.h>
34
int main(void)
35
{
36
   long l;
37
38
   printf("Hex     |Dez     |BCD     \r\n");
39
   printf("--------+--------+--------\r\n");
40
   for (l = -8; l < (99999+8); l++)
41
   {
42
      printf("%08lx|%08ld|%08lx\r\n", l, l, l2bcd(l));
43
      if (l == 8) l = 99999-8;
44
   }
45
46
   return 0;
47
}
48
#endif /* TEST */

(1) http://de.wikipedia.org/wiki/BCD-Code

von nawhki (Gast)


Lesenswert?

Danke.

Naja ich weiss wie die Algorithmen sind, aber hab leider keine Zeit z.Z. 
Deswegen brauche ich dringend Hilfe. Ich bedanke mich fuer die Code..


Mfg
nawhki

von eProfi (Gast)


Lesenswert?

Meinst Du gepackte oder ungepackte BCD, also 2 Ziffern in einem Byte?

Zitat Wiki:
"Werden die 4 Bits einer BCD-Zahl jeweils in den niederwertigen Bits 
kodiert und die restlichen 4 Bits mit Nullen aufgefüllt, so spricht man 
von einer ungepackten BCD-Zahl. Werden beide Hälften eines Bytes mit je 
einer BCD-Zahl belegt, so nennt man dies entsprechend eine gepackte 
BCD-Zahl."

Evtl. hilft Dir das weiter:
Beitrag "Re: Ausgabe Binärzahl 8, 16, 24 und 32Bit auf LCD!"

Es gibt weitere Threads mit Lösungen, die ich gerade nicht finde, musst 
Du selbst suchen:
BCD  Ausgabe  ...

von nawhki (Gast)


Lesenswert?

Ich meinte gepackt, und hab eine Loesung gefunden aus der Foren 
Codesammlung..
Vielen Dank nochmal :)

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.