This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Interfacing SIM900A with 89S52

Hi all...
I am trying to interface SIM900A with 89S52 to send messages to the mobile phone.
Code:

#include<reg51.h>
unsigned char *command_ATE0 = "ATE0\r";
unsigned char *command_AT = "AT\r";
unsigned char *command_CMGF = "AT+CMGF=1\r";
unsigned char *command_CMGS = "AT+CMGS=\"+9199********\"\r";
unsigned char *message = "Welcome to the world of Robotics..!";       // Msg 2 be send
unsigned char CTRLZ = 0x1A;
void gsm();
void puts(unsigned char* ptr);
void putc(unsigned char chr);
void sendsms(void);
void initialize();
void delay(unsigned int time);


void main()
{
 gsm();
 while(1);
}


void gsm()
{
 initialize();
 sendsms();
}

void initialize()
{
 SCON  = 0x50;   /*SCON: mode 1, 8-bit UART, enable receive      */
 TMOD |= 0x20;   /*TMOD: timer 1, mode 2, 8-bit                  */
 TH1   = 0xFD;   /*TH1:  for 9600 baud                           */
 TR1   = 1;      /*TR1:  timer 1 run                             */
}

void sendsms()
{
 puts(command_ATE0);
 delay(50);
 puts(command_AT);
 delay(50);
 puts(command_CMGF);
 delay(50);
 puts(command_CMGS);
 delay(50);
 puts(message);
 delay(50);
 putc(CTRLZ);

}

void puts(char* p)
{
 char *temp = p;          /*temp pointer so that the actual pointer is not displaced */
 while(*temp != 0x00)
 {
  putc(*temp);
  temp++;
 }
}

void putc(unsigned char chr)
{
 SBUF = chr;
 while(TI==0);            /*Wait until the character is completely sent */
 TI=0;                    /*Reset the flag */
}


void delay(unsigned int time)
{
unsigned int y,z;
for(y=0;y<=time;y++)
for(z=0;z<2400;z++)
{
;
}
}


but while stimulating the same in proteus, i am getting an error...
the virtual terminal window display something ugly which i cannot understand.
it displays something like
@$#%%$#435#$5#$%GBF# %#^456y456%^%$% g$^&^&%$%^%
can anybody please help me....