51单片机发送asd ,串口调试助手收到asd,但是wifi模块(HLK-RM04)发送到WIFI模块串口收到的就不是asd而是其他内容。反之wifi发的和单片机收到的也不一样。求帮忙解决。 以下程序 #include //包含单片机寄存器的头文件 #define uchar unsigned char #define uint unsigned int #define LED P1 sbit S1=P3^5; sbit S2=P3^4; sbit S3=P3^3; sbit S4=P3^2; uchar WIFI_receive[20]; uchar WIFIDATA_count; uchar num,a; uchar jieshou; void Uart_Init(void); void Send_Char (uchar UART_data); void Send_String(uchar *str); void sendString(uchar *s); void Send_number (unsigned int number); void Send_Uart(uchar value); void ESP8266_Set(uchar *puf); void us_delay(uchar t); /* ******************************************************************************** ** 函数名称 : main(void) ** 函数功能 : 主函数 ******************************************************************************** */ void main() { unsigned char Tx_Buf[19]; Uart_Init(); S1=S2=S3=S4=1; while(1) { Tx_Buf[0]=1+0X30;Tx_Buf[1]=5+0X30;Tx_Buf[2]=9+0X30; if(S1==0) {while(S1==0);ESP8266_Set(Tx_Buf);} if(S2==0) {while(S2==0);sendString("as");} if(num==1) //判断是否有串口数据的传送 { ES=0; num=0; SBUF=a; //发送数据a到SBUF,即将单片机的数据发送到计算机 while(!ti); TI=0; ES=1; } } } void Uart_Init(void) { EA=1; ES=1; SCON = 0x50; TMOD = 0x20; PCON=0x00; TH1 = 0xFD; TL1 = 0xfd; TR1 = 1; RI = 0; // TMOD=0x20; //用定时器设置串口波特率 9600 // TH1=0xfd; // TL1=0xfd; // TR1=1; // REN=1; // SM0=0; // SM1=1; // EA=1; // ES=1; } void Send_Char (uchar UART_data) { SBUF = UART_data; while(TI == 0); TI = 0; } void Send_String(uchar *str) { while(*str != '\0') { Send_Char(*str); *str=*str++; } *str = 0; } void sendString(uchar *s) { while(*s!='\0') { Send_Char(*s); s++; } } void Send_number (unsigned int number) { SBUF = number; while(TI == 0); TI = 0; } void us_delay(uchar t) { while(t--); } void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组 { while(*puf!='\0') //遇到空格跳出循环 { Send_Uart(*puf); //向WIFI模块发送控制指令。 us_delay(5); puf++; } // us_delay(5); // Send_Uart('\r'); //回车 // us_delay(5); // Send_Uart('\n'); //换行 } void Send_Uart(uchar value) { ES=0; //关闭串口中断 TI=0; //清发送完毕中断请求标志位 SBUF=value; //发送 while(TI==0); //等待发送完毕 TI=0; //清发送完毕中断请求标志位 ES=1; //允许串口中断 TH0=0X00; TL0=0X00; } void ser() interrupt 4 { if(RI) { ES=0; RI=0; WIFI_receive[WIFIDATA_count]=SBUF; if(WIFI_receive[WIFIDATA_count]=='\n') { WIFIDATA_count=0; } else { WIFIDATA_count++; if(WIFIDATA_count>12) WIFIDATA_count=0; } ES=1; } }
|