void EpsavRam(void) { unsigned char i; double xdata PEnergy[4]; DS1302GetTime( ); Check_TNow(); EnableWDI(); for(i=0;i<4;i++) { PEnergy=Formusel(Meter7022,ReadSPI(Meter7022)); if( Energy < 99999999 ) //####1 Energy = Energy + PEnergy; else Energy =(Energy-99999999) + PEnergy; if(cursdt.curSDnum !=0) { if( Energy[i+(cursdt.sdtNow->flvnum)*4] < 99999999 ) //####2 Energy[i+(cursdt.sdtNow->flvnum)*4] += PEnergy; else Energy[i+(cursdt.sdtNow->flvnum)*4] =(Energy[i+(cursdt.sdtNow->flvnum)*4]-99999999)+PEnergy;} } } 说明:Formusel是一个返回数据为double类型的函数 单片机:stc89c516 ram1280 我写的程序编译好后:data 92.7 xdata 881 奇怪的问题是:见上面标号://####1 和 //####2 处,无论if后面括号的关系表达式判断的结果为真还是为假,程序都不执行if后面的语句,只是执行else后面的语句。 请高手帮忙!谢谢各位热心人! |