title: sending sms using pic16f877a and sim 300
body: <p>Hi I have a problem in sending message in project, I am using pic16f877a and sim300. the main function runs repeatedly. Some characters are missed in the sent sms.
  my program is like this...</p>
  
  <pre><code>void main()//main function
  { 
      Serial_init();  // initialization of serial communication
      Send_SMS();
  }
  
  void Serial_init()
  {
      TRISC=0XC0; 
      TXSTA=0x24;
      SPBRG=129; // set baud rate 9600 Hz for 20MHz fosc
      RCSTA=0x90;
      TXIF=1;
  }   
  
  void Send_SMS(void)
  {
      USART_puts("AT\0");
      putch1(0x0D);
      Delay_ms4M(200);
      USART_puts("AT+CMGF=1\0");       // switch into text mode
  
      putch1(0x0D);// ascii of Carriage Return
      Delay_ms4M(200);
      USART_puts("AT+CMGS=\"9741153218\"\0");   // send sms to the number
      putch1(0x0D);   
      Delay_ms4M(200);                            
      USART_puts("Hi this is working LOL\0"); // SMS text
      putch1(0x0A); // new line
      Delay_ms4M(200);
      putch1(0x0D);
      Delay_ms4M(100);
      putch1(0x1A);   // ascii of 'substitute' i.e end of file 
  }
  
  
  void USART_puts(const unsigned char *string)
  {
      while(*string)
          putch1(*string++);
  } 
  
  void putch1(unsigned char data)
  {
      while(TXIF==0);
      TXREG=data;
  }
  </code></pre>
  
  <p>Please help</p>
  
  <p>additional details: all other programs run properly, but if I call send_sms function, "main" runs repeatedly and several messages are sent with missed characters. </p>