//**************************************************************
// Aquí se agrupa los bits concerniente a las columnas 1-4 junto
// con RB[7-4] en un solo registro para manejarlo a posteriori
// iPuerto_compuesto = [RB7,RB6,RB5,RB4,columna3,columna2,columna1,columna0]
//**************************************************************
void Configurar_iPuerto_compuesto(void){
iPuerto_compuesto=0;
iPuerto_compuesto = input_b() & iLos_Cuatro_MSB_PORTB;
iPuerto_compuesto |= (input_state(iColumna3) << 3);
iPuerto_compuesto |= (input_state(iColumna2) << 2);
iPuerto_compuesto |= (input_state(iColumna1) << 1);
iPuerto_compuesto |= input_state(iColumna0);
}¿Y donde se supone que se guarda el resultado?
void main(){
int cuenta;
long valor1=0b1100101110001010;
long valor2=0;
for(cuenta=15;cuenta<=15;cuenta--){
if(bit_test(valor1,cuenta))bit_set(valor2,15-cuenta);
else bit_clear(valor2,15-cuenta);
}
}
yo lo hago asi...
En la propia variable que se le pasa a la función shift
int16 dato1 = 0b0011111111111111;
dato = (dato1 & 0b00000011111111);void main(){
int cuenta;
long valor1=0b1100101110001010;
long valor2=0;
for(cuenta=15;cuenta<=15;cuenta--){
if(bit_test(valor1,cuenta))bit_set(valor2,15-cuenta);
else bit_clear(valor2,15-cuenta);
}
}
yo lo hago asi...
Gracias , esto si me funciono.
aa vale, yo lo veía desde el punto de vista de puertas lógica, de que cuando multiplicabas dos números binarios el resultado que daba es de una puerta AND, por eso puse los valores de una AND en mensajes anteriores, no lo había visto como una formula en un compilador.
¿pero eso funcionará?, es que los datos no son fijos si no que cambian, date cuenta que un and es.
AND
00 | 0
01 | 0
10 | 0
11 | 1
con lo cual si son 1 si me los pillara pero si son 0 los desechara
OR
00 | 0
01 | 1
10 | 1
11 | 1
estas técnicas las he utilizado para hacer que en un mismo puerto tenga patillas de entrada y patillas de salida.
pero si dices que funciona....estudiaré el tema.
gracias