我用的是STC12C5A60S2单片机,串口1用于接收数据,串口2负责发送at指令控制esp8266,我之前已经用串口调试助手发送过at指令,模块响应正常,而且波特率都是9600.单独用串口调试助手也能正常接收到单片机发的at指令。但是为什么一连接上单片机,电脑连接上WIFI之后,用网络调试助手连接不上!!!!急求!!附上一部分代码:
void WifiInit() //wifi初始化
{
Uart2_send_string("AT+CIPMUX=1\r\n");//设置多连接
Delay_1ms(2000);
Uart2_send_string("AT+CWMODE=2\r\n");//wifi模式
Delay_1ms(2000);
Uart2_send_string("AT+CIPSERVER=1,8080\r\n"); //建立server,端口号为8080
Delay_1ms(2000);
Uart2_send_string("AT+CIPSTO=2880\r\n");//超时2880s
Delay_1ms(2000);
}
void Uart2Init(void) //9600bps@11.0592MHz
{
AUXR &= 0xf7; //波特率不倍速
S2CON = 0x40; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR &= 0xfb; //独立波特率发生器时钟为Fosc/12,即12T
AUXR |= 0x10; //启动独立波特率发生器
IE2 =0x01; //开串口2中断 ES2=1
}
void Uart2_send_byte(unsigned char date)//串口2发送一个字节
{
unsigned char temp = 0;
IE2 = 0x00; //关串口2中断,es2=0
S2CON= S2CON & 0xFD; //B'11111101,清零串口2发送完成中断请求标志
S2BUF = date;
//while(TI ==0); //等待发送完成
do
{
temp = S2CON;
temp = temp & 0x02;
}while(temp==0);
// TI = 0; //清零串口发送完成中断请求标志
S2CON= S2CON & 0xFD; //B'11111101,清零串口2发送完成中断请求标志
// ES = 1; //允许串口1中断
// ES2 = 1
IE2 = 0x01; //允许串口2中断,ES2=1
}
void Uart2_send_string(unsigned char *p) //串口2发送一个字符串
{
while(*p!='\0')
{
Uart2_send_byte(*p);
p++;
}
}
|