#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit P00=P0^0;
sbit P01=P0^1;//第一个轮子
sbit P02=P0^2;
sbit P03=P0^3;//第二个轮子
/**串口数据使用**/
#define RX1_Lenth 32 //串口接收缓冲长度
uchar idata RX1_Buffer[RX1_Lenth]; //接收缓冲
uchar TX1_Cnt; //发送计数
uchar RX1_Cnt; //接收计数
uchar i;
signed char a=0;
bit B_TX1_Busy; //发送忙标志
/**wifi模块命令**/
unsigned char idata LYMS[13]="AT+CWMODE=2\r\n";
unsigned char idata SZLY[38]="AT+CWSAP='ESP8266','0123456789',11,0\r\n";
unsigned char idata RST[8]="AT+RST\r\n";
unsigned char idata SZDLJ[13]="AT+CIPMUX=1\r\n";
unsigned char idata KQFU[21]="AT+CIPSERVER=1,5000\r\n";
unsigned char idata FSSJ[13]="AT+CIPSEND=\r\n";//AT+CIPSEND= 发送数据
void Delay3(unsigned int N)
{
int i;
for(i=0;i<N*10;i++);
}
void Uart_Init(void)
{
TMOD = 0x20; //定时器工作在定时器1的方式2
PCON = 0x00; //不倍频
SCON = 0x50; //串口工作在方式1,并且启动串行接收
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
IT0=1;
IT1=1;
EX0=1;
EX1=1;
PX0=0;
PX1=0;
PS=1;
ES = 1; //开串口中断
EA = 1; //开总中断
RX1_Cnt=0; //接受计数清零
TX1_Cnt = 0; //发送计数清零
B_TX1_Busy = 0;//初始化判忙标志位
}
void wifi(void)
{
char i=0;
/******************设置WiFi模块**********************************************/
for(i=0;i<13;i++)//AT+CWMODE=2 设置成路由模式
{
SBUF=LYMS[i];Delay3(5);
}
Delay3(1000);
for(i=0;i<38;i++)//AT+CWSAP="ESP8266","0123456789",11,0 设置路由
{
SBUF=SZLY[i];Delay3(5);
}
Delay3(3000);
for(i=0;i<8;i++)//AT+RST 重启
{
SBUF=RST[i];Delay3(5);
}
Delay3(5000);
for(i=0;i<13;i++)//AT+CIPMUX=1 设置成多连接
{
SBUF=SZDLJ[i];Delay3(5);
}
Delay3(2000);
for(i=0;i<21;i++)//AT+CIPSERVER=1,5000 开启TCP服务端口
{
SBUF=KQFU[i];Delay3(5);
}
Delay3(2000);
}
void dianji1()//左上至右下
{
P00=0;P01=1;
P02=0;P03=1;
}
void dianji2()//右上至左下
{
P00=1;P01=0;
P02=1;P03=0;
}
void dianjig()//停止电机转动
{
P00=0;P01=0;
P02=0;P03=0;
}
void main()
{
Uart_Init();
wifi();
while(1)
{
if(a==2)
dianji1();
else
{
if(a==1)
dianji2();
else
{
if(a==3)
dianjig();
}
}
}
}
void UART1_int (void) interrupt 4
{
if(RI)
{
RI = 0;
RX1_Buffer[RX1_Cnt] = SBUF; //保存一个字节
if(RX1_Buffer[0]==0x45)
{
RX1_Cnt++;
}
else
{
RX1_Cnt=0;
}
if(RX1_Cnt>=10)
{
if(RX1_Buffer[0]==0x45&&RX1_Buffer[1]==0x53&&RX1_Buffer[2]==0x50)
{
if(RX1_Buffer[4]==0x4C&&RX1_Buffer[5]==0x45&&RX1_Buffer[6]==0x44)
{
if(RX1_Buffer[7]==0x31)
{
if(RX1_Buffer[3]==0x44)
{
a=0;
}
if(RX1_Buffer[3]==0x45)
{
a=1;
}
if(RX1_Buffer[3]==0x46)
{
a=2;
}
if(RX1_Buffer[3]==0x47)
{
a=3;
}
}
}
}
RX1_Cnt=0;
}
}
if(TI)
{
TI = 0;
B_TX1_Busy = 0; //清除发送忙标志
}
}
|