Variable de 32 bits

#1
Hola:
Para un programa necesitaría declarar una variable como 32 bits (int32), pero luego necesito poder acceder a cada byte de esa variable, no se si me explico bien. Utilizo el CCS.

Por ejemplo declaro una variable: int32 leds;

pero luego poder acceder al primer byte con leds1, al segundo byte con leds2, etc....
¿Alguien me puede dar una pista? Gracias

Yo mismo me respondo, que ya lo he logrado:

int32 leds;
#locate leds=0x50
#byte leds1=0x50
#byte leds2=0x51
#byte leds3=0x52

Era más fácil de lo que pensaba.
Saludos
 
Última edición:
#2
es mas facil con punteros, ademas no te hara falta declarar las variables en una localizacion de memoria. Seria:

int32 leds;

char *leds1, *leds2, *leds3;

leds1=&leds;
leds2=&leds+1;
leds3=&leds+2;

hay mas soluciones con punteros pero bueno
 
#3
Para eso el standard de C tiene la declaración union

// Declaracion de las variables

union { int32 l32 ; struct {int8 g0,g1,g2,g3;} l8 ;} led ;

// Sintaxis

led.l32 = 0x12345678 ;

led.l8.g0 = 0x78 ;
led.l8.g1 = 0x56 ;
led.l8.g2 = 0x34 ;
led.l8.g3 = 0x12 ;


La verdad... es que no se gana. Solamente que se usa la declaracion especifica para estos casos.
 
#4
es mas facil con punteros, ademas no te hara falta declarar las variables en una localizacion de memoria. Seria:

int32 leds;

char *leds1, *leds2, *leds3;

leds1=&leds;
leds2=&leds+1;
leds3=&leds+2;

hay mas soluciones con punteros pero bueno

¿Por qué declaras las variables leds1, leds2... como char?
¿No vale simplemente como int?
Muchas gracias a todos. Siempre se aprende algo

PD: lo estoy intentado simular y no me funciona.
 
Última edición:
#5
es que yo vengo del mikroc y ahi no existen los int8 ni nada asi por eso puse char que en todos los compiladores que he visto valen 8bits.

Quiza no te funciona porque con los punteros para ver su contenido hay que poner un * delante, por ejemplo:

PORTD=*leds1;

si pones PORTD=leds1; estarias poniendo en portd la direccion de memoria de leds1.
 
Arriba