智能车制作

标题: xs128怎么发送一个大于255的数到上位机 [打印本页]

作者: yEs、先生    时间: 2013-1-26 11:25
标题: xs128怎么发送一个大于255的数到上位机
xs128的SCI0DRL只能发送小于255的数,如果我发送数据10000,我写为
SCI0DRL=10000%256;
SCI0DRH=10000/256;
为什么这样就不行呢?


作者: mingongB    时间: 2013-1-26 15:50
那就用SCI0DRL发两次。。另一边懂得读就好了
作者: yEs、先生    时间: 2013-1-26 18:06
mingongB 发表于 2013-1-26 15:50
那就用SCI0DRL发两次。。另一边懂得读就好了

嗯,我试试看

作者: 新竹    时间: 2013-1-27 17:05
SCI0DRL=(uint16)10000%256
作者: yEs、先生    时间: 2013-1-28 13:22
新竹 发表于 2013-1-27 17:05
SCI0DRL=(uint16)10000%256

这个我不懂诶

作者: 洋葱圈    时间: 2013-1-28 14:24
你的数已经是16位的了,而串口1次只能发1个字节,即8位的数据,因此应该将16位数拆分为2个字节。依次发送,最后再组合起来。
  1. #define BUILD_UINT16(LO_UINT8, HI_UINT8)   (uint16)(LO_UINT8 | ((uint16)HI_UINT8<<8))
  2. #define LO8(UINT16)                        (uint8)(UINT16&0x00FF)
  3. #define HI8(UINT16)                        (uint8)((UINT16>>8)&0x00FF)
复制代码

作者: yEs、先生    时间: 2013-1-28 17:08
洋葱圈 发表于 2013-1-28 14:24
你的数已经是16位的了,而串口1次只能发1个字节,即8位的数据,因此应该将16位数拆分为2个字节。依次发送, ...

这个方法很好啊 谢谢啦




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2