PIC 18F4550 interfacing with GSM

Status
Not open for further replies.

khattak.seecs

Newbie level 1
Joined
Jan 25, 2013
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,302
i am facing problems in interfacing gsm sim 900 with pic18f4550. the code seems to have nothing wrong with it, could any one help me with it.

#include<p18f4550.h>
#include<delays.h>

# pragma config WDT=OFF
# pragma config LVP=OFF
# pragma config FOSC=HS
# pragma config IESO=OFF
# pragma config MCLRE=ON
# pragma config PBADEN=OFF



unsigned char value=0;
int i=0, k=0,j=0;

unsigned char *at_cmd="AT";
unsigned char *sms_format="AT+CMGF=1";
unsigned char *sms_write="AT+CMGS=\"03006464297\"";
unsigned char *sms="Hello";
unsigned char enter=0x0D;
unsigned char *data;

#define FREQ 11059200
#define baud 9600
#define spbrg_value (((FREQ/64)/baud)-1)
unsigned char rx_data(void);

void tx_data(unsigned char serial_data) ;
void gsm_cmd(unsigned char *);
int check(unsigned char *);




void main()
{

TRISB=0;
LATB=0;


TRISC=0xC0;






//BAUDCONbits.WUE=1;

TXSTAbits.SYNC=0;
BAUDCONbits.BRG16=0;
SPBRG=spbrg_value; // Fill SPBRG register to set the baud rate






INTCONbits.GIE=1; // Enable Global interrupt
INTCONbits.PEIE=1; // Enable Peripheral interrupt



RCSTAbits.SPEN=1; // To activate serial port (Tx and Rx pins)
PIE1bits.RCIE=1; // Enable Reception interrupt
RCSTAbits.RX9=0;

RCSTAbits.CREN=1; // Activate Reception



PIE1bits.TXIE=1;
PIE1bits.RCIE=1;
TXSTAbits.TX9=0;
TXSTAbits.TXEN=1; // Activate Transmissiom
RCSTAbits.RX9=1;


while (1)
{
{
PORTBbits.RB0=1;
gsm_cmd(at_cmd);
Delay10TCYx(500);
i=0;
while(i<2)
{
data=rx_data();
i++;
}
if (check(data))
{
PORTBbits.RB1=1;

gsm_cmd(sms_format);
Delay10TCYx(500);
i=0;
while(i<2)
{
data=rx_data();
i++;
}
if (check(data))
{
PORTBbits.RB2=1;
gsm_cmd(sms_write);
Delay10TCYx(500);


PORTBbits.RB3=1;
gsm_cmd(sms);

tx_data(0x1A);
Delay10TCYx(500);




}
}
}
}
}




unsigned char rx_data(void)
{
while(PIR1bits.RCIF==0); // Wait until RCIF gets low
return RCREG; // Retrieve data from reception register
}

void tx_data(unsigned char serial_data) // Transmit data function
{
TXREG=serial_data;
while(PIR1bits.TXIF==0);
}


void gsm_cmd(unsigned char *string)
{
i=0,j=0;
while(string!='\0')
{
tx_data(string);
i++;
}
tx_data(enter);
}



int check(unsigned char *string)
{
int i=0;
if(string=='O')
{
i++;
if(string=='K')
{return 1;
}
else
return 0;
}
else
return 0;

}
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…