请教一个单片机8位串口发送的问题

我从电脑向单片机发数据,单片机是8位的,发0-255之间没问题,可是发大于255的,即两个字节的,这怎么发送啊?因为单片机每次只接收一个字节。... 我从电脑向单片机发数据,单片机是8位的,发0-255之间没问题,可是发大于255的,即两个字节的,这怎么发送啊?因为单片机每次只接收一个字节。 展开
 我来答
智趣派
2010-07-23 · TA获得超过3116个赞
知道小有建树答主
回答量:729
采纳率:100%
帮助的人:1006万
展开全部
由于你把8位的所有位数都用作表示数字,所以导致255以内的数和255以上的数无法分开。
这个问题的关键是怎么让电脑知道你什么时候发的数字是8位的,什么时候发的数字是16位拆成两个8位的对吧!
我这里说一个方法吧!你可以把8位全一作为一个判断符,如果电脑受到一个全一的字符,那么接受到的下两个字节就进行拼接。
例如需要发送254,那么直接发送一个字节即可。
如果发送255,可以这样:
先发送 11111111
然后发送 00000000 11111111
这样拼接得到255
如果是发送 1024,可以这样:
先发送 11111111
然后发送 00000100 00000000

当然,这样可能传输效率有所降低,但也不会太差!
下一秒笑靥如花47
2010-07-23 · TA获得超过475个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:221万
展开全部
一个字节一个字节的发呗,比方说你先发高字节的单片机接收并存放在30H中,延迟一会再发低字节的存放在31H中,到时候在单片机中用的时候你只要记住30H中放的是高字节,31H中放的是低字节就行了。
当然啦你需要在单片机接收完第一个字节的数据后将RI清零,再发送下一个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酷酷看来看去
2010-07-23 · TA获得超过661个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:146万
展开全部
int_h = 原变量/100
int_l = 原变量%100
这样就把原来的16位数变成了两个8位数
就可以正常发送了
到了单片机以后再定义一个long型的
long = int_h*100+int_l

搞定收工
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2010-07-23 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
正确的说法是:UART(通用异步串行通信接口)传送的一帧数据,是8位二进制数。
利用这种接口,可以传送8的任意整数倍位数的数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式