关于51单片机串口通信接收多位数据
答案:4 悬赏:40 手机版
解决时间 2021-02-20 04:31
- 提问者网友:蓝莓格格巫
- 2021-02-19 13:06
关于51单片机串口通信接收多位数据
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-02-19 13:55
是你串口中断接收数据溢出了。应该改为
if(RI)
{
receive[i]=SBUF;
i++; //此处的i需要定义为全局变量,不然你每次都会被清零,也就是数据永 远都是recive[0]=SBUF;
if(i>?) //此处填写你的数据最大长度,主程序中数据分析完自后要对i清零。
{
i=0;
}
}
if(TI)
{
TI=0;
........//发送程序
}
if(RI)
{
receive[i]=SBUF;
i++; //此处的i需要定义为全局变量,不然你每次都会被清零,也就是数据永 远都是recive[0]=SBUF;
if(i>?) //此处填写你的数据最大长度,主程序中数据分析完自后要对i清零。
{
i=0;
}
}
if(TI)
{
TI=0;
........//发送程序
}
全部回答
- 1楼网友:酒醒三更
- 2021-02-19 17:43
你干嘛不直接传1个字符8位就好了。
再加上单片机串口通信的字符串接收也不是这样写的,
分太少,给个想法
设置个变量检测是否接收完数据,否则继续接收,接收完成后再将指针指向字符数组的首地址。
再加上单片机串口通信的字符串接收也不是这样写的,
分太少,给个想法
设置个变量检测是否接收完数据,否则继续接收,接收完成后再将指针指向字符数组的首地址。
- 2楼网友:山有枢
- 2021-02-19 16:16
这肯定不对啊,单片机串口通信要有发送函数,接收函数,和串口中断初始化
- 3楼网友:像个废品
- 2021-02-19 15:22
unsigned char receive[];你没定义范围大小
unsigned char receive[10];
还有中断里定义的 i 跟没定义一样,没设置初始值,很容易造成receive溢出,应该设置成全局再主函数里初始化,同时保证 i 不会溢出到receive外。
unsigned char receive[10];
还有中断里定义的 i 跟没定义一样,没设置初始值,很容易造成receive溢出,应该设置成全局再主函数里初始化,同时保证 i 不会溢出到receive外。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯