Operacion lógica

#1
He estado mirando y como no encuentro como hacerlo ni soy un experto queria preguntares si puedo simplificar esta operación:

PORTB = (PORTB & 0b11110000) | (0b00001010);

Si podeis explicar como se hace mejor, gracias :)
 
#2
PORTB & 0b11110000 es una operacion AND, y sabiendo que el resultado solo es 1 cuando ambas entradas son 1 entonces lo que hace es eliminar todos los bits bajos del puerto b...

Posteriormente hace una operacion OR con 0b00001010 y como sabias que el resultado anterior era "bbbb0000" entonces ahora tendras "bbbb1010", donde b es el estado inicial del puerto b

Asi que la operacion lo unico que hace es escribir 1010 en los bits bajos del puerto B, pero como todas las instrucciones del PIC (que supongo que es el que usas) siempre escriben 8 bits, no veo manera de simplificarlo, ademas de solo le toma 4 ciclos de reloj hacer todo el proceso...
 
Arriba