Estoy escribiendo un firmware para un PIC16F877A en ensamblador, y quiero establecer algunas constantes en la parte superior de mi código fuente para indicar qué puerto se utiliza para qué, de modo que si es necesario puedo cambiar fácilmente todos los pines de E/S cambiando los valores constantes y recompilando.
Así:
O_LEDS EQU PORTA
CONSTANT O_RED = RA1
CONSTANT O_GREEN = RA2
CONSTANT O_BLUE = RA3
En mi código, necesito una máscara de bits para representar los puertos que estoy utilizando. Mi pregunta es, ¿cómo puedo escribir una expresión usando directivas de ensamblador para calcular la máscara de bits?
Usando mi ejemplo anterior:
O_RED = 1
O_GREEN = 2
O_BLUE = 3
y la máscara de bits que quiero es
movlw b'00001110'
Si hubiera un al poder de operador, podría hacer algo así:
movlw (2 ^ O_RED) | (2 ^ O_GREEN) | (2 ^ O_BLUE)
pero ^
en MPASM es un OR exclusivo a nivel de bits, no al poder de .
¿Se le ocurre a alguien otra forma de hacerlo?