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

我从电脑向单片机发数据,单片机是8位的,发0-255之间没问题,可是发大于255的,即两个字节的,这怎么发送啊?因为单片机每次只接收一个字节。

由于你把8位的所有位数都用作表示数字,所以导致255以内的数和255以上的数无法分开。
这个问题的关键是怎么让电脑知道你什么时候发的数字是8位的,什么时候发的数字是16位拆成两个8位的对吧!
我这里说一个方法吧!你可以把8位全一作为一个判断符,如果电脑受到一个全一的字符,那么接受到的下两个字节就进行拼接。
例如需要发送254,那么直接发送一个字节即可。
如果发送255,可以这样:
先发送 11111111
然后发送 00000000 11111111
这样拼接得到255
如果是发送 1024,可以这样:
先发送 11111111
然后发送 00000100 00000000

当然,这样可能传输效率有所降低,但也不会太差!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-23
一个字节一个字节的发呗,比方说你先发高字节的单片机接收并存放在30H中,延迟一会再发低字节的存放在31H中,到时候在单片机中用的时候你只要记住30H中放的是高字节,31H中放的是低字节就行了。
当然啦你需要在单片机接收完第一个字节的数据后将RI清零,再发送下一个字节。
第2个回答  2010-07-23
int_h = 原变量/100
int_l = 原变量%100
这样就把原来的16位数变成了两个8位数
就可以正常发送了
到了单片机以后再定义一个long型的
long = int_h*100+int_l

搞定收工
第3个回答  2010-07-23
正确的说法是:UART(通用异步串行通信接口)传送的一帧数据,是8位二进制数。
利用这种接口,可以传送8的任意整数倍位数的数据。