Y
CCS tiene tambien una característica de "
alto" nivel que puede volver loco a cualquiera si no la tiene en cuenta.
CCS admite unas directivas de compilación que le dicen al compilador cómo debe tratar los
TRIS de puerto (configuración bit a bit de cada pin de un puerto para indicar si es de entrada, de salida o flotante)
Estas directivas son:
- USE FAST_IO
- USE FIXED_IO
- USE_STANDARD_IO
Si declaramos un puerto como
#USE FAST_IO(X) es el usuario quien debe asegurarse de que el sentido del pin es el correcto y para ello debe colocar antes de leer o escribir en el puerto correspondiente el
SET_TRIS_X(0b00000000) para indicar el uso de entrada o salida de cada bit del puerto.
Si declaramos un puerto como
#USE FIXED_IO(X_OUTPUTS=1,3,5,7) el compilador genera e inserta en tu código los
SET_TRIS_X(0b10101010) correspondientes a dicha declaración independiente del uso que tus instruciones hagan después de dichos pines. Si has declarado con
FIXED_IO de salida el pin 1 del puerto X y después lo lees el compilador no hará nada y estarás leyendo un puerto de salida.
Si por último declaramos el puerto como
#USE STANDARD_IO(X) el compilador generará automáticamente e insertará antes de cualquier operación de entrada o salida de cualquier pin del puerto
X los
SET_TRIS_X() correspondientes a la instrución que le sigue. Esto hace que los TRIS siempre estén de acuerdo con la instrucción a ejecutar. Si colocamos en nuestro código un
OUTPUT_HIGH(PIN_B0) y el puerto
B está declarado como
#USE STANDARD_IO(B) justo antes del output habrá un
TRIS declarando el
PIN_B0 como salida, si acontinuación ponemos un
INPUT_(PIN_B0) el compilador pondrá ahora un
TRIS para declarar
PIN_B0 como entrada.
Este
#USE STANDARD_IO(X) es el modo
POR DEFECTO de todos los puertos en
CCS si no se declara lo contrario y por ello si no usamos cualquiera de los otros dos tipos de use de los puertos
LOS TRIS QUE NOSOTROS PONGAMOS NO VALEN PARA NADA porque el
CCS LOS REDECLARA A PARECER EN FUNCION DE LAS INSTRUCCIONES DE NUESTRO CÓDIGO SEAN DE ENTRADA O DE SALIDA.Un saludo a todos.