Estoy escribiendo firmware para un PIC16F877A en el ensamblador, y quiero establecer algunas constantes en la parte superior de mi código fuente para indicar qué puerto se usa para qué, de modo que si es necesario puedo cambiar fácilmente todas las entradas / salidas. patillas alrededor cambiando los valores constantes y recompilando.
Me gusta esto:
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 usando. Mi pregunta es, ¿cómo puedo escribir una expresión usando directivas de ensamblador para calcular la máscara de bits?
Utilizando 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 en el poder del operador , podría hacer algo como esto:
movlw (2 ^ O_RED) | (2 ^ O_GREEN) | (2 ^ O_BLUE)
pero ^
en MPASM es un OR exclusivo de Bitwise, no a la potencia de .
¿Puede alguien pensar en otra forma de hacer esto?