Lsb - s - MSB

W

woody28

Guest
Hi All

Jaz delam na Serijsko-paralelna pretvornik za REC-80 protokolom.
Bit da v prejetih signal LSB -> MSB in želim pretvarjati, da
MSB -> LSB format.
Torej kako lahko naredim to v minimalnih

<img src="http://www.edaboard.com/images/smiles/icon_question.gif" alt="Vprašanje" border="0" />

?(Ker je moj mikro 1k Flash) navedite najboljša rešitev.

Primer:
11000101 ---> 10100011

S spoštovanjem

 
Kateri MCU uporabljate?Morda boste našli rešitev v MCUs ukazni niz (ali uporabniški priročnik) s preverjanjem podprl opcodes za izmensko / vrtenje (ki se lahko vstavi v C / ASM kode)
Upam, da je pomagalo,
Maddin

 
To je odvisno od navodil, nastavite vaše uc.Če ima naslednje ukaze:
- Premik v levo
- Premik desno
- Pogojni skok (če je negativen)

potem bi bil najboljši pristop, da bi continious levi shift začetnega operandu z Pogojni skok, če je rezultat premaknilo operanda je bil negativen.Če je bil negativen (to pomeni, da je trenutna MSB = 1), boste morali dodati 128 Rezultati operanda in premik, da je pravilno, drugače samo premik je rigth brez dodajanja.Po 8 ciklih tega algoritem boste dobili končni rezultat.Za večino uc ta algoritem se lahko izvede v manj kot 10 navodila.

Ace-X.

 
nepotpisani char povratne (nepodpisanih char normalno)
(
nepotpisani char obrne

če (normalni
in 128)
stornirajo | = 1;

if (normalna & 64)
stornirajo | = 2;itd itd itd

vrnitev (stornirajo);
)

V večini Micro to zbira na Bit test in Bit določi, upanje to pomaga

s spoštovanjem

 
A bit bolj splošne funkcije, ampak za močnejše uc.

typedef nepotpisani dolgo T_u_int32; / * 32-bitno nepotpisani * /

T_u_int32 reverse_bits_test (T_u_int32 inval, int bitov)
(
if (bitov> 0)
(
bitov -;
vrnitev reverse_bits_test (inval>> 1, bitov) | ((inval & 1) <<bitov);
)
vrnitev 0;
)

Usage:

printf ( "% 04X \ n", reverse_bits_test (0x2453, 16));

Tom

 
Lahko poskusite to:

# vključujejo <math.h>

nepotpisani int i, številka, RevNumber;

i = 1;

RevNumber = (Number & 1) * 128;

medtem ko (i <

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Hladen" border="0" />(
RevNumber = (Število & POW (2, i)) * (128/pow (2, i));
i ;
)

 
Lahko poskusite to:

# vključujejo <math.h>

nepotpisani int i, številka, RevNumber;

i = 1;

RevNumber = (Number & 1) * 128;

medtem ko (i <8) / / manjše od 8
(
RevNumber = (Število & POW (2, i)) * (128/pow (2, i));
i ;
)

 
za MCS51 poglej http://www.mcu.cz/modules/news/article.php?storyid=127

 
Toliko zahvaljujoč moji najboljši prijatelji.

<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />zelo uporabno rešitev.

 

Welcome to EDABoard.com

Sponsor

Back
Top