Actualmente estoy usando un microcontrolador PIC con un 4094 IC pero cuando QUIERO para cambiar los datos a Q6 o Q7, los cambia a Q0 & Q1 y cuando lo cambio a Q0 & Q1 enciende Q6 y amp; Q7. Entonces, no tengo problemas para operar la salida que quiero, pero ¿por qué sucede esto?
Debajo están los códigos:
void ShiftData(unsigned char Data)
{
unsigned char i;
// OUTEN=1;
LED_A = 0; //STROBE = 0;
LED_C = 0; //DISPCLK = 0;
LED_B = 0; //DISPDATA = 0;
for(i = 0;i < 8;i++)
{
if(Data & 0x01)
LED_B = 1; //DISPDATA = 1;
else
LED_B = 0; //DISPDATA = 0;
LED_C = 1; //DISPCLK = 1;
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
LED_C = 0; //DISPCLK = 0;
Data = Data >> 1;
}
LED_A = 1; //STROBE = 1;
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
LED_A = 0; //STROBE = 0;
// OUTEN=0;
}
Lo que hago es:
Reg_Data = 0x00;
Reg_Data |= (1 << 1);
ShiftData(Reg_Data);
Esto debería hacer que Q1 sea alto pero que Q6 sea alto.
Alternativamente:
Reg_Data = 0x00;
Reg_Data |= (1 << 0);
ShiftData(Reg_Data);
Esta acción cambia Q0 en lugar de Q7.
¡La ayuda sería muy apreciada!
Enlace a 4094 I.C: enlace