运行到红线再向下就不动了,之前为了检查是哪一条开始卡住,在每条指令间插入了小灯亮灭,也就是观察到了亮、灭
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P1^3;u8 dat;
sbit LED1 = P1^2;
void Init(void);//串口初始化函数
void Delay_ms(u16 n);//延时子函数
void Sent_ZF(u8 dat);//发送一个字节
void AT_Send_String(u8 *string);//发送字符串
void ESP8266_Init();//ESP8266初始化
void Init(void) //串口初始化函数
{
TMOD = 0x20; //定时器工作方式2,8位自动重载(0010 0000)
TL1 = 0xfd; //装入初值
TH1 = 0xfd;
TR1 = 1; //启动定时器1
REN=1; //允许串行口接收数据
SM0=0; //工作方式1,10位异步收发
SM1=1;
EA = 1; //打开全局中断控制
ES=1; //打开串行口中断
}
void main()
{
Init();
ESP8266_Init();
while(1);
}
void Sent_ZF(u8 dat) //发送一个字节
{
ES = 0;
TI=0;
SBUF = dat;
while(!TI);
TI = 0;
ES = 1;
}
void Delay_ms(u16 n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void AT_Send_String(u8 *string) //发送字符串
{
while(*string)
{
Sent_ZF(*string++);
Delay_ms(5);
}
}
void ESP8266_Init() //esp82663?ê??ˉ
{ LED1=1;
Delay_ms(1000);
Delay_ms(1000);
AT_Send_String("AT\r\n"); //测试AT指令
Delay_ms(1000);
Delay_ms(1000);
LED1=0;
AT_Send_String("AT+CWSAP=xhwang2019,12345678\r\n"); //
Delay_ms(1000);
Delay_ms(1000);
LED1=1;
}
void InterruptUART() interrupt 4
{
RI = 0; //清零
dat = SBUF; //收到的数据占存到SBUF中
{
if(dat=='o')
{
LED =0;
}
if(dat=='f')
{
LED =1;
}
}
}
|