Hola, maunix tienes razón las instrucciones bsf, btfss, etc. toman la dirección de la variable y no su contenido. Bueno entonces creo que lo mejor sería hacerlo con una macro como sugería manuelroin24.
Mady, aunque maunix decia que ésta se copia una y otra vez y te sugeria que hagas las rutinas que necesites para acceder a los puertos para no complicarte tanto, ya que recien empezabas con los PICs, es precisamente esto lo que hace la macro, se copia el codigo cuantas veces lo llames (es decir la cantidad de rutinas que necesites y con los valores del puerto al que vas acceder) pero lo hace de forma automatica y claro con ciertas ventajas, que nos otorga ésta poderosa herramienta del assembler, con respecto a las subrutinas.
Lo que he hecho es trasladar todo lo anterior a una macro y quedaría así:
#define PUERTOA 0x05
#define PUERTOB 0x06 ; segun los puertos que disponga tu PIC y a los que vayas a acceder
..
..
#define PUERTOE 0x09
mi_rutina macro puerto
bcf puerto, 1 ;como se asigno el puerto A y pin 1 entonces: pone en bajo RA1
bsf puerto, 3 ;pone en alto RA3
btfsc puerto,5 ;testea el estado de RA5
...
...
endm
; en la rutina principal invocamos a la macro
main
mi_rutina PUERTOA, 1 ;asignamos el puerto A y el pin 1
...
...
goto main
Y de la misma manera para especificar que PIN vamos a acceder podemos crear la macro así:
#define PUERTOA 0x05
....
#define PIN0 0x00
#define PIN1 0x01
#define PIN2 0x02
#define PIN3 0x03
#define PIN4 0x04
#define PIN5 0x05
#define PIN6 0x06
#define PIN7 0x07
mi_rutina macro puerto, pin
bcf puerto, pin ;pone en bajo el pin 4 del puerto B (segun lo asignado en la invocacion de la macro)
endm
main
mi_rutina PUERTOB, PIN4 ;invocamos a la macro
...
goto main
Otra forma tb sería con direccionamiento indirecto, pero para hacer que se pueda elegir tb el pin creo que se complicaria mas.
espero te sirva,
Saludos