You are on page 1of 3

include <avr/io.

h>
#include <avr/interrupt.h>
#include <string.h>
#include <util/delay.h>
unsigned int i=0;
char enter=0x0D;
char ctrZ=0x1A;
void USARTInit()
{
//Set Baud rate
UCSRA=0;
UBRRL = 51;
UBRRH = 0;
UCSRC=(1<<URSEL)|(3<<UCSZ0);
//Enable The receiver and transmitter
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
}
char get_char()
{
//Wait untill a data is available
while(!(UCSRA & (1<<RXC)))
{ }
return UDR;
}
void put_char(char data)
{
//Wait untill the transmitter is ready
while(!(UCSRA & (1<<UDRE)))
{
}
//Now write the data to USART buffer
UDR=data;
}
void put_str(char* str)
{
unsigned char len;
len=strlen(str);
for(int i=0;i<len;i++)
{
_delay_ms(100);
while((UCSRA & 0x20) == 0x0);
UDR=str[i];
}
}
int main (void)
{
// set PORTA for output
DDRA |= (1<<PA2) | (1<<PA1) | (1<<PD0);

PORTA &= ~(1<<PA2) | (1<<PA1) | (1<<PA0);


USARTInit();
_delay_ms(1000);
send("AT");
put_str(dummy);
while(get_char()!='O');
while(get_char()!='K');//Waiting for modem response
put_str("ATE0");
put_str (dummy);
while(get_char()!='O');
while(get_char()!='K');//Waiting for modem response
put_str ("AT+CMGF=1");
put_str (dummy);
while(get_char()!='O');
while(get_char()!='K');//Waiting for modem response
put_str ("AT+CNMI=2,2,0,0,0");
put_str (dummy);
while(get_char()!='O');
while(get_char()!='K');//Waiting for modem response
while(1)
{
rx[i]=get_char();
i++;
if(rx[i-2]==13 && rx[i-1]==10)
{
rx[i-1]='';
rx[i-2]='';
i=0;
if(strcmp(rx,"device1 ON")==0)
{
PORTA |= (1<<PA0);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");
ed to add your gsm number here e.g +2348033870967
put_str (enter);
put_str ("device1 ON ");
put_str (ctrZ);
}
if(strcmp(rx,"device1 OFF")==0)
{
PORTA |= (1<<PA1);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");

// you ne

put_str (enter);
put_str ("device1 OFF ");
put_str (ctrZ);
}
if(strcmp(rx,"device2 ON")==0)
{
PORTA |= (1<<PA2);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");
put_str (enter);
put_str ("device2 ON");
put_str (ctrZ);
}
if(strcmp(rx,"device2 OFF")==0)
{
PORTA |= (1<<PA2);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");
put_str (enter);
put_str ("device2 OFF");
put_str (ctrZ);
}
if(strcmp(rx,"device3 ON")==0)
{
PORTA |= (1<<PA2);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");
put_str (enter);
put_str ("device3 ON");
put_str (ctrZ);
}
if(strcmp(rx,"device3 OFF")==0)
{
PORTA |= (1<<PA2);
_delay_ms(1000);
put_str ("AT");
put_str (enter);
put_str ("AT+CMGS=\"+gsm number\"");
put_str (enter);
put_str ("device3 OFF");
put_str (ctrZ);
}
}
}
}

You might also like