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