|
我把ESP8266模塊用電腦發(fā)送AT指令倒是很正常工作,可是接到單片機上過后它把AT指令執(zhí)行完過后,它就會一直向串口發(fā)送數(shù)據(jù),,這是為什么,,,源碼寫的有點亂剛學沒有多久,,,,希望大家可以幫幫我
#include <reg52.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
void Send_Hex(uchar b);
void Send_ASCII(uchar *b);
void CLR_Buf(void);
sbit led=P1^0;
int Buf_Max;
char Rec_Buf[20],t;
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--);
}
void UART_init()
{
/* TMOD = 0x20; //T1工作模式2 8位自動重裝
TH1 = 0xfd;
TL1 = 0xfd; //比特率9600
TR1 = 1; //啟動T1定時器
SM0 = 0;
SM1 = 1; //串口工作方式1 10位異步
REN = 1; //串口允許接收
EA = 0; //關(guān)總中斷
ES = 0; //串口中斷關(guān)閉 */
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 0;
ES = 0;
TR1 = 1;
}
void main()
{
UART_init(); //串口初始化
delay(3000);
Send_ASCII("AT"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
delay(3000);
CLR_Buf();//清除返存
Send_ASCII("AT+CWJAP=lify5288,q16888888"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
delay(10000);
CLR_Buf();//清除返存
Send_ASCII("AT+CIPMUX=1"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
CLR_Buf();//清除返存
delay(3000);
Send_ASCII("AT+CIPSERVER=1,1000"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
CLR_Buf();//清除返存
delay(3000);
while(1)
{
t = SBUF;
if(RI==1) // 是否有數(shù)據(jù)到來
{
RI = 0;
Send_ASCII("AT+CIPSEND=0,5"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
CLR_Buf();//清除返存
delay(1500);
Send_ASCII("TTTTT"); //發(fā)送聯(lián)機指令
Send_Hex(0x0d); //發(fā)送回車符
Send_Hex(0x0a); //發(fā)送換行符
CLR_Buf();//清除返存
}
}
}
void Send_Hex(uchar b) //發(fā)送
{
RI = 0;
SBUF = b;
while(!TI);
TI = 0;
}
void UART() interrupt 4
{
}
void CLR_Buf(void)//清除
{
unsigned char k;
for(k=0;k<Buf_Max;k++) //將緩存內(nèi)容清零
{
Rec_Buf[k] = 0;
}
}
void Send_ASCII(unsigned char *b) //字節(jié)發(fā)送
{
for (b; *b!='\0';b++)
{
SBUF = *b;
while(TI!=1); //等待發(fā)送完成
TI = 0; //清除發(fā)送中斷標志位
}
}
|
|