PIC16F877A – GSM Interfacing

In this tutorial we will see GSM Interfacing with PIC16F877A.

Suggest To Read

Components Required

  • GSM SIM900A module
  • PIC16F877A Development Board

GSM Interfacing with PIC16F877A

Connection

gsm interfacing with pic16f877aMicro controller’s RX (RC7) is connected into GSM module’s TX and Micro controller’s TX(RC6) is Connected into GSM module’s RX pin.

Code

SMS Sending Code

This code is used to send the message to the particular number.

#include<htc.h>

__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);

#define NUMBER 9876543210          //Here insert your number where you want to send message
 
void ser_int();
void tx(unsigned char);
unsigned char rx();
void tx_str(unsigned char *);
 
void sms(unsigned char *num1,unsigned char *msg);
void gsm_delay();
 
unsigned int dell;
 
int main()
{
        TRISC6=TRISC7=1;
        ser_int();
        sms(NUMBER, "Welcome to the Embetronicx");
        while(1);
}
 
void sms(unsigned char *num1,unsigned char *msg)
{
	tx_str("AT");
	tx(0x0d);
	gsm_delay();
 
	tx_str("AT+CMGF=1");
	tx(0x0d);
	gsm_delay();
 
	tx_str("AT+CMGS=");
	tx('"');
	while(*num1)
		tx(*num1++);
	tx('"');
	tx(0x0d);
	gsm_delay();
 
	while(*msg)
		tx(*msg++);
	tx(0x1a);
	gsm_delay();
}
 
void gsm_delay()
{
	unsigned long int gsm_del;
	for(gsm_del=0;gsm_del<=50000;gsm_del++);
}
 
void ser_int()
{
	TXSTA=0x20;	//BRGH=0, TXEN = 1, Asynchronous Mode, 8-bit mode
	RCSTA=0b10010000; //Serial Port enabled,8-bit reception
	SPBRG=17;			//9600 baudrate for 11.0592Mhz
	TXIF=RCIF=0;
}
	
void tx(unsigned char a)
{
	TXREG=a;
	while(!TXIF);
	TXIF = 0;
}

unsigned char rx()
{
	while(!RCIF);
	RCIF=0;
	return RCREG;
}

void tx_str(unsigned char *s)
{
	while(*s) {
		tx(*s++);
	}
}

Calling Code

This code is used to Call to the particular number.

#include<htc.h>

__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);

#define NUMBER 9876543210          //Here insert your number where you want to send message
 
void ser_int();
void tx(unsigned char);
unsigned char rx();
void tx_str(unsigned char *);
 
void call(unsigned char *num2);
void gsm_delay();
 
unsigned int dell;
 
int main()
{
        TRISC6=TRISC7=1;
        ser_int();
        call(NUMBER);
        while(1);
}
 
void call(unsigned char *num2)
{
	tx_str("AT");
	tx(0x0d);
	gsm_delay();
 
	tx_str("AT+CMGF=1");
	tx(0x0d);
	gsm_delay();
 
	tx_str("ATD");
	while(*num2)
		tx(*num2++);
	tx(';');
	tx(0x0d);
	for(dell=0;dell<=30;dell++)
		gsm_delay();
 
	tx_str("ATH");
	tx(0x0d);
	gsm_delay();
}
 
void gsm_delay()
{
	unsigned long int gsm_del;
	for(gsm_del=0;gsm_del<=50000;gsm_del++);
}
 
void ser_int()
{
	TXSTA=0x20;	//BRGH=0, TXEN = 1, Asynchronous Mode, 8-bit mode
	RCSTA=0b10010000; //Serial Port enabled,8-bit reception
	SPBRG=17;			//9600 baudrate for 11.0592Mhz
	TXIF=RCIF=0;
}
	
void tx(unsigned char a)
{
	TXREG=a;
	while(!TXIF);
	TXIF = 0;
}

unsigned char rx()
{
	while(!RCIF);
	RCIF=0;
	return RCREG;
}

void tx_str(unsigned char *s)
{
	while(*s) {
		tx(*s++);
	}
}

That’s all guys… You can use this code for send a message and call to particular number. If you have any doubt please comment below.

2.5 4 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
4
0
Would love your thoughts, please comment.x
Ads Blocker Image Powered by Code Help Pro
Ad Blocker Detected!!!

Dear User,

Thanks for visiting the site. Unfortunately, we have noticed that you are using an Ad Blocker extension in your browser.

We charge advertisers instead of the audience. We depend on Ad revenue to keep creating quality content for you. We guarantee clean ads. 

HERE IS HOW YOU CAN KEEP READING!

Click the AdBlock icon on your browser and click Enabled on this site to Disable AdBlock in embetronicx.com or whitelist our website.

If you still want to hide the ads, please become a Premium member. If you are a premium member already, then please log in.

Thank you for understanding.

If you are seeing this even after disabling all the ad blockers, Please report us the False Positive to [email protected]

Refresh