MSP430 C-Source Code zur BCD Konvertierung

Gast #551006
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
Persönliche Seite #551100
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
Gast #551270
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  ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren