Dva 8-bitové znaky do 16-bitové číslo

B

brucelee2

Guest
Ahoj,

Mám HMI, který pošle dva 8-bitové znaky, které představují 16-bit dotykový displej koordinovat.
Tak v příkladu, HMI posílá:
0x03 pak 0X0E (oba samostatné), které představují souřadnice 030E (782).

Jak mohu spojit dva do jedné proměnné reprezentovat číslo 782?Přemýšlel jsem o vytvoření 'int' a přesun každý do něj nějaké how.

IE.

char první = 0x03;
char vteřinu = 0x0E;
int číslo;

číslo = první;
číslo = číslo <<8;
--- Teď im přilepená ---Nějaké nápady?
Díky moc.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
C má bitový OR operace pro podobné účely
Kód:

číslo = (int) první <<8 | sekundu;
 
Aha ok.Im pomocí MikroC, tak špatně se do manuálu, jestli tam je taková funkce v kompilátoru.

být zavázán zas

 
lepší, když prohlásila všechny nepodepsané (unsigned char a unsigned int), na data přiznání a údajů casting ...tak

Kód:unsigned char první = 0x03;

unsigned char vteřinu = 0x0E;

unsigned int číslo;...číslo = (unsigned int), první <<8 | sekundu;

 
Alternativně můžete použít unie - který nevyžaduje žádné kódování z vaší strany.

nebo makro:
Kód:

# Define WORD (MSB, LSB) (((MSB) <<8) | (LSB))
 
Citace:

budete chtít použít více závorkách, aby se zabránilo '|' operátor musí být provedeny před Levý Shift.
 
Jak budete používat mikroC

unsigned int Myint;

hi (Myint) = 0x03;
lo (Myint) = 0x0E;

Jeho mnohem jednodušší tak.

honza

 

Welcome to EDABoard.com

Sponsor

Back
Top