Como no queres estar preguntando con un if continuamente entonces te queda esta solucion:
Primero implementar un pin para "sincronizar" (cuando tomar las entradas).
El unico pin que se activa por flanco es RB0, asi que deberia ser ese.
Usar FAST_IO asi no te cambia el estado del puerto que uses para leer los datos ( al usar input o output ).
Setear los tris con set_tris_x , donde x es el puerto, sea a o b ( ej. set_tris_a(0x15) ) asi lo seleccionas como entrada o salida
Activar la interrupcion por RB0, creo que se llama EXT.
En la interrupcion leer los datos con input_a input_b, segun el puerto que desees usar.
Guardarlo en donde mas desees ( variable que te guste, array, etc).
Fin.
Luego en el programa principal, leeras esa variable.