發新話題
打印

XDATA程式設定問題

XDATA程式設定問題

您好
想請教一下 XDATA的函式傳址問題

程式如下

xdata unsigned short X_ChannelSensorData[8];         
xdata unsigned short X_ChannelZeroData[8];         
xdata unsigned short X_ChannelData[9];         
#define X_Channel        8
xdata unsigned short ReadData;


void DifferentialToSingle(unsigned short* SensorData,unsigned short* ZeroData,
                         unsigned short* ChannelData,unsigned char* ChannelNumber)
{

        if(SensorData[0] > ZeroData[0])
        {
                ReadData= SensorData[0]-ZeroData[0];       
        }
        else
        {
                ReadData= ZeroData[0]-SensorData[0];
        }
        ChannelNumber++;
}

void main()
{
  DifferentialToSingle(&X_ChannelSensorData,&X_ChannelZeroData,&X_ChannelData,X_Channel);
}


//========================
不知為何 在 DifferentialToSingle 中  位址總是沒辦法傳過去使用
請問程式設定哪邊有問題嗎

TOP

xdata 前面再加上 voatile 關鍵字
如  volatile xdata unsigned short X_ChannelSensorData[8];  
避免被 compiler 最佳化

TOP

發新話題