Modulo GPS ET102 16F876A échenle una ojeada PicBasic

Buenas nuevamente yo por aquí, se que hay varios post de esto de módulos y por eso estoy aquí por que lo he leído todos y mi programa nada que anda esta en basic. les explico que es lo que intento hacer lo estoy haciendo en proteus tengo dos pics uno que emula el modulo gps con su trama y todo y otro que es el pic en si, a continuación coloco el circuito en proteus y los pbp de los dos pics

mi problema es que no logro guardar por lo menos aquí he intentado guardar solo la hora que es la primera parte de la trama pero ni eso, nose por que según los ejemplos que he visto esta bien o así parece por favor una mano


---------------------------------- Transmisor osea el que hace las veces de modulo GPS------------------------------
INCLUDE "modedefs.bas"
'TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h)
DEFINE OSC 4 'se define el oscilador en MHz
DEFINE HSER_RCSTA 90h ' Set receive register to receiver enabled
DEFINE HSER_TXSTA 20h ' Set transmit register to transmitter enabled
DEFINE HSER_BAUD 2400 ' Set baud rate
DEFINE HSER_SPBRG 25 ' Set SPBRG directly (normally set by HSER_BAUD)



TRISC = %00000000 ' RX TX _ _ _ _ _ _PUERTO SERIAL
TRISB = %11111111

main:


if portb.0 = 0 then
HSEROUT ["$GPGGA,152145.000,4805.8193,N,01132.2317,E,#,##,2.5,607.75,M,47.6,M,,*67<CR><LF>"]
endif
if portb.1 = 0 then
HSEROUT ["$GPGGA,168132.100,5423.9893,N,29132.2317,E,#,#,2.5,807.75,M,47.6,M,,*67<CR><LF>"]
endif
if portb.2 = 0 then
HSEROUT ["$GPGGA,683145.000,6845.8193,N,31232.2317,E,#,##,4.5,907.75,M,47.6,M,,*67<CR><LF>"]
endif
PAUSE 1000
GOTO MAIN
END



--------------pic toma datos y los muestra en lcd--------------------

'###############algunos comandos interesantes de SERIN #############################
'BIN{1..16 } recibir dígito binario
'DEC{1..5 } recibir dígitodecimal
'HEX{1..4 } recibir dígito hexadecimal
'SKIP n saltar n caracteres a recibir
'STR ArrayVar\n{\c } recibir cadena de n caracteres opcionalmente terminar en caracter c
'WAIT ( ) espera para secuencia caracter
'WAITSTR ArrayVar{\n } espera para cadena de caracteres
'#####################################################################################


'#########################Trama GPGGA del modulo GPS###########################################
' trama $GPGGA,152145.000,4805.8193,N,01132.2317,E,#,##,2.5,607.75,M,47.6,M,,*67<CR><LF>
'Esto corresponde a:
'$GPGGA: Cabecera GGA del código. (Modo de datos)
'152145.000: Información de hora UTC - hhmmss.sss
'4805.8193: Latitud de la posición actual - ddmm.mmmm
'N: Indica Norte / S: Indica Sur de la posición actual
'12158.3416: Longitud de la posición - dddmm.mmmm
'W: Indica Occidente / E: Indica Oriente de la posición actual
'#: Cualidad de datos fijos. 1=Dato válido. 0=Cualidad fija no disponible (Dato no válido). Se basa en la cantidad de satelites de los que recibe información.
'##: Número de satelites a los que se encuentra enlazados el GPS. Va de 0 a 12 satélites
'2.5: Dilución horizontal de presición
'607.75: Altitud de la antena. Sobre/bajo el nivel del mar. Geoidal
'M: Unidad de medida de la altitud de la antena: Metros (M)
'47.6: Separación Geoidal.
'M: Unidad de la Separación Geoidal: Metros (M)
'Vacío
'Vací o
'*67: Checksum
'<CR><LF>: Fin del mensaje
'########################################################################################################


Include "modedefs.bas"


'RCSTA: RECEIVE STATUS AND CONTROL REGISTER (ADDRESS 18h)
DEFINE OSC 4 'se define el oscilador en MHz
DEFINE HSER_RCSTA 90h ' Set receive register to receiver enabled
DEFINE HSER_TXSTA 20h ' Set transmit register to transmitter enabled
DEFINE HSER_BAUD 92400 ' Set baud rate
DEFINE HSER_SPBRG 25 ' Set SPBRG directly (normally set by HSER_BAUD)


Define LCD_DREG PORTB
Define LCD_DBIT 4
Define LCD_RSREG PORTB
Define LCD_RSBIT 2
Define LCD_EREG PORTB
Define LCD_EBIT 3



hora var word
latitud var byte
longitud var byte
vertical var byte
horizontal var byte







GPS:

hserin [wait("$GPGGA"),dec1 hora,DEC1 latitud,DEC1 vertical,DEC1 longitud,dec1 horizontal ]
hserin [hora]
lcdout $FE, 1
pause 50
lcdout "hora: ", dec hora
pause 12000
goto gps



se me olvidaba algo para que el picGPS envié la trama hay que presionar cualquiera de los 3 interruptores
 

Adjuntos

  • cone serial pic.zip
    83.7 KB · Visitas: 53
Última edición:
Atrás
Arriba