51单片机多个串口串口传输问题

发送机主要程序:接收机主要程序:... 发送机主要程序:

1.有人在发送数据之前先关闭了

串口中断!等待发送完毕后,再打开串口中断

这样,在发送数据的等待期间内如果收到了数据,将不能进入中断函数也就不会保存的这个新收到的数据。

这种处理方法就会遗漏收到的数据。

2.有人在发送数据の前并没有关闭串口中断,当 TI = 1 时是可以进入中断程序的。

断函数中将 TI 清零!

这样,在主函数中的while(TI ==0);将永远等不到发送结束的标志。

3.還有人在中断程序中并没有区分中断的来源,反而让发送引起的中断执行了接收中断的程

对此,做而论道发表自己常用的方法:

接收數据时使用“中断方式”,清除 RI 后用一个变量通知主函数,收到新数据

发送数据时,也用“中断方式”清除 TI 后,用另一个变量通知主函数数

这样一来,收、发两者基本一致编写程序也很规范、易懂。

更重要的是主函数中,不用在那儿死等发送完毕可以有更哆的时间查看其它的标志。

按你说的要看你的数据长度及波特率,有可能是发送频率过快

注意一下你的发送端的数据长度以及发送频率

发现频率是多少,发送周期应该不少于10mS 你可以用10、20 ms试一下。
应该不是这个问题的因为我是按键按下一次就把四个数发送出去。我把程序截图补发上来了麻烦您帮我看看。
你是按键发送的话这样吧,不知道你那有示波器没你可以把发送端接上示波器,检测一下发送的数据是否正常比如你按键后,它是否发数据出去了是否发正确的数据了。

本回答由广州晓网电子科技有限公司提供

最近在做一个類似的实验一开始总是出错,单片机用

的12MHz晶振设置

9600的波特率,误差很大每个字节的高四的经常出错。后来把波特率设置为4800修

改计數器T1的初值F3,这个精度更高居然没

有出错了。希望有人可以借鉴一下

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手機镜头里或许有别人想知道的答案

我要回帖

更多关于 51单片机多个串口 的文章

 

随机推荐