integer na 8-bit konverze

O

opozdilec

Guest
Dobrý den všem,
Potřebuji poslat celé číslo jako řetězec 8 bitů na flash paměti.integer bude 24 bit dlouho.Každý, kdo má nějaký návrh na to, jak mohu poslat 24 bit integer ve třech 8 bitových bytů v kódu C?
Díky předem.

 
Předpokládejme, že 24bit integer je uložen v 32bitové proměnné s názvem AA.

unsigned long aa;
unsigned char x, y, z;

x = (unsigned char) (aa / 0x10000) / / MSB 8 bitů
send_to_flash (x);
y = (unsigned char) ((aa% 0x10000) / 0x100), / / střed 8 bitů
send_to_flash (y);
z = (unsigned char) (aa% 0x100) / / LSB 8 bitů
send_to_flash (z);

Existují i další metody, také.Můžete použít posun provozovatel nebo můžete použít unie.Výše uvedená metoda není nejúčinnější.Ale je snadné pochopit.Nejúčinnější metodou je použití unie.

 
unsigned long aa;
unsigned char * tosend = (unsigned char *) &aa;
send_to_flash (tosend [0]);
send_to_flash (tosend [1]);
send_to_flash (tosend [2]);
Poznámka: Musíte zvážit endian problém a pořadí, v jakém odešlete na flash.Tam je další pravděpodobnost:
send_to_flash (tosend [2]);
send_to_flash (tosend [1]);
send_to_flash (tosend [0]);

 
Mějte na paměti, že 8051 a 8086 ukládat v různých formátech endian ..

Unie metoda vlastně dělá totéž.Takže vy musíte držet endian problém v paměti při použití unie stejně.

 

Welcome to EDABoard.com

Sponsor

Back
Top