Evidentemente la opción
LED =1 es la más simple y directa, pone el valor 1 en el registro correspondiente y listo...
La última opción
output_high (PIN_B3); BSF 0x3, 0x5 (pasa al banco 1)
BCF 0x6, 0x3 (pone a 0 el TRISB)
BCF 0x3, 0x5 (pasa al banco 0)
BSF 0x6, 0x3 (pone a 1 el PORTB)
En este caso estás trabajando en un modo tal que cada vez que escribes o lees un pin lo configuras como entrada o salida previamente y segun corresponda... Creo que es el modo standard_io, pero si usas el modo fast_io para el puerto en cuestión sospecho que el código de ambas opciones será el mismo: BSF 0x6, 0x3 (pone a 1 el PORTB) en este caso!
La función built-in output_high del CCS depende tambien, en su forma de trabajar, de la directiva #use *_IO. Habría que verificar las combinaciones a ver que sucede.
100% deacuerdo
Sobre la segunda opción, no entiendo lo que hace... pero con todo ese código dudo que convenga usarlo... habría que saber bien que hace, estimo... pero muy de intuición, que hace un direccionamiento indirecto del puerto que tampoco sé en qué o cuáles condiciones puede llegar a ser útil o necesario...
Me parece que la mejor opción es la 3, ya que respeta la configuración de modo del puerto y la opción 1 se puede usar para alguna excepción, por ejemplo:
Quiero usar el puerto B normalmente como un bus bidireccional ==> usar standar_io pero en una rutina de interrupción voy a necesitar usar el puerto B para enviar muchos datos a un periferico, en esa subrutina, el puerto siempre es salida, por lo tanto configurar el tris es redundante y me genera un código 4 veces más extenso!!! entonces ahí usaría el modo 1...
Saludos y Feliz Primavera!!!