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

2020-01-23 14:31发布

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









mcu_lover
2楼-- · 2020-01-23 22:24
中断+缓冲
laujc
3楼-- · 2020-01-24 03:08
字符是一个bit一个bit发来的,接收时,接收8bit就收到一个字节的内容,会放到缓存中.
缓存大小有不同,有的单片机就一个,即一个byte.这样接收到8bit即一byte就要主程序进行读取,读取的同时,硬件会继续接收接下来的bit

也有的缓存较大,这样就可以接收多个字节,程序再一次读取全部接收到的byte
不论是字母,如abc,还是数字123.都是传输的二进制数,两边协议相同就不会错.
xtl2012
4楼-- · 2020-01-24 08:57
laujc 发表于 2013-2-26 23:11
字符是一个bit一个bit发来的,接收时,接收8bit就收到一个字节的内容,会放到缓存中.
缓存大小有不同,有的单片 ...

嗯,上位机发送一个字符串,下位机利用串口中断RI 来接收,即中断一次就进入中断函数接收一个字符(例:recive=SBUF),但在接收字符的同时,上位机也在继续发接着后一个字符的数据,那在这时候我们在中断函数中读取的那个字符会不会已经被修改过了?从而导致乱码.?
xtl2012
5楼-- · 2020-01-24 13:44
 精彩回答 2  元偷偷看……
xtl2012
6楼-- · 2020-01-24 18:43
mcu_lover 发表于 2013-2-26 22:57
中断+缓冲

是不是只需要在中断函数里面读取下来就ok?然后每来一个字符就进中断一次就读取一次?

一周热门 更多>