Jushoraj
Member level 1
I need to interface gps and sim300 using PIC18F4550. Actually i need to send only the latitude and longitude to a mobile number. Can any one help me in this matter. I need the c code.
I have tried this code, but its not working
I have tried this code, but its not working
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 #define FREQ 12000000 #define baud 9600 #define spbrg_value (((FREQ/64)/baud)-1) unsigned char rx_data(); unsigned char *gps_data; unsigned char single_data; unsigned int i=0; unsigned char *at_cmd="AT"; unsigned char *sms_format="AT+CMGF=1"; unsigned char *sms_write="AT+CMGS=\"+919665479959\""; unsigned char enter=0x0D; unsigned char *data; void main() { TRISB=0; // Set Port B as output port LATB=0; TRISA=0; LATA=0; SPBRG=spbrg_value; // Fill SPBRG reg to set the baud rate RCSTA.SPEN=1; // To activate serial port (Tx and Rx pins) RCSTA.CREN=1; // To enable continuous reception TXSTA.TXEN=1; // Activate Transmissiom PIE1.RCIE=1; // Enable Reception interrupt INTCON.GIE=1; // Enable Global interrupt INTCON.PEIE=1; // Enable Peripheral interrupt gsm_cmd(at_cmd); while(1) { single_data=rx_data(); // Check the string '$GPGGA,' if(data=='$') { single_data=rx_data(); for(i=0;single_data!='$';i++) { single_data=rx_data(); gps_data[i]=single_data; // Store the data } gsm_cmd(sms_format); Delay_ms(1000); gsm_cmd(sms_write); Delay_ms(1000); gsm_cmd(gps_data); tx_data(0x1A); Delay_ms(1000); } } unsigned char rx_data(void) { while(PIR1.RCIF==0); // Wait until RCIF gets low return RCREG; // Store data in Reception register } void gsm_cmd(unsigned char *string) { i=0;j=0; while(string[i]!='\0') { temp=0; if(string[i]==0x5C) // Not to send '\' cahracter i++; tx_data(string[i]); // Send by serial comm. i++; while(temp!=1); } temp=0; tx_data(enter); // Send ASCII code for 'Enter' key while(temp!=1); } void tx_data(unsigned char serial_data) // Transmit data function { TXREG=serial_data; while(PIR1.TXIF==0); } void interrupt() { data[j]=RCREG; // Store the data into array when Reception value=RCREG; interrupt occurs. j++; temp=1; }
Last edited by a moderator: