TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: quitpic en 13 de Enero de 2010, 08:38:48
-
Hola a todos los usuarios de este estupendo foro, tengo la siguiente duda y agradezco las sugerencias que me puedan ayudar a resolverla:
P18f2480.h define a LATA de la siguiente manera:
extern volatile near unsigned char LATA;
extern volatile near struct {
unsigned LATA0:1;
unsigned LATA1:1;
unsigned LATA2:1;
unsigned LATA3:1;
unsigned LATA4:1;
unsigned LATA5:1;
unsigned LATA6:1;
unsigned LATA7:1;
} LATAbits;
Esto permite usar en C a LATA de 2 maneras distintas, como un registro y como bits sueltos,
LATA=50;
LATAbits.LATA4=1;
Si quiero hacer lo mismo con una variable que llamo AuxK:
unsigned char AuxK;
struct {
unsigned det_PlacPS:1;
unsigned c_Inferior:1;
unsigned c_Superior:1;
unsigned engrase:1;
unsigned rev_Subir:1;
unsigned rev_Bajar:1;
unsigned sobrecarga:1;
unsigned bascula:1;
}AuxKbits;
Al compilar AuxK ensambla en la direccion 204 y AuxKbits en la 205, ¡¡¡son 2 variables distintas!!!.
¿Cuál es la solucion para que AuxK funcione igual a LATA?
-
Disculpar el desliz, con las prisas me he olvidado de datos importantes, la consulta es para C18 y el micro es el 18F2480.
Un saludo,
-
Se puede hacer así:
union{
unsigned char Byte;
struct{
unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
};
}Variable;
Y trabajar así:
Variable.Byte=0;
Variable.bit5=1;
Saludos!
-
Gracias suky,
Ahora funciona perfectamente, creía haberlo probado de todas maneras pero evidentemente me faltaba esta!!
Un saludo,