51单片机串口通信程序 只需要接收缓冲区收到一串字符串 但是字符串一

51单片机串口通信程序 只需要接收缓冲区收到一串字符串 但是字符串一直发送 无法停止求解决 程序如下
void SendData(unsigned char x)

{

while(busy);

busy = 1;

SBUF = x;

}

void SendString(unsigned char *string)

{

while(*string)

SendData(*string++);

}

void Uart_Isr() interrupt 4 using 1

{

unsigned char i = 0;

if(RI)

{

RI = 0;

if('\n' != SBUF)

receivebuff[i++] = SBUF;

else

{

receivebuff[i] = '\0';

i = 0;

SendString(receivebuff);

}

}

if(TI)

{

TI = 0;

busy = 0;

}

}

只需要接收缓冲区收到一串字符串 但是字符串一直发送...
--题目,看不明白。
--你收到一串就不用再收了,你管他发不发干嘛?追问

关键是我收到不止一串 会不断的收到 单片机会不断发送给pc端 没有停止

追答

收到了,确认无误后,应该给对方一个回信。
对方,就不发送了。
-------------------
双方通信,要制定一个协议,双方都要遵守。
数据的头,是什么字节;
数据的字节数,是多少;
数据的末位,是什么校验方法;
。。。。。。
你的协议是怎么制定的?

追问

协议?数据帧的发送协议吗?

追答

你百度一下《串行通信协议》吧。

追问

我的程序中有判断是否结束的while字符串发送函数 我明白串口通信协议意思 最开始加过这个判断是不是发送完毕 但是完全不管用 一直在循环发送给pc端

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-02
51单片机串口通信程序设计有什么要求。追问

就是想让单片机向电脑发送一串字符串 就发送一遍 但是我的问题出现在一直循环发送这串字符串

相似回答