hola AKENAFAB, buenas tardes,
tampoco me funciona
el header tiene esto
#define LCD_LUZ PORTBbits.RB4
typedef union
{
unsigned int variable;
struct
{
unsigned d15:1, d14:1, d13:1, d12:1, d11:1, d10:1, d9:1, d8:1, d7:1, d6:1, d5:1, d4:1, d3:1, d2:1, d1:1, d0:1;
};
} t_int;
t_int dato;
en el XC8 (del man):
Type Size (bits)
unsigned int 16
probé con esto y lo único que funciona es bit por bit de la union
void procesar_comando(void)
{
for ( char i=0; i<16; i++)
{
LCD_LUZ = (bool)((unsigned int)dato.variable & ((unsigned int)1 << i));
PORTBbits.RB3 = 1; __delay_ms( 500 );
PORTBbits.RB3 = 0; __delay_ms( 500 );
}
// #######################
// #### ESTO FUNCIONA ####
// #######################
// LCD_LUZ = dato.d0; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d1; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d2; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d3; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d4; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d5; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d6; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d7; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d8; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d9; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d10; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d11; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d12; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d13; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d14; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
// LCD_LUZ = dato.d15; PORTBbits.RB3 = 1; __delay_ms( 500 ); PORTBbits.RB3 = 0; __delay_ms( 500 );
}