传感器通过485通讯发送数据给单片机,然后单片机通过WiFi发送到电脑,但是数据一直都是错误的。。。。 5

用的是发送九位数据的传感器,WiFi模块是ESP8266,电脑接到的数据都是错误的,并不是传感器的数据,不知道问题出在哪,请大神求救#include<reg52.h>#i... 用的是发送九位数据的传感器,WiFi模块是ESP8266,电脑接到的数据都是错误的,并不是传感器的数据,不知道问题出在哪,请大神求救
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int

sbit RS485_DIR = P1^7; //RS485方向选择引脚
uchar bufRxd[9]={0};
uint num0=0;
uint cnt=0;
void g485_init()
{
RS485_DIR = 0; //RS485设置为接收方向
TMOD |= 0x20; //配置T1为模式2
TH1 = 0xfd; //计算T1重载值9600
TL1 = 0xfd; //初值等于重载值
SCON = 0x50; //配置串口为模式1
ES = 1; //使能串口中断
TR1 = 1; //启动T1
REN = 1;
EA = 1;
}
void DelayX10us(uchar t)
{
do {
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
} while (--t);
}

void g485_send(uchar dat)
{
RS485_DIR = 1;
SBUF = dat;
while(!TI);
TI = 0;
DelayX10us(5);
RS485_DIR = 0;
}

void gy_cmd1();
void init_esp();

void main()
{
uint a = 0;
g485_init();
init_esp();
while(1)
{
gy_cmd1();
TI = 1;
EA = 0;
for (a=0; a<20000; a++);
printf ("AT+CIPSEND=0,4\n");
for (a=0; a<20000; a++);
printf ("%d\n",num0);
DelayX10us(10);
TI = 0;
EA = 1;
}
}

void gy_cmd1()
{
g485_send(0xA5);
g485_send(0x09);
g485_send(0xAE);
}
void init_esp()
{
uint a;
TI = 1;
ES = 0;
for (a=0; a<50000; a++); //延时几秒,让模块有时间启动
printf ("AT+CWMODE=2\n"); //设置为softAP模式

for (a=0; a<30000; a++);
printf ("AT+RST\n"); //重新启动模块

for (a=0; a<50000; a++);
printf ("AT+CIPMUX=1\n"); //启动多连接

for (a=0; a<20000; a++);
printf ("AT+CIPSERVER=1,8080\n");

for (a=0; a<20000; a++);
TI = 1;
ES = 1;
}
//char cnt;

/* 串口中断服务函数 */
void InterruptUART() interrupt 4
{
if (RI) //接收到新字节
{
RI = 0; //清零接收中断标志位
if (cnt < 9) //接收缓冲区尚未用完时,
{ //保存接收字节,并递增计数器
bufRxd[cnt++] = SBUF;
}
if(cnt == 8)
{
uint a = 0;
cnt = 0;
num0 = (bufRxd[4]<<24)|(bufRxd[5]<<16)|(bufRxd[6]<<8)|(bufRxd[7]);
num0 = num0/100;
gy_cmd1();
}

}
}
展开
 我来答
lycdl
高粉答主

2018-04-17 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4877万
展开全部
你这程序编译没有错误吗?在子程序中声明变量
uint a=0;
前面有可执行语句,这声明是无效的,这是keil的语法规定的,不同于c语言的语法。
更多追问追答
追问
这是宏定义来的
追答
你可以通过wifi 发送一组固定的数据,先不发传感器的数据,再看电脑收的数据对不对,这样,就可以查出在哪个环节出错的。调试程序,要分开调试,才好找原因。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式