51单片机接收多字节数据 串口通信

最近看串口,突然有个问题没想明白,
如果我用串口调试助手发送多个字节的16进制数,例如:55 33 aa 44等,按发送是四个字节一起出去的,但是51的SBUF只能装一个字节的数据,剩下的数据怎么办那。当然我知道肯定能接收正确,我就是不理解这个是如何接收的。

按发送是四个字节一起出去的,...。
----------------------
它们不是“一起”出去的。
实际上,串行口是按照波特率,把一位一位的二进数,顺序送出去的。

51的接收器,也是按照波特率,一位一位的收。
等到收齐了8个位(如55H),就送到SBUF,并且在RI置一;
再接着收,33H、...等等。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-31
我的理解是这样的:
发送时是4个字节依次出去的,他们之间有时间间隔的,间隔的时间与波特率有关,发送每个字节的时间(以1个起始位,1个停止位,无校验位为例)=波特率的倒数*10,最快不过10u秒的时间(1M的速度),对于速度快的单片机来说已经可以执行很多条语句了,每个字节都能收到的。
第2个回答  2010-08-01
可以看看串口通讯协议。按照预先设置的波特率,每发送一个字节前发送方都会询问接收端是否ready,在对方ready的情况下才串行发送(起始位,8位数据,停止位),然后再检测对端是否ready,周而复始。

接收端接收到数据后硬件置位RI,等待单片机取走数据(在单片机没有取走数据的时候,发送端查询是否ready是否回答NO)。取走数据后进入空闲等待状态
第3个回答  2010-08-08
单片机是一个字节一个字节的依次接收的
相似回答