微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > ZigBee 无符号长整型除法

ZigBee 无符号长整型除法

时间:10-02 整理:3721RD 点击:
今天碰到一个很蛋疼的问题,我用长整型变量 a=32279638,我除以32,ZigBee会输出2736(具体是多少,没看清,但是蛋疼的它竞然只有4位数啊,这就不科学的);然而我用C++写代码运算,他毫无问题,得到1008738

贴下代码呗
你的公式是什么样的?
是a=a/32?

现在才登,我现在贴代码和结果


unsigned long mhz19Read(void)
{
unsigned long count1,count2,value,th,tl;
//float th,tl;
//unsigned int n1=0,n2=0,tl,th,value,v1,v2,flag=0;
while(MHZ19IO)
{
}
while(!MHZ19IO)//以上两步,寻找起始点
{
}
while(MHZ19IO)
{
count1+=1;
}
while(!MHZ19IO)
{
count2+=1;
}
th=count1/32;
tl=count2/32/1000;
value=2000*(th-2)/(th+tl-4);
return th;
}

value=mhz19Read();
sprintf(TxData,"%ld",value);
UartSendString(TxData, sizeof(TxData));

count1相当于一个自加器,计数用的

这是转换返回值时,转换情况

CC2530是51的核,51是8位的,计算过程中数值偏大会溢出。做这种长整型运算要分步运算,否则在计算过程中,一旦值超过范围会被截取掉,可以在计算的时候加上强制转换
上面是TI社区给的答案

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top