GSM与PIC16F877A之间的串行通信

seial communication between GSM and PIC16F877A

请帮助我尝试准备一个项目,该项目需要 PIC16F877A 和 GSM sim900 之间的串行通信,以便我可以从远程发送和接收短信这里是发送短信的和平代码,用 MPLAB XC8 `

           UART_Write_Text("AT+CMGF=1");
         __delay_ms(500);
          UART_Write_Text("AT+CMGS=\"+25XXXXXXXXX\"\n\r");
          __delay_ms(500);
          UART_Write_Text("Fuse number 1 had blown up");
          __delay_ms(500);
          UART_Write(26);
        __delay_ms(6000);
         UART_Write_Text("AT+CMGF=1");
         __delay_ms(500);
          UART_Write_Text("AT+CMGS=\"+255XXXXXXX\"\n\r");
          __delay_ms(500);
          UART_Write_Text("Fuse number 2 had blown up");
          __delay_ms(600);
          UART_Write(0x1A);
        __delay_ms(6000);
         UART_Write_Text("ATD+25XXXXXXX;");
         __delay_ms(6000);`

你可以看到我正在尝试检查问题是否出在用于终止短信的 ASCII 字符 26,但问题是 PIC 芯片无法与 GSM 通信,因为我尝试了不同的电压水平使用 MAX232,我最初通过 MAX232 制作接口,如下所示,GSM interface with PIC16F877A through MAX232 但没有发送,我尝试在没有 max232 的情况下交换串行引脚仍然没有发送。然后我尝试用 GSM SIM900A min 更换 GSM SIM900,它有三个端口选项,RS232、3V Tx 和 Rx、5V Tx 和 Rx,因为 PIC16F877a 它的逻辑电压是 5v 所以我使用了 5V 端口但仍然没有发送。但 GSM 和 PIC 都可以通过 5v FTDI 分线端口与笔记本电脑的超级终端通信。

恐怕你必须首先限制你的问题:硬件或软件。你有你的连接模式吗?

另一方面,在您的代码中您使用了这个函数:

UART_Write_Text("AT+CMGF=1");

你不应该用 \r\n\n\rUART_Write_Text适合你吗?