mikrocontroller.net

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


Autor: nawhki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
typedef unsigned long bcd_t;

bcd_t l2bcd(long l)
{
   bcd_t ret = 0;

   if (l < 0 || l >= 99999)   // UNDERFLOW oder OVERFLOW
      l = 99999;              // => "Error"

   ret = ret | (l / 10000);   // 1. Ziffer
   l = l % 10000;
   ret = ret << 4;

   ret = ret | (l / 1000);    // 2. Ziffer
   l = l % 1000;
   ret = ret << 4;

   ret = ret | (l / 100);     // 3. Ziffer
   l = l % 100;
   ret = ret << 4;

   ret = ret | (l / 10);      // 4. Ziffer
   l = l % 10;
   ret = ret << 4;

   ret = ret | l;             // 5. Ziffer

   return ret;
}

#define TEST
#ifdef TEST
#include <stdio.h>
int main(void)
{
   long l;

   printf("Hex     |Dez     |BCD     \r\n");
   printf("--------+--------+--------\r\n");
   for (l = -8; l < (99999+8); l++)
   {
      printf("%08lx|%08ld|%08lx\r\n", l, l, l2bcd(l));
      if (l == 8) l = 99999-8;
   }

   return 0;
}
#endif /* TEST */


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

Autor: nawhki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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  ...

Autor: nawhki (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.