51单片机发送int型数据时,如 int a;能直接SBUF=a;吗? 据说单片机发送缓冲区没有设置为双缓冲结构。。

那发送int型数据时单片机是怎么操作的?inta;SBUF=a;编译的时候没有错误,那么单片机执行的时候,是怎么执行的呢?先送低八位,串口就开始发送,再送高八位,是不是就... 那发送int型数据时单片机是怎么操作的?
int a;
SBUF=a;
编译的时候没有错误,那么单片机执行的时候,是怎么执行的呢?
先送低八位,串口就开始发送,再送高八位,是不是就覆盖了还没有发送的低八位?

对串口发送这一块真是摸不透啊
展开
 我来答
huzengpan
2011-04-17 · TA获得超过1499个赞
知道小有建树答主
回答量:1199
采纳率:84%
帮助的人:426万
展开全部
不粗戚行啊,SBUF是一个八位的啊,int型的当然不行啊
你可以先将它分离,拆凳岩主机收到之后再把它还原就行了嘛,比如
int temp
char h,l;
h=temp/256;
l=temp%256;这样就把它分开了旅御啊
收到之后再合成
tttee=h*256+l;这样就行了吧
happyming0809
2011-04-17 · TA获得超过757个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:321万
展开全部
这个肯定要分开的啦。int的范围是-32768到32768的。如果是unsigned就是0到65536.是双字节的。如哗段果你要发送到单片机的话肯定要发送两次的啦。如果先发送高字节再发送低字节。你接收的时候再处理吗。这样就可以了。不可能一次都能接收问int的。因为尘棚SBUF是单派芦则字节的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ATF144X
推荐于2016-04-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4609万
展开全部
SUBF在发送16位数据时,只把低8位(低字节)的内容发送了咐雀,高字节的被抛弃。

如衡物早果要想发送完整的int,就需要蚂启将int型数据分为两个字节分别发送,接收的那一方将收到的2字节重新组合成int。

执行过程可以看DEBUG模式下产生的汇编代码。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
超级大木头人
2011-04-17
知道答主
回答量:55
采纳率:0%
帮助的人:23.1万
展开全部
不行 int 占四个字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大悠炫悠予13
2012-05-02
知道答主
回答量:1
采纳率:0%
帮助的人:1619
展开全部
正确的扮腊方式是,
SBUF=a;
等发送盯锋寄存器凯缺晌空闲后,再
SBUF=a>>8;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式