Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

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

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top