Hello.
I'm trying to read time from the GPS module "Neo-6"
I asked AI to generate the code and here it is (with hardware config and DEFINEs by me):

Code:
;----[16F886 Hardware Configuration]--------------------------------------------
#CONFIG
cfg1 = _INTRC_OSC_NOCLKOUT    ; INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
cfg1&= _WDT_ON                ; WDT enabled
cfg1&= _PWRTE_OFF             ; PWRT disabled
cfg1&= _MCLRE_OFF             ; RE3/MCLR pin function is digital input, MCLR internally tied to VDD
cfg1&= _CP_OFF                ; Program memory code protection is disabled
cfg1&= _CPD_OFF               ; Data memory code protection is disabled
cfg1&= _BOR_OFF               ; BOR disabled
cfg1&= _IESO_ON               ; Internal/External Switchover mode is enabled
cfg1&= _FCMEN_ON              ; Fail-Safe Clock Monitor is enabled
cfg1&= _LVP_OFF               ; RB3 pin has digital I/O, HV on MCLR must be used for programming
cfg1&= _DEBUG_OFF             ; In-Circuit Debugger disabled, RB6/ICSPCLK and RB7/ICSPDAT are general purpose I/O pins
  __CONFIG _CONFIG1, cfg1


cfg2 = _BOR40V                ; Brown-out Reset set to 4.0V
cfg2&= _WRT_OFF               ; Write protection off
  __CONFIG _CONFIG2, cfg2


#ENDCONFIG


TRISA=%00000001  'SET A TO OUTPUT   1=input
TRISC=%00001000   'set C3 for gps
TRISB=%00011000   'set PortB to output
ANSELH=%00000000   ' ADC OFF B
ANSEL=%000000000 'configure PortA as digital except first 2
ADCON1=%10000000  'adc justify
OSCCON=%01110101  'SET FREQUENCY TO 8MHZ
WPUB=%00000000    'turn off Pullups
CM1CON0=0         'DISABLE COMPARATORS
CM2CON0=0         'SAME HERE
'CCP1CON=%01000000 ' configure pwm
'PSTRCON=%00010110 'disable C pwm


DEFINE OSC 8   
DEFINE ADC_BITS 12
DEFINE ADC_CLOCK 5
DEFINE ADC_SAMPLEUS 5




'aska:
serout2 portc.5,84,[" test-"," ",10,13]
'pause 100
'goto aska


gps_data VAR BYTE[80]  ' Buffer to store GPS data
gps_char VAR BYTE      ' Character received from GPS
time_data VAR BYTE[6]  ' Array to store the extracted time
i VAR BYTE             ' Loop variable
start_found VAR BIT    ' Flag to indicate start of time data


' Define the serial pins
GPS_RX var PORTC.2     ' RX pin for GPS (Adjust according to your setup)
GPS_TX var PORTC.5     ' TX pin for GPS (Adjust according to your setup)


' Initialize variables
start_found = 0
i = 0


main:
    ' Wait for data from GPS
    SERIN2 GPS_RX, 84, [gps_char]  ' 9600 baud rate with N, 8, 1 settings (84 represents the baud rate)
    serout2 GPS_TX, 84, [gps_char,","] 'also added by me for debugging


    ' Store data in buffer
    gps_data[i] = gps_char
    i = i + 1


    ' Check if we have a complete line of data
    IF gps_char = 10 THEN
        ' Look for the $GPRMC sentence
        IF (gps_data[1] = "G") AND (gps_data[2] = "P") AND (gps_data[3] = "R") AND (gps_data[4] = "M") AND (gps_data[5] = "C") THEN
            ' Extract time from the sentence
            start_found = 1
            FOR i = 7 TO 12
                time_data[i-7] = gps_data[i]
            NEXT i
        ENDIF


        ' Reset buffer
        i = 0
    ENDIF
    'SEROUT2 GPS_TX, 84, ["Waiting...",10,13]    'added by myself for testing purposes
    ' Display time data
    IF start_found = 1 THEN
        SEROUT2 GPS_TX, 84, ["Time: ", time_data[0], time_data[1], ":", time_data[2], time_data[3], ":", time_data[4], time_data[5], 13, 10]
        start_found = 0
    ENDIF


    GOTO main
It does not work, but I added this: serout2 GPS_TX, 84, [gps_char,","]
and it outputs series of chars and digits, and these digits do change, here's sample

,G,M,1,1,.,4,,,,,,,,,5,,,,*,
,N,A,8,3,9,,,,,4,
,$,G,,,0,2,7,,,,,0,,,,,,,6,
,P,A,,,,,,,,,


,P,A,,,,,,,,,,G,M,1,9,.,4,,,,,,,,,5,,,,*,
,N,A,8,4,9,,,,,4,
,$,G,,,2,0,7,,,,,0,,,,,,,6,

So what I'm doing wrong?
I tried to set GPS port speed to 4800 - it outputs garbage then.