我使用的是PIC16F873A单片机,开发环境MPLAB IDE V7.0,使用PICC编译器。在float型数据向整型数据转换的过程中会出现问题,发现转换后数据不正确。而且也有群友反映过这样的问题。
有下面这样一个求平均值的运算:
#define SEQUEUE_INSTRUCTION_MAXNUM 20
void CaculateADResultAverage(void)
{
unsigned int Total=0;
unsigned char i=0;
//计算总和
for(i=0;i<SEQUEUE_FEEDBACK_MAXNUM;i++)
{
Total+=ADFeedback[i];
}
//求ADFeedback平均值
ADFeedbackAverage=(unsigned char)((Total)/(SEQUEUE_FEEDBACK_MAXNUM));
}
会发现斜体部分计算出来的平均值出入很大,将其改为下面的程序
ADFeedbackAverage=(unsigned char)((float)(Total)/(SEQUEUE_FEEDBACK_MAXNUM));
这样计算结果就正确了。在从double型数据向整型数据转换的过程中采取同样的方法可以避免错误的发生。
第一次使用PIC单片机,遇到这个问题时,发现结果不对,还以为是模拟部分没有作好,数据采集的不正确,麻烦,费了不少功夫才发现是这个问题。汗。。。