Estoy siguiendo un tutorial sobre la programación de PIC serie 12F en ensamblador.
Tengo una pregunta relacionada con los operadores bitwise específicamente el < < operador de cambio a la izquierda.
Vamos a usar un ejemplo, el PIC que estoy usando es un 12F509, así que si quisiera establecer GP1 y GP0 como salidas y el resto de pines de E / S como entradas, normalmente lo haría así.
movlw b'111100' ; Set GP1 and GP0 as outputs
tris GPIO
Si quisiera usar un operador bit a bit para lograr lo mismo, creo que podría usar < < desplazamiento a la izquierda como este.
movlw 0<<1 ; Shift 0 left once to set GP1 and GP0 as outputs
tris GPIO
Después de esta operación, lo tomo, los últimos 2 bits serían 00. Desde < < el desplazamiento a la izquierda desplaza todos los bits a la izquierda, descarta el bit de la izquierda y establece el bit a la derecha a 0.
Este es mi entendimiento de cómo funciona el operador de cambio de bit a la izquierda. Esperemos que sea correcto.
Ahora en el tutorial se introdujo este bit de código, había una explicación de lo que hace, pero no cómo lo hace.
movlw ~(1<<1) ; set GP1 as an output
tris GPIO
Voy a probar lo que hace este código. Avísame si lo entendí bien. Primero se desplaza un 1 binario a la izquierda una vez a la posición GP1, lo que deja un 0 en la posición GP0.
Entonces, cuando se complete la operación entre paréntesis, el valor se vería así 000010.
¿Entonces ~ está invirtiendo el 1 en la posición GP1 a 0 y el 0 en todas las otras posiciones a 1? ¿Dejando el valor establecido en 111101 (GP1 como salida)?
Gracias de antemano.