Esta es más una cuestión de estilo que cualquier otra cosa y podría parecerle algo malo a algunos. Si tengo un pin de puerto serie en RC4, digamos, puedo hacer algunas definiciones para ayudar:
#define TXSER_PIN LATC, RC4
Lo que me doy cuenta entonces es que puedes hacer esto:
banksel LATC
bsf TXSER_PIN
banksel ANSELC
bcf TXSER_PIN
banksel TRISC
bcf TXSER_PIN
banksel INLVLC
bsf TXSER_PIN
Estoy usando la misma definición hasta el final aunque, en teoría, supongo que es incorrecto hacerlo. El punto es que puedo cambiar LATC, RC4
a LATB, RB7
y (después de cambiar también APFCON0 para mover la función de TX) eso es todo lo que cambia.
En este PIC que estoy usando, TRISA = 0x8C
y LATA = 0x10C
. Pero solo BANKSEL hace que sean distinguibles: TRISA, LATA, ANSELA, WPUA son en realidad todos el mismo desplazamiento 0x0C desde el inicio del banco y, al compilar la instrucción implícitamente, un "operando & 0xFF" puede usarse. indistintamente.
(De hecho, eso puede ser bastante molesto si usas pares de operandos incorrectamente. Algo como bsf EEADRL, RC5
no marcará un error a pesar de que el compilador podría hacerlo fácilmente. Escribí algunos awk para detectar esto ...)
¿Puedo tener problemas al hacer esto o es simplemente una mala forma? Claro que hace menos #defines aunque.