你好,请问单片机如果是接受一个字符串,怎么保证接受的数据的完整性的

 我来答
百度网友55fc1cd
2016-10-13 · TA获得超过616个赞
知道小有建树答主
回答量:213
采纳率:100%
帮助的人:251万
展开全部

请你参考一下:

  1. 字符串的长度得事先知道,如果是多个字符串,得知道最长的那个字符串的长度,

    根据这个长度定义一个数组,用来存放接收的字符串。

  2. 接收的时候,是一个字节一个字节的接收,接收一个存储一个。

  3. 当收到 0 的时候表示字符串接收完毕。

  4. 举个例子,假设要接收 n 个字符串,最长的字符串其长度为 10,参考代码如下:

#include<reg51.h>

unsigned char receiveStr[11];//用来存放接收的字符串

void main()
{
    SCON=0x50;
    PCON&=0x7F;
    TMOD=TMOD&0x0F|0x20;
    TH1=TL1=0xFD;//假设所用波特率为9600
    IE|=0x90;
    TR1=1;
    
    while(1);
}

void Serial_INT() interrupt 4
{
    static unsigned char i=0;
    if(RI)
    {
        RI=0;
        receiveStr[i++]=SBUF;        
        if(!SBUF)i=0;//如果SBUF==0,表示接收完毕,把 i 清零,下次再接收,就是一
                     //个新的字符串开始了,如果本次接收的字符串长度是 5,
                     //那么receiveStr[0~4]都是有用字符,receiveStr[5]的值是0
                     //用的时候receiveStr[5]里边的 0 就是结束标志
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式