单片机中的SBUF究竟是什么?

是单片机通过SBUF再通过移位寄存器实现串入并出吗?SBUF=0x80是发送数据吗?那接受数据代码怎么写?... 是单片机通过SBUF再通过移位寄存器实现串入并出吗?SBUF=0x80是发送数据吗?那接受数据代码怎么写? 展开
 我来答
白雪忘冬
高粉答主

2019-12-12 · 在我的情感世界留下一方美好的文字
白雪忘冬
采纳数:1007 获赞数:376535

向TA提问 私信TA
展开全部

SBUF是指串行口中的两个缓冲寄存器,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的,但地址是重叠的。它们都是字节寻址的寄存器,字节地址均为99H。

SBUF,全称:serial data buffer,中文名为串行数据缓冲器。这个重叠的地址靠读/写指令区分:串行发送数据时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收数据时,CPU从SBUF读出数据,此时99H表示接收SBUF。

扩展资料

SBUF 包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。

CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到 来,而造成的数据重叠问题。

发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简 单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作。

如sfr SBUF = 0x99;当然你也可以用其它的名称。通常在标准的reg51.h 或at89x51.h 等头文件中已对其做了定义,只要用#include 引用就可以了。

参考资料来源:百度百科-SBUF

百度网友52e979a1a
推荐于2017-09-01 · TA获得超过3588个赞
知道小有建树答主
回答量:1355
采纳率:100%
帮助的人:1037万
展开全部
单片机里面其实有两个SBUF,但名字都一样,一个只读,一个只写,两个SBUF就是靠读写指令区分。当发送SBUF里有数据时串口就会把数据串行送出;当串口接收到数据时就会把串行数据转成并行数据存在接收SBUF里。
SBUF=0x80是发送数据,要接收数据时这样写:
unsigned char c;//或者char c;
while (!RI); //等待接收数据
RI=0; //需要软件清标志位
c=SBUF; //读取数据
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b76e2f8
2008-11-26 · TA获得超过1103个赞
知道小有建树答主
回答量:1271
采纳率:0%
帮助的人:1109万
展开全部
是串口的寄存器。只要用好就行了,如果想理解原理会越来越乱。我一开始也是很迷糊,现在也还有些迷糊,但是能用就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南霸天mxw
推荐于2017-09-27 · 知道合伙人教育行家
南霸天mxw
知道合伙人教育行家
采纳数:6329 获赞数:169941
本人毕业于河西学院计算机系,本科学位,自2008年毕业以来任九年级数学教师至今。

向TA提问 私信TA
展开全部
  单片机中的SBUF简介:
  SBUF全称serial data buffer,中文名称“串行数据缓冲器”,这个重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,此时99H表示接收SBUF。
  串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式