我写了一个子程序,编译可以通过,实际计算错误,请大家帮忙看看什么问题?是12位A/D,所以是0x800。错误在这句话上:voltage = data*5000;但是我定义的是长整型,是四个字节,应该不会溢出,但实际每次单步执行到这里就错。我怀疑是PICC的编译器的问题,我用的芯片是PIC18F4523,但是,如果是编译器的问题,我还必须需要他,我该怎么办呢?<br />uint AdOperate( uint data )<br />{<br /> unsigned long voltage;<br /> uint current;<br /> if ( data > 0x800 ) //* 传感器2.5V输出为0,大于2.5V为正,小于2.5V为负; 2exp12=4096,2.5V对应0x800 */<br /> { <br /> sign = 1;<br /> data = data - 0x800;<br /> }<br /> else<br /> {<br /> sign = 0;<br /> data = 0x800 - data;<br /> }<br /> voltage = data*5000; /* convert mv voltage */<br /> voltage =voltage/4095;<br /> current = voltage/4; /* convert output current */<br /> return current;<br />} |
|