Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#define F_CPU 16000000UL

#define USART_BAUDRATE 9600


#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
#include<stdio.h>
#include<avr/io.h>
#include<util/delay.h>
char init_modem1[11]={'A','T','+','C','M','G','F','=','1','\r','\n'};
char read[8]={'A','T','+','C','M','G','R','='};
//char mesg[22]={'A','T','+','C','M','G','S','=','"','8','0','1','0','3','0','9'
,'8','5','3','"','\r','\n'};
char call1[3]={'A','T','D'};
char number[10];
char msg_no;
void
void
void
void
void
void

init_usart1(void);
init_modem(void);
mesg_no_extract(void);
read_msg(int);
extract_no(void);
call(void);

int main(void)
{
DDRA=0xFF;
DDRC=0xFF;
PORTA=0xFF;
_delay_ms(10);
PORTA=0x00;
_delay_ms(10);
init_usart1();
init_modem();
mesg_no_extract();
read_msg(msg_no);
extract_no();
call();
while(1);
return 0;
}
void init_usart1()
{
UBRR1L= BAUD_PRESCALE;
UBRR1H= (BAUD_PRESCALE>>8);
UCSR1B= 0X18;
UCSR1C= 0X86;
}
void init_modem()
{
int i=0;
while(i<11)
{
while(!(UCSR1A&(1<<UDRE1)));
PORTC=0xFF;
_delay_ms(50);

PORTC=0x00;
_delay_ms(50);
UDR1=init_modem1[i];
i++;
}
}
void mesg_no_extract()
{
while(1)
{
while(!(UCSR1A&(1<<RXC1)));
msg_no=UDR1;
if(msg_no==',')
{
while(!(UCSR1A&(1<<RXC1)));
msg_no=UDR1;
PORTA=0xFF;
_delay_ms(50);
PORTA=0x00;
_delay_ms(50);
break;
}
}
}
void read_msg(int mesg_no)
{
int i=0;
while(i<8)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1=read[i];
i++;
}
while(!(UCSR1A&(1<<UDRE1)));
UDR1=mesg_no;
while(!(UCSR1A&(1<<UDRE1)));
UDR1='\r';
while(!(UCSR1A&(1<<UDRE1)));
UDR1='\n';
}
void extract_no()
{
char f=0;
int i=0;
while(1)
{
while(!(UCSR1A&(1<<RXC1)));
f=UDR1;
while(f=='1'&&i<10)
{
while(!(UCSR1A&(1<<RXC1)));
number[i]=UDR1;
i++;
}
if(i>=10)
break;
}

}
void call()
{
int i=0;
while(i<3)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1=call1[i];
i++;
}
i=0;
while(i<10)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1=number[i];
i++;
}
while(!(UCSR1A&(1<<UDRE1)));
UDR1=';';
while(!(UCSR1A&(1<<UDRE1)));
UDR1='\r';
while(!(UCSR1A&(1<<UDRE1)));
UDR1='\n';
}

You might also like