0

こんにちは、プロジェクトでメッセージを送信する際に問題があります。pic16f877a と sim300 を使用しています。メイン関数は繰り返し実行されます。送信された SMS で一部の文字が欠落しています。私のプログラムはこのようなものです...

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;
}

助けてください

追加情報: 他のすべてのプログラムは正常に実行されますが、send_sms 関数を呼び出すと、「メイン」が繰り返し実行され、いくつかのメッセージが欠落した文字で送信されます。

4

1 に答える 1