您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 基于STC89C52RC的ESP8266WIFI模块调试源码
CONFIG.H文件://///////////////////////////////////////////////////////////////////#ifndef_CONFIG_H#define_CONFIG_H/*通用头文件*/#includereg52.h#includeintrins.h/*数据类型定义*//*typedefsignedcharint8;//8位有符号整型数typedefsignedintint16;//16位有符号整型数typedefsignedlongint32;//32位有符号整型数*/typedefunsignedcharu8;//8位无符号整型数typedefunsignedintu16;//16位无符号整型数typedefunsignedlongu32;//32位无符号整型数/*全局运行参数定义*/#defineSYS_MCLK(11059200/12)//系统主时钟频率,即振荡器频率÷12/*IO引脚分配定义*/sbitKEY_IN_1=P2^4;//矩阵按键的扫描输入引脚1sbitKEY_IN_2=P2^5;//矩阵按键的扫描输入引脚2sbitKEY_IN_3=P2^6;//矩阵按键的扫描输入引脚3sbitKEY_IN_4=P2^7;//矩阵按键的扫描输入引脚4sbitKEY_OUT_1=P2^3;//矩阵按键的扫描输出引脚1sbitKEY_OUT_2=P2^2;//矩阵按键的扫描输出引脚2sbitKEY_OUT_3=P2^1;//矩阵按键的扫描输出引脚3sbitKEY_OUT_4=P2^0;//矩阵按键的扫描输出引脚4sbitADDR0=P1^0;//LED位选译码地址引脚0sbitADDR1=P1^1;//LED位选译码地址引脚1sbitADDR2=P1^2;//LED位选译码地址引脚2sbitADDR3=P1^3;//LED位选译码地址引脚3sbitENLED=P1^4;//LED显示部件的总使能引脚#defineLCD1602_DBP0//1602液晶数据端口sbitLCD1602_RS=P1^0;//1602液晶指令/数据选择引脚sbitLCD1602_RW=P1^1;//1602液晶读写引脚sbitLCD1602_E=P1^5;//1602液晶使能引脚sbitDS1302_CE=P1^7;//DS1302片选引脚sbitDS1302_CK=P3^5;//DS1302通信时钟引脚sbitDS1302_IO=P3^4;//DS1302通信数据引脚sbitI2C_SCL=P3^7;//I2C总线时钟引脚sbitI2C_SDA=P3^6;//I2C总线数据引脚sbitBUZZER=P1^6;//蜂鸣器控制引脚sbitIO_18B20=P3^2;//DS18B20通信引脚sbitIR_INPUT=P3^3;//红外接收引脚#includeLcd1602.h#includeUART.H#includeTIME.H#includeSTA.H#includestring.hexternu8WIFILED;#endif//////////////////////////////////////////////////////////////////////TIME.C文件:////////////////////////////////////////////////////////////////////#includeconfig.hu16UART_CNT;u8T0RH,T0RL;voiddelay10us(){{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voiddelay1ms(){u8i;for(i=0;i100;i++){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voiddelayms(u16ms){u16is;for(is=0;isms;is++)delay1ms();}/*定时器0配置*/voidTIME0_Init(u16ms){unsignedlongtmp;//临时变量tmp=11059200/12;//定时器计数频率tmp=(tmp*ms)/1000;//计算所需的计数值tmp=65536-tmp;//计算定时器重载值tmp=tmp+18;//补偿中断响应延时造成的误差T0RH=(unsignedchar)(tmp8);//定时器重载值拆分为高低字节T0RL=(unsignedchar)tmp;TMOD&=0xF0;//清零T0的控制位TMOD|=0x01;//配置T0为模式1TH0=T0RH;//加载T0重载值TL0=T0RL;ET0=1;//使能T0中断TR0=1;//启动T0}/*定时器0中断*/voidIRQ_TIME0()interrupt1{TH0=T0RH;//加载T0重载值TL0=T0RL;UART_CNT++;if(UART_CNT=800){RX_END_FLG=1;TX_END_FLG=1;WIFI_SHOW_RX_DATA();TR0=0;}}/////////////////////////////////////////////////////////////////////////////UART.C串口协议://///////////////////////////////////////////////////////////////////////////////#includeconfig.hu8TX_BUF[32];u8RX_BUF[32];u8RX_INDEX;u8TX_INDEX;bitRX_END_FLG;bitTX_END_FLG;voidUART_Init(u16baud){SCON=0x50;//配置串口为模式1TMOD&=0x0F;//清零T1的控制位TMOD|=0x20;//配置T1为模式2TH1=256-(11059200/12/32)/baud;//计算T1重载值TL1=TH1;//初值等于重载值ET1=0;//禁止T1中断ES=1;//使能串口中断PT1=1;TR1=1;//启动T1}/*检查期待返回值ACK*/bitCheck_CMD(u8*str){u8i=0,j;for(i=0;RX_BUF[i]!='\0';i++)//查找关键字{if(RX_BUF[i]==(*str))//首字节相同,匹配后续字节{for(j=1;*(str+j)!='\0';j++){if(RX_BUF[i+j]!=(*(str+j)))return0;//关键字不匹配}return1;//关键字匹配成功}}return0;//关键字未找到}/*发送字符串*//*检测等待超时ms:waittime*//*检测项:ack*/u8WIFI_TX_DATA(u8*DATA,u8*ack,u16waittime){SBUF=*DATA;//先发送抗干扰字节while(!TX_END_FLG);//等待发送完毕TX_END_FLG=0;//清除结束标志SBUF=*DATA;//先发送抗干扰字节while(!TX_END_FLG);TX_END_FLG=0;for(DATA=&DATA[0];*DATA!='\0';DATA++)//循环发送AT指令字节{SBUF=*DATA;while(!TX_END_FLG);TX_END_FLG=0;}SBUF=0X0D;//添加AT指令结束符while(!TX_END_FLG);TX_END_FLG=0;SBUF=0X0A;//添加AT指令结束符while(!TX_END_FLG);TX_END_FLG=0;if((*ack)&&waittime){waittime+=111;while(waittime111){delayms(100);//延时100msif(RX_END_FLG==1){RX_END_FLG=0;if(Check_CMD(ack))//检测ACK{WIFILED&=0XEF;return1;}}waittime-=100;}}WIFILED|=0X10;return0;//超时检测失败}/*接收字符串并执行相应操作*/voidWIFI_SHOW_RX_DATA(){RX_BUF[RX_INDEX]='\0';LcdShowStr(0,1,RX:);LcdShowStr(4,1,);LcdShowStr(4,1,&RX_BUF[11]);}/*UART中断服务函数*/voidIRQ_UART()interrupt4{if(RI)//接收到字节{RI=0;UART_CNT=0;if(!TR0){RX_INDEX=0;UART_CNT=0;RX_END_FLG=0;TR0=1;}if(RX_INDEX=30)RX_BUF[RX_INDEX++]=SBUF;else{RX_END_FLG=1;//强制标记接收完成RX_INDEX=0;//清零接收位置}}if(TI){TI=0;TX_END_FLG=1;}}//////////////////////////////////////////////////////////////////////STA.C:STA模式/////////////////////////////////////////////////////////////////////#includeconfig.hpdatau8name[]=sferhua;//热点名称pdatau8unkey[]=303000000;//APCONFIG[14]解锁密匙pdatau8TCP_IP[]=10.1.4.133;//TCP服务器地址pdatau8TCP_PORT[]=8086;//TCP服务器端口pdatau8UDP_IP[]=172.23.22.2;//UDP服务器地址pdatau8UDP_PORT[]=8051;//UDP服务器端口/*AP默认配置前缀*///910NAMEpdatau8STACONFIG[48]={0X41,0X54,0X2B,0X43,0X57,0X4A,0X41,0X50,0X3D,0X22};/*TCP默认客户端配置前缀*///TCP,pdatau8STATCP[48]={0X41,0X54,0X2B,0X43,0X49,0X50,0X53,0X54,0X41,0X52,0X54,0X3D,0X22,0X54,0X43,0X50,0X22,0X2C,0X22};/*UDP默认配置前缀*///UDP,pdatau8STAUDP[48]={0X41,0X54,0X2B,0X43,0X49,0X50,0X53,0X54,0X41,0X52,0X54,0X3D,0X22,0X55,0X44,0X50,0X22,0X2C,0X22};/*PIN命令前缀,检测IP是否链接上*///9pdatau8STAPIN[48]={0X41,0X54,0X2B,0X50,0X49,0X4E,0X47,0X3D,0X22,0X31};/*配置生成*/voidMade_Config(){u8i=10;u8*p;p=&name[0];while(*p!='\0'){STACONFIG[i++]=*p++;}STACONFIG[i++]=0X22;STACONFIG[i++]=0X2C;STACONFIG[i++]=0X22;p=&unkey[0];while(*p!='\0'){STACONFIG[i++]=*p++;}STACONFIG[i++]=0X22;STACONFIG[i]='\0';//STA模式初始化数组i=19;p=&TCP_IP[0];while(*p!='\0'){ST
本文标题:基于STC89C52RC的ESP8266WIFI模块调试源码
链接地址:https://www.777doc.com/doc-4621946 .html