#INCLUDE <24FJ64GA002.h>
#INCLUDE <MATH.H>
#INCLUDE <STDLIB.H>
#FUSES ICSP1, NOWDT, NODEBUG, NOPROTECT, NOJTAG, FRC, NOWINDIS, NOPR, IOL1WAY, OSCIO, NOCKSFSM, NOIESO
#USE DELAY(clock=8000000)
#PIN_SELECT U2TX=pin_b2
#PIN_SELECT U2RX=pin_b3
#PIN_SELECT U1TX=pin_b5
#PIN_SELECT U1RX=pin_b4
#use rs232(baud=9600, Xmit=pin_b5, rcv=pin_b4, STREAM=UART1) //PC
#use rs232(baud=9600, Xmit=pin_B2, rcv=pin_b3, STREAM=UART2) //GPS
#DEFINE PB1 PIN_B7
#DEFINE PB2 PIN_B8
#DEFINE LED5 PIN_B10
#DEFINE LED6 PIN_B12
#DEFINE LED7 PIN_B6
#DEFINE PWRKEY PIN_B13
#DEFINE ONLED5 OUTPUT_LOW(LED5);
#DEFINE ONLED6 OUTPUT_LOW(LED6);
#DEFINE ONLED7 OUTPUT_LOW(LED7);
#DEFINE OFFLED5 OUTPUT_HIGH(LED5);
#DEFINE OFFLED6 OUTPUT_HIGH(LED6);
#DEFINE OFFLED7 OUTPUT_HIGH(LED7);
#DEFINE CR 0x0D
#DEFINE LF 0x0A
#DEFINE BUFFER_LENGTH 47
#define R (6372797.560856)
UNSIGNED CHAR GPS_BUFFER[48]; //TRAMA DE GPS 48 CARACTERES ASCII, SIN INCLUIR CR LF
UNSIGNED CHAR DATA_GPS=0;
UNSIGNED CHAR ESTADO=0;
UNSIGNED CHAR BUFFER_INDEX=0;
UNSIGNED CHAR TRAMA_READY=0;
UNSIGNED CHAR C2;
FLOAT lat1=3.425205;
FLOAT lon1=-76.495073;
FLOAT lat2=3.428493;
FLOAT lon2=-76.498281;
FLOAT LATITUD;
FLOAT LONGITUD;
#INT_RDA
VOID ISR_RDA1()
{
char c1;
}
#INT_RDA2
VOID ISR_RDA2()
{
C2=FGETC(UART2);
ADD_TO_BUFFER(C2);
}
VOID MAIN()
{
FPUTS("RESET",UART1);
SET_PULLUP(TRUE, PIN_B7 );
SET_PULLUP(TRUE, PIN_B8 );
ENABLE_INTERRUPTS(INT_EXT0);
ENABLE_INTERRUPTS(INT_RDA2);
WHILE(TRUE)
{
GPS_DISTANCIA(lat1, lon1, lat2, lon2);
}//FIN WHILE
}//FIN VOID
VOID GPS_DISTANCIA(FLOAT lat1, FLOAT lon1, FLOAT lat2, FLOAT lon2)
{
FLOAT lat1r,lat2r,d_lat,d_lon,a,c,d;
lat1r=deg2rad(lat1);
lat2r=deg2rad(lat2);
d_lat=deg2rad(lat2-lat1);
d_lon=deg2rad(lon2-lon1);
a
=sin(d_lat
/2.0) * sin(d_lat
/2.0) + cos(lat1r
) * cos(lat2r
) * sin(d_lon
/2.0) * sin(d_lon
/2.0); d = R * c;
FPRINTF(UART1,"la distancia es: %f",d);
}