本人在使用了8A8K64D4 芯片中,发现了一个定义的一个变量
例如 long int a; 如果这个变量定义在内部data中 程序 计算、调用都正常,
如果这个将变量定义在外部DATA long int XDATA a; 变量初始化都清零了
在计算和调用后,发现值出现了偏差,始终比正确值变大一点,程序内容没有改动过,只是变量定义位置发生了变化,请教各位老师,这种问题该如何处理,谢谢!
程序运算部分是这样的
unsigned long int xdata A[32], unsigned long int xdata B ,unsigned long int xdata C
for(i=0;i<32;i++)
{
B+= A;
}
C = B>>5; // 取数组平均值
此时计算出的B的平均值比正确值偏大1.03倍,而且是线性偏大
如果将变量B,重新定义 unsigned long int data B ,其他程序内容不变
此时计算出的B的平均值是正确的,