#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
//#include<reg51.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit beef=P3^6;
sbit relay=P0^0;
uchar k = 0;
uchar Receive;
uchar Receive_table[30];
void Delay_Ms(uint ms)
{
uint i,j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void Delay_Us(uchar us)
{
while(us--);
}
void InitUART(void)
{
TMOD=0x21;
TH0=(65536-87)/256;
TL0=(65536-87)%256;
EA=1;
ET0=1;
TR0=0;
// SCON = 0x50;
// TH1 = 0xFA;
// TL1 = TH1;
// PCON = 0x80;
// ES = 1;
// EA = 1;
// TR1 = 1;
SCON = 0X50;
TH2=0XFF;
TL2=0XFD;
RCAP2H=0XFF;
RCAP2L=0XFD;
TCLK=1;
RCLK=1;
C_T2=0;
EXEN2=0;
TR2=1;
ES = 1;
EA = 1;
}
void Uart_Send_Char(uchar dat)
{
ES = 0;
TI = 0;
SBUF = dat;
while(!TI);
TI = 0;
ES = 1;
}
void Uart_Send_String(uchar *string)
{
while(*string)
{
Uart_Send_Char(*string++);
Delay_Us(5);
}
Delay_Ms(1000);
}
void ESP8266_Send(uchar *puf)
{
Delay_Ms(20);
Uart_Send_String("AT+CLDSENDRAW=9\r\n");
Delay_Ms(20);
Uart_Send_String(puf);
}
void ESP8266_Init()
{
// Uart_Send_String("AT+CIPMUX=1\r\n");
// Uart_Send_String("AT+CIPSERVER=1,5000\r\n");
Uart_Send_String("AT+CLDSTART\r\n");
}
void main(void)
{
led1=0;
led2=0;
InitUART();
ESP8266_Init();
while(1)
{
if((Receive_table[0]=='+')&&(Receive_table[1]=='C')&&(Receive_table[2]=='R'))//MCU???????+IPD???????0\1???????
{
if((Receive_table[3]=='A')&&(Receive_table[6]=='1'))
{
switch(Receive_table[8])
{
case '0':
led1=1;
ESP8266_Send("LED1 OPEN\r\n");
Receive_table[8]='f';
break;
case '1':
led1=0;
ESP8266_Send("LED1 OFF\r\n");
Receive_table[8]='f';
break;
case '2':
led2=1;
ESP8266_Send("LED2 OPEN\r\n");
Receive_table[8]='f';
break;
case '3':
led2=0;
ESP8266_Send("LED2 OFF\r\n");
Receive_table[8]='f';
break;
case '4':TR0=1;break;
case '5':TR0=0;break;
case '6':
relay=0;
ESP8266_Send("relayOPEN\r\n");
Receive_table[8]='f';
break;
case '7':
relay=1;
ESP8266_Send("relay OFF\r\n");
Receive_table[8]='f';
break;
default:;
}
}
}
}
}
void UARTInterrupt(void) interrupt 4
{
EA=0;
if(RI==1)
{
RI = 0;
Receive = SBUF;
Receive_table[k++] = Receive;
if((Receive_table[k-1] == '\n') || (k == 29))
{
k = 0;
}
}
EA=1;
}
void time_0()interrupt 1
{
uchar num;
TH0=(65536-87)/256;
TL0=(65536-87)%256;
num++;
if(num==2)
{
beef=~beef;
num=0;
}
}
|