串口传输数据问题?

降龙2009 2012-03-28 07:26:41
单片机用串口传输数据,不加帧头和帧尾,是不是有数据丢失的现象,如果加上帧头和帧尾,是不是就可以解决丢包或者错位的现象了。
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_friends 2012-03-29
  • 打赏
  • 举报
回复
如果丢了整个帧呢?
AnYidan 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
帧头和帧尾只是通信协议规定,让你知道你是不是丢了(错了)数据,如果丢了数据,你就可以要求主机重发或其他操作
并不会因为有帧头和帧尾就不丢数据
[/Quote]

如果丢了整个帧呢?
falloutmx 2012-03-29
  • 打赏
  • 举报
回复
如果你串口是通过UART协议传的,就不用管帧头帧尾,它自己会有起始位和停止位的,只要线路干扰不大,都不会要校验,这种低速设备不可能出现数据丢失的情况,跟UDP可不一样。
chenlunju 2012-03-29
  • 打赏
  • 举报
回复
加上帧头帧位 防止错位,防止误读,有必要还加校验和
durant 2012-03-28
  • 打赏
  • 举报
回复
帧头和帧尾只是通信协议规定,让你知道你是不是丢了(错了)数据,如果丢了数据,你就可以要求主机重发或其他操作
并不会因为有帧头和帧尾就不丢数据
东旭 2012-03-28
  • 打赏
  • 举报
回复
void timer1_init()
{
TMOD |= 0x20;
TH1 = TL1 = 0xF3;
TR1 = 1;
SM0 = 0; SM1 = 1;//串行通信工作在模式1即是10位异步串行通信
SM2 = 0; //不允许多级通信
REN = 0; //不允许接收数据
}//定时器已经设置好

void send_8bit(unsigned char)
{
SBUF = dat;
while(TI == 0);
TI = 0; //等8位数据发送完TI至0
}

这样你要发出去的数据就可以发送出去了额,这里起始位和停止位都只有一位,自动加上,不需要你来加
如果你要实现自己控制一位一位的发送,就必须加上起始位和停止位,否则发送不会成功。
我也学习单片,正好前天我自己上传了个资源,里面有4中发送一个字符串的程序,有兴趣可以下载看下!!

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧