关于51单片机串口通信接收多位数据

2025-04-14 10:11:54
推荐回答(2个)
回答1:

是你串口中断接收数据百溢出了。应该改为
if(RI)
{
receive[i]=SBUF;
i++;
//此处的i需要定义为度全局变量,不然知你每次都会被清零,也就道是数据永
远都是recive[0]=SBUF;
if(i>?)
//此处填写你的数据最大长度,主内程序中数据分析完自后要对i清零。容
{
i=0;
}
}
if(TI)
{
TI=0;
........//发送程序
}

回答2:

按发送是四个字节一起出去的,...。
----------------------
它们不是“一起”出去的。
实际上,串行口是按照波特率,把一位一位的二进数,顺序送出去的。
51的接收器,也是按照波特率,一位一位的收。
等到收齐了8个位(如55h),就送到sbuf,并且在ri置一;
再接着收,33h、...等等。