vamos a trabajar con la siguiente trama....
$GPRMC,041014.114,A,4026.7332,N,00336.8315,W,18.59,227.90,290403,,*2E
dados mis pocos conocimientos de c para pic, tendrás que ir desarrollando el código y yo revisando la filosofía de funcionamiento...

Yo trabajaría del siguiente modo....
Primero, leería el puerto serie caracter a caracter...
lo primero es localizar el $
después, leería los siguientes 5 caracteres, ylos compararía con GRPMC...
una ves que ya tenemos localizada la trama gprmc, empezamos a desglosarla...
hay dos modos, el primero sería ir descartando caracteres de la trama, dado que las posiciones son fijas... o la segunda, sería ir leyendo caracteres hasta encontrar las comas....
La segunda opción es la que yo usé, dado que no me fío...

de este modo, leeríamos los datos de la trama hasta la segunda coma, y el siguiente caracter sería la "A"... que en cierto modo, nos será muy importante para saber si la trama es valida.....
Creo recordar que la "A" era que la trama es válida, por lo que si el caracter es distinto, ya no seguiremos interpretando, porque la trama no sería válida.
bueno, ya hemos llegado al punto donde detectamos que la trama es válida.... si es así seguimos leyendo... El siguiente caracter, es una "," y en el siguiente, ya empezaríamos con la detección de la latitud....
llegado a este punto, creo que lo mas util, sería almacenar la latitud en un array de 11 caracteres e ir leyendo la trama hasta encontrar la siguiente ","
en la primera posición del array, cabe la posibilidad de que la latitud sea negativa, por lo que el primer caracter sería "-"
-4026.7332,N
para este caso quedaría ordenado el array del siguiente modo
posición > 0 1 2 3 4 5 6 7 8 9 10
trama > - 4 0 2 6 . 7 3 3 2 N
en caso de que la latutud sea positiva, quedaría del siguiente modo
posición > 0 1 2 3 4 5 6 7 8 9 10
trama > 4 0 2 6 . 7 3 3 2 N
bueno, de momento no te lio mas....
espero haberte ayudado algo...
Ves preparando algo de código que se adapte a la idea que te doy, y ya vamos desarrollando y buscando errores....