#USE STANDAR_IO:
Al colocar esta directiva en el programa el compilador cambiara el registro TRIS correspondiente antes de realizar alguna operacion con los puertos GPIO. Este metodo es para principiantes, pues desliga al programador el tener que conocer de la configuración de todos los puertos y lo unico que tiene que hacer es ejecutar la acción que desea. El inconveniente de este metodo es que el compilador ejecuta la instrucción set_tris cada vez que hay que ejecutar una operación de salida o entrada sin importar el estado anterior del puerto, lo que resulta en un código no optimizado en general mas largo de lo necesario.
#USE FAST_IO:
Esta directiva especifica que el compilador no ejecuta ningun cambio de dirección en los puertos y da por entendido que la persona que programa asigna y se asegura el valor que corresponde a los registros TRIS antes de realizar una operación IO. Esta asignacion de las direcciones debe hacerse ejecutando la instrucción set_tris_A(), set_tris_B(), etc antes de realizar alguna acción con el puerto en cuestión.
Este modo de programar requiere un conocimiento completo de la ejecución del programa y de todas las posibilidades que pueden sucederse, lo cual puede llegar a ser un problema para alguien que recién comienza. La clara ventaja de este metodo es que no hay más direccionamiento de puertos que los necesarios (Si el programador ha escrito el código con criterio) y por lo tanto se ahorra mas memoria y se reduce el tiempo de ejecución comparado con el modo STANDAR_IO.
#USE FIXED_IO:
Este metodo permite especificar la direcciones de los puertos mediante una directiva de preprocesador, por lo que estas serán fijas a lo largo de todo el programa. Aunque puede utilizarse la instrucción set_tris para cambiar la función de los pines, el compilador ejecuta automaticamente el redireccionamiento de los puertos justo antes de la operaciones de salida o entrada (basandose en los valores especificados en la directiva) haciendo que cualquier modificación durante el resto del código quede anulada.
Este método permite ahorrar algo de RAM respecto al metodo STANDAR_IO, pero de todas formas el direccionamiento de los puertos no es el mas optimizado pues se sigue haciendo automaticamente antes de cada operación de IO.
Espero haber sido claro. Saludos.