让SBUF接收的数据存到外部RAM定义的数组时发现数组里很多...

2020-02-05 09:03发布

如题,紧急求解。我让SBUF接收的数据存到外部RAM定义的数组时发现数组里很多数接收的不对为什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
eduhf_123
1楼-- · 2020-02-05 09:54
没看到代码,不敢随便下结论,但估计可能出现的问题:
波特率设置不对、晶体频率不准、对SBUF寄存器的重复读操作、发送方速度太快导致接收方处理不过来。
nydns
2楼-- · 2020-02-05 14:36
eduhf_123 发表于 2012-5-27 17:40
没看到代码,不敢随便下结论,但估计可能出现的问题:
波特率设置不对、晶体频率不准、对SBUF寄存器的重复 ...

加个延时试试...

我问一下.
用串口调试助手发送一个字符串.
SBUF是一次性接收 还是分几次接收呢
eduhf_123
3楼-- · 2020-02-05 18:30
nydns 发表于 2012-6-13 16:25
加个延时试试...

我问一下.
用串口调试助手发送一个字符串.
SBUF是一次性接收 还是分几次接收呢


在这个区就是51单片机了,对51单片机来说,SBUF只有1个字节的深度。
nydns
4楼-- · 2020-02-05 19:32
eduhf_123 发表于 2012-6-13 17:47
在这个区就是51单片机了,对51单片机来说,SBUF只有1个字节的深度。

就51来说.串口中断接收abc这三个字节.是产生一次中断还是三次中断.
zhxzhx
5楼-- · 2020-02-05 21:34
 精彩回答 2  元偷偷看……
eduhf_123
6楼-- · 2020-02-06 03:31
nydns 发表于 2012-6-13 22:09
就51来说.串口中断接收abc这三个字节.是产生一次中断还是三次中断.


这个不一定的,要看中断服务程序是怎么写的。

如果中断服务程序中是读完SBUF就清空RI标志并退出,那么就是产生三次中断。

如果中断服务程序里是把协议处理完才退出,那么就只产生一次中断,只是这个过程中RI标志位被置位了3次。

一周热门 更多>