看到论坛越来越多人拥有推力测试台,我也做了一个。能搜集到推力数据,对火箭的研制是非常重要的。在大学学了半年51单片机,前几个星期弄了3个传感器,分别用来搜集推力,加速度和飞行高度,基本上做好了,迟些我会把代码和制作过程发到论坛上。我从推力传感器搜集到的数据是一个long型数据,我把它存储在AT24C08中,这样在测试时就不用从连接电脑了。现在有一个问题是,AT24C08一次只能存储一个字节,也就是8位。我的想法是:将long型数据分成4个字符再存储在AT24C08中,但当该long型数据大于65536时,却会溢出。
于是用下面的程序模拟一下,
<code class="lang-cpp"> char i;
unsigned char j,c[4];
unsigned long int b;
b=75536;
//将b的32位分到4个字符中
for(i=0;i<4;i++) { c="(unsigned" char)(b&0xff); b>>=8;
}</4;i++)></code>
//再将4个字符合成变成原来的long型数据
a=(c[3]<<24)+(c[2]<<16)+(c[1]<<8)+c[0];
却发现输出的a为10000,也即如果数据超过65536,那么输出的数据就会减去65536.
请教:该怎么解决?或者有什么更好的方法?
(我明明在那个for语句中的c有个中括号,并且里面有个i,为何发到论坛上却不行了,已经修改几次了)
200字以内,仅用于支线交流,主线讨论请采用回复功能。