51单片机,当我用串口在文本模式下,发送了一个字符串ABCDEFGH,然后我怎么把sbuf赋值给一个数组

if(RI)
{i=sbuf
RI=0
}
这时候我的i是不是只收到一个字节A。

是的,因为if(Ri)判断为真的时候,执行大括号里面的代码,RI = 0之后,下次循环if(Ri==0)了,跳过该循环,故只收到一个字节追问

那我应该怎么把sbuf里面的字节全部读取完

追答

假设SBUF字符串存在数组b[j]中,j=0,1,2 ... 7;
要读取的字符放到数组a[i]中;
int i=0,j=0,k=0;
if(b[j] != '\0') //数组b[j] 字符串没有到最后一个
{
a[i] = b[j];

i++;

j++;

}
for(k=0;k≤i;k++)
{
printf("%d/n",&a[k]);

}
写代码软件都没有了,在回答框手打的,可能需要你适当修改下,加上头文件,数组定义等

追问

我昨天是这样写的 uchar a[9],i=0; if(RI==1) { RI=0; a[i]=SBUF; i++; if(i>=9) { i=0; } } 然后把这个数组显示在显示屏上,不过怎么输入,显示屏都只能出现第一个字符,剩下的都是一个有规则的图形,所以这个数组只读取到了SBUF8个字符串的第一个

温馨提示:答案为网友推荐,仅供参考
相似回答