Saludos escribo para solicitar alguna ayuda, estoy intentando filtrar una sentencia en protocolo nmea recibida de un gps a un PIC 16F877A y mostrarla en la PC, ya logre recebir las sentencias y mostrarlas en pantalla ahora necesito filtrar y guardar solo la sentencia RMC para no ocupar tanto espacio en la memoria RAM (adjunto imagen de lo que recibo en pantalla)
las sentencia que recibo son de este tipo: GGA,152812,1017.0032,N,06734.0493,W,2,08,224632,1017.0419,N,06733.9866,W,0,00
esta es la subrutina para filtrar
REC_NMEA
btfss PIR1,RCIF ; chequea el bufer recepcion, 1 si esta lleno, 0 si esta vacio
goto $-1
movfw RCREG ; hasta aqui el programa esta recibiendo perfectamente (se estan usando las interrupciones)
subwf nma1, ; chequeo si coincide con nma1 (R) sino salgo de la subrutina
btfss STATUS, Z ; chequeo si son iguales, sino sale de la subrutina
return
btfss PIR1,RCIF ; chequea el bufer recepcion, 1 si esta lleno, 0 si esta vacio
goto $-1
movfw RCREG
subwf nma2,0 ; chequeo si coincide con nma2 (M) sino salgo de la subrutina
btfss STATUS, Z
return
btfss PIR1,RCIF ; chequea el bufer recepcion, 1 si esta lleno, 0 si esta vacio
goto $-1
movfw RCREG ; hasta aqui el programa esta recibiendo perfectamente
subwf nma3,0 ; chequeo si coincide con nma3 (C) sino salgo de la subrutina
btfss STATUS, Z
return
btfss PIR1,RCIF
goto $-1
decfsz skip
goto $-4
incf FSR
btfss PIR1,RCIF ; si se logra hacer el filtro, entonces guardo en la memoria Ram los datos de esa sencia
goto $-1
movwf INDF
decfsz count,1
goto $-6
call SEND_NMEA
return
el problema es que no me hace el filtro, al parecer nunca coinciden lo que se esta recibiendo con las referencias,
si alguno tiene experiencia en el tema y me puede ayudar quizás algún detalle en la subrutina, estaré muy agradecido estoy pendiente a sus comentarios.