功能根本没有执行或者没有正确执行

时间:2012-04-30 08:50:54

标签: c embedded firmware 8051 sdcc

我正在开发一个嵌入式C程序,即使调用了killnoise函数也没有执行,程序总是到达它,但是当我在这个函数的输出处查询值时,我发现nothig发生了:

void KillNoise( int* array, int size )
{
  int k;

    for (k=0;k<size;k++)
    {
       if (array[k] < 20)
           array[k] = 0;
    }

}

这里是我称之为的地方和方式:

void UX_zswDecide( void )
{
    float __xdata centerOfMass[UX_NUM_SENSORS];
    float __xdata vectx, vecty, module, tg;
    int __xdata i,j;

    KillNoise( UX_bigUpArray,    NUMPOINTS );
    KillNoise( UX_bigDownArray,  NUMPOINTS );
    KillNoise( UX_bigLeftArray, NUMPOINTS );
    KillNoise( UX_bigRightArray,  NUMPOINTS );

/* the rest of the function */ 
}

其中NUMPOINTS,biguparray,bigleftarray ......是先前声明的全局变量:

int   __xdata UX_bigUpArray[100];

int   __xdata UX_bigDownArray[100] ;

int   __xdata UX_bigLeftArray[100];
int   __xdata UX_bigRightArray[100] ;

#define NUMPOINTS 100 

非常感谢你的帮助,(我的另一个功能面临同样的问题)

1 个答案:

答案 0 :(得分:1)

我认为__xdata

array参数的声明中需要KillNoise
void KillNoise( int* __xdata array, int size )

或类似的东西。