源代碼: #include<reg52.h>
#include<stdio.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
sbit led1=P2^0;
sbit led2=P2^1;
sbit key=P2^2;
uchar Rxbuff[40],Rxnum=0,Recive_state=0;
void Init()//110592MH
{
TMOD=0x20;
TH1=0xfD;
TL1=0xfD;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void delay(uchar t)
{
uchar i,j;
for(i=t;i>0;i--)
for(j=135;j>0;j--);
}
//UART 發(fā)送一字節(jié)
void UART_send_byte(char dat)
{
ES=0;
SBUF = dat; //發(fā)送
while (TI == 0); //等待發(fā)送完畢
TI = 0; //清發(fā)送完畢中斷請求標志位
ES=1;
}
/// UART 發(fā)送字符串
void Send_Str(unsigned char *buf)
{
while (*buf != '\0')
{
UART_send_byte(*buf++);
}
}
void TCP_Send(uchar *dat,uchar *p)
{
while(1)
{
Send_Str(dat);
delay(1000);
delay(1000);
delay(1000);
if(Recive_state == 1)
{
if(strstr(Rxbuff,p))
{
memset(Rxbuff,'\0',40);//清空數(shù)組
Recive_state=0;
break;
}
}
}
}
void LED()
{
led=0;
delay(1000);
delay(1000);
led=1;
delay(1000);
delay(1000);
}
void wifi_init()
{
TCP_Send("AT\r\n","OK");
delay(1000);
LED();
TCP_Send("AT+CWMODE=1\r\n","OK");
delay(1000);
LED();
Send_Str("AT+RST");
LED();
TCP_Send("AT+CWJAP=\"001\",\"1234567890\"\r\n","OK");
delay(1000);
delay(1000);
delay(1000);
delay(1000);
LED();
TCP_Send("AT+CIPSTART=\"TCP\",\"192.168.4.3\",8080\r\n","OK");
delay(1000);
delay(1000);
LED();
}
void main()
{
led1=1;
led2=1;
Init();//串口初始化
delay(1000);
wifi_init();//wifi初始化
delay(1000);
while(1)
{
if(key==0)
{
delay(1000);
if(key==0)
{
//ES=0;
led1=0;
Send_Str("AT+CIPSEND=3\r\n");
delay(100) ;
Send_Str("123\n");
delay(100) ;
led1=1;
//ES=1;
}
}
if(Recive_state == 1)
{
ES=0; //清空接收標志位
//led1=~led1;
//led2=~led2;
if((Rxbuff[0]=='+')&&(Rxbuff[1]=='I')&&(Rxbuff[2]=='P'))//接收到的字符串形式為+IPD,x:y
{
if((Rxbuff[3]=='D')&&(Rxbuff[4]==','))
{
if(Rxbuff[7]=='0')
led2 = 0;
if(Rxbuff[7]=='1')
led2 = 1;
}
}
memset(Rxbuff,'\0',40);//清空數(shù)組
Recive_state = 0;
ES=1; //打開接收標志位
}
}
}
//*****************串口接收中斷函數(shù),接收數(shù)據(jù)*********************
void UARTInterrupt(void) interrupt 4
{
if(RI==1)
{
ES = 0;
RI=0;
Rxbuff[Rxnum]=SBUF;
Rxnum++;
if((Rxbuff[Rxnum-1] == '\n'))
{
Rxbuff[Rxnum]='\0';
Rxnum=0;
Recive_state = 1;
}
else if(Rxnum>40)
Rxnum=0;
ES = 1;
}
}
|