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