sim900回应微观,但没有做任何事情

时间:2016-08-06 13:42:00

标签: c serial-port avr usart sim900

我有一个sim900模块,它有一个rs232串口。当我连接它 到我的电脑它在终端上工作正常,但是当我将它连接到atmega16微控制器时,它只会回复我发送给它的任何内容并且不回答命令。 此外,我使用max232 ic将rs232转换为ttl。

#include <io.h>
#include <mega16a.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>



interrupt [USART_RXC] void usart_rx_isr(void)
{
   char status,data;
   status=UCSRA;
   data=UDR;

   if(data!=0xd && data!= 0xa)lcd_putchar(data);

}




void main(void)
{
////////////////////////I/O REGISTERS
DDRB = 1 << DDB0;

///////////////////////USART REGISTERS
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) |      (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;


///////////////////////ENABLE GLOBAL INTERUPTS
#asm("sei")
///////////////////////LCD CONFIGURATION
lcd_init(16);
lcd_gotoxy(0,0);
delay_ms(2000); 
printf("ATE0\r\n");
delay_ms(2000);
printf("ATD+989190077175;\r\n");   
delay_ms(20000);
while (1)
{   

    lcd_clear();           
    lcd_gotoxy(0,0);
    // Please write your application code here
    printf("AT\r\n");    

    delay_ms(2000);

 }

}

1 个答案:

答案 0 :(得分:0)

你显然没有和你的SIM900说话。 您发出的命令“ATE0”应该使SIM900关闭回声。因此,在该命令之后,您无法看到来自SIM的回声。

根据您提供的信息,我可以提出以下建议:

检查max232原理图。这里最简单的情况是你已经以某种方式连接Rx / Tx,这可以解释两者 - 你看到回声并且没有与SIM通信。要解决这个问题 - 只需将m​​ax232连接到带有串行终端程序的计算机,并在转换器的输出端连接Rx / Tx。你应该看到回声。然后断开它们 - 你不应该看到回声。

一般建议 - 这不是这种讨论的正确场所。这就是问答知识库。