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端
就是想让单片机向电脑发送一串字符串 就发送一遍 但是我的问题出现在一直循环发送这串字符串