单片机如何接收上位机传来的字符串?

2020-01-23 14:31发布

问题是:如何完整的接收上位机发送过来的字符串(如:abcdef),而不是单字符,上位机如果发送字符串是不是连续不停的发送?即使我们在取SBUF寄存器的数据,但在这时上位机还在不停的发送后一个字节的数据。求高手过招..给个整个理解过程,有代码就更为好了!小弟在此谢过了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
mcu_lover
1楼-- · 2020-01-24 21:48
xtl2012 发表于 2013-2-27 08:23
是不是只需要在中断函数里面读取下来就ok?然后每来一个字符就进中断一次就读取一次? ...

接收中断里面把数据读取到缓冲区,主循环解析这个缓冲区即可。
laujc
2楼-- · 2020-01-24 22:59
xtl2012 发表于 2013-2-27 08:21
嗯,上位机发送一个字符串,下位机利用串口中断RI 来接收,即中断一次就进入中断函数接收一个字符(例:reciv ...

是连续接收到8bit后,才放到buf中的.
有的单片机,当所有buf里都有接收的数据,而且没有被读取,就不会更新buf,而是产生一个溢出标志或溢出中断.

连续接收8bit数据,需要一段时间,在接收完成后,立即产生中断,中断后读取buf的时间很短的,几个指令周期就够了,远小于接收8bit的时间.
不会产生影响.
r166
3楼-- · 2020-01-25 04:56
本帖最后由 r166 于 2013-2-27 11:12 编辑
xtl2012 发表于 2013-2-27 08:21
嗯,上位机发送一个字符串,下位机利用串口中断RI 来接收,即中断一次就进入中断函数接收一个字符(例:reciv ...


单片机不会那样弱智的,你要读取的数据的正在接受的数据不在同一个地方的,除非没有及时取走,否则是不会覆盖,

芯片使用前数据手册还是要仔细看一看的。
xtl2012
4楼-- · 2020-01-25 04:57
 精彩回答 2  元偷偷看……
xtl2012
5楼-- · 2020-01-25 07:49
r166 发表于 2013-2-27 11:10
单片机不会那样弱智的,你要读取的数据的正在接受的数据不在同一个地方的,除非没有及时取走,否则是不会 ...

thanks!!!!
mengfc
6楼-- · 2020-01-25 12:43
单片机只能一个字符一个字符进行接收,如果需要接收字符串需在的单片机程序中进行判断。如在传输过程中设置特殊字符、使用定时器设置超时时间等。

一周热门 更多>