BIN 2 BCD

A

Alexander Prad

Guest
Nazdar!
Každý, kto videl v internetových c-program pre konverziu 24-bit BIN do BCD formáte?
Ďakujeme vám.
Alexander.

 
Hi Alexander, myslím, že Convertino 24-bitové binárne číslo v BCD formáte je podobný 8bit BIN2BCD.

char i; / / counter
char Binárne [3] / / binárne číslo
char BCD [3], / / BCD číslo
for (i = 0; i <3; i )
(
BCD = BIN2NCD (binárne );
)

statické BIN2BCD bajt (byte BIN)
(
return ((((BIN/10) <<4) & 0xF0) | ((BIN% 10) & 0x0F));
)

 
Dobrý deň, Kiki!
To je niečo v neporiadku s vaším programom.Pracuje uncorrect (možno aj niečo zle, ja neviem).
Mám program konverzia 17 bitov na binárne 5 digit BCD (až 99 999).
Tu je:

int tenk, Ty, Hund, desiatky, v partii;
unsigned int num [3];

void BIN2DEC (void)
(
/ / Pracuje na globálnych premenných:
/ / Set num [0] - [2] (lo-hi) pred volaním
/ / Vracia sa tenk ... Ones nastavenia 0-9

unsigned int A0, A1, A2, A3, A4;
unsigned int t1, t2, t3, / / scratchpad premenných

/ / Izolovať 4 bity křupky
/ / Na účely tejto rutiny a4 môže byť iba 0 alebo 1
a4 = num [2];
a3 = num [1] / 16;
a2 = num [1] & 0x0f;
a1 = num [0] / 16;
a0 = num [0] & 0x0f;

/ / Výpočet na desatinné miesta (b_i sú vyjadrené tu
/ / As tenk ... Ones, rovnako ako v origináli)
/ / Všetky sú negatívne, s výnimkou tenk
t1 = 4 * a4;
Ty = A0 - t1 - 20;
t2 = 2 * A1;
Desiatky = t1 t2 - 198;
t3 = 2 * a2;
Hund = A3 t3 - 140;
t3 = t3 * 2; / / teraz = 4 * a2
t2 = t2 * 2; / / teraz = 4 * a1
Ty = Ones - t3 - t2;
t3 = t3 a2 a2; / / teraz = 6 * a2
Desiatky desiatky = t3; / / urobiť Desiatky
t1 = t1 A4, / / teraz = 5 * a4
Hund Hund = t1;
t3 = 4 * a3;
Tie = t1 t3 - 144; / / urobil jsi
Ty = Ones - T3; / / urobiť Ones
Tenk = t1 A4 16 / / tenk urobiť

/ / "Normalizovať" číslicedo (
Tie, = 10;
Desiatky -= 1;)
while (Ones <0);

do (
Desiatky = 10;
Hund -= 1;)
while (desiatky <0);

do (
Hund = 10;
Tie -= 1;)
while (Hund <0);

do (
Tie = 10;
Tenk -= 1;)
while (Ty <0);

)

Je dobrej práce, ale aj potrebné viac číslic (7 bude stačiť).

Alexander.

 
Jednoduchšie riešenie:

unsigned char bcdNumber [numberofDigits];
void binaryToBCD (unsigned long binaryNumber) (
unsigned char index;
for (index = 0; i <numberOfDigits, index ) (
if (binaryNumber! = 0) (
bcdNumber [index] = binaryNumber% 10;
binaryNumber = binaryNumber/10;
)
)
)

 
nazdarTu je pic assembleri bcd na binárne konverzie nádeje pomôcť plnej veľa ďalších dobrých tipov aj v archíve bočné
Ospravedlňujeme sa, ale musíte prihlásiť do zobrazenie túto prílohu

 
Epegic Napísal:

Jednoduchšie riešenie:unsigned char bcdNumber [numberofDigits];

void binaryToBCD (unsigned long binaryNumber) (

unsigned char index;

for (index = 0; i <numberOfDigits, index ) (

if (binaryNumber! = 0) (

bcdNumber [index] = binaryNumber% 10;

binaryNumber = binaryNumber/10;

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top