Mady, creo que estas errando el camino. Según entendí quieres una función genérica a la cual le pases como parámetro el número de puerto y pin por el cual sacar el dato.
Tu lo que has hecho, es sencillamente definir constantes que luego 'dejas de definir', con lo cual no has hecho una función, simplemente dijiste al ensamblador que una cadena de texto antes valia PUERTAB,0 y luego PUERTAB,1. Eso no es algo que se interpreta/modifica durante el tiempo de ejecución, sino que se modifica durante el ensamblado de tu código, lo cual quiere decir que quedará "fijo" y no cambiará el puerto de salida a medida que tu lo desees sino que será algo fijo.
Déjame decirte que es una de las preguntas muy frecuentes que se hacen y no es una tarea simple. Debes de alguna forma, indicar que haga una elección de puerto manualmente, ya que no se puede pasar el puerto en sí como parámetro.
Lo que te sugirió Nichita es lo que se hace gralmente, se pasa como parámero un número (0,1,2..) que corresponderá a PORTA, PORTB, PORTC.. y luego dentro de la subrutina se elige el número de puerto. Paso a continuar se elige el número de pin.
Podrias intentar crear una MACRO para atacar de manera más fácil el cambio de puertos
Manuel, esta opción si bien es cómoda, en realidad copia el código una y otra vez y no es lo que , según entiendo, es lo que quiere Mady.