高级会员
主题
帖子
积分63
阅读权限30
注册时间2021-8-30
最后登录1970-1-1
在线时间 小时
|
51单片机代码:
#include <reg52.h>
#include "intrins.h"
#define LED P2
sbit LED1=P2^0;
typedef unsigned int u16;
typedef unsigned char u8;
u8 receive[2];
u8 sign=0;
void delay1s(void) //误差 0us
{
u8 a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
//初始化串口
void Init()
{
SCON = 0x50; //串口模式1,允许接收
TMOD = 0x20; //T1工作模式2,自动重装
PCON = 0x80; //波特率倍增
REN = 1;
//根据实际选择
// TH1 = 0xfa; //波特率9600(11.0592)
TH1 = 0xf3; //波特率4800(12.0000)
// TH1 = 0xf4; //波特率4800(11.0592)
TL1 = TH1;
RI=0;
EA = 1;
ES = 0;
TR1 = 1;
}
//发送字符
void send(u8 value)
{
ES=0; //关闭串口中断
TI=0; //清发送完毕中断请求标志位
SBUF=value; //发送
while(!TI); //等待发送完毕
TI=0; //清发送完毕中断请求标志位
ES=1; //允许串口中断
}
//单片机向模块发送AT指令
void wifi_init()
{
u8 j=0;
u8 a[]="AT+CIPMUX=1\r\n"; //前面说到的那两条掉电后需要重新配置的AT指令
u8 b[]="AT+CIPSERVER=1,6666\r\n";
while(a[j]!='\0')
{
send(a[j]);
j++;
}
j=0; //清零准备发第二条指令
delay1s(); //延时一下
while(b[j]!='\0')
{
send(b[j]);
j++;
}
delay1s();
}
void wifi_data()
{
if(receive[0]=='A') //亮
{
LED1=0;
}
if(receive[0]=='B') //灭
{
LED1=1;
}
if(receive[0]=='C') //灭
{
LED=0x00;
}
if(receive[0]=='D') //灭
{
LED=0xff;
}
}
void main()
{
Init();
wifi_init();
while(1)
{
wifi_data();
}
}
//中断程序,此程序只把+IPD,x,x:后的有用数据存进receive数组里
void ZD() interrupt 4
{
if(RI)
{
RI=0;
if(sign==1)
{
receive[0]=SBUF;
sign=0; //保存receive[0]的数据
}
if(SBUF==':') //等于':'时sign为1,让下一个有用数据放进receive[0]
{
sign=1;
}
}
}
|
-
-
APP.zip
1.29 MB, 下载次数: 7, 下载积分: 一乐金币 -1
|