__BIG_ENDIAN和struct


/*双字半定义*/
typedef struct{

#ifdef __BIG_ENDIAN
INT32U bit39:1;
INT32U bit38:1;
INT32U bit37:1;
INT32U bit36:1;
INT32U bit35:1;
INT32U bit34:1;
INT32U bit33:1;
INT32U bit32:1;
INT32U bit31:1;
INT32U bit30:1;
INT32U bit29:1;
INT32U bit28:1;
INT32U bit27:1;
INT32U bit26:1;
INT32U bit25:1;
INT32U bit24:1;
INT32U bit23:1;
INT32U bit22:1;
INT32U bit21:1;
INT32U bit20:1;
INT32U bit19:1;
INT32U bit18:1;
INT32U bit17:1;
INT32U bit16:1;
INT32U bit15:1;
INT32U bit14:1;
INT32U bit13:1;
INT32U bit12:1;
INT32U bit11:1;
INT32U bit10:1;
INT32U bit09:1;
INT32U bit08:1;
INT32U bit07:1;
INT32U bit06:1;
INT32U bit05:1;
INT32U bit04:1;
INT32U bit03:1;
INT32U bit02:1;
INT32U bit01:1;
INT32U bit00:1;
#else
INT32U bit00:1;
INT32U bit01:1;
INT32U bit02:1;
INT32U bit03:1;
INT32U bit04:1;
INT32U bit05:1;
INT32U bit06:1;
INT32U bit07:1;
INT32U bit08:1;
INT32U bit09:1;
INT32U bit10:1;
INT32U bit11:1;
INT32U bit12:1;
INT32U bit13:1;
INT32U bit14:1;
INT32U bit15:1;
INT32U bit16:1;
INT32U bit17:1;
INT32U bit18:1;
INT32U bit19:1;
INT32U bit20:1;
INT32U bit21:1;
INT32U bit22:1;
INT32U bit23:1;
INT32U bit24:1;
INT32U bit25:1;
INT32U bit26:1;
INT32U bit27:1;
INT32U bit28:1;
INT32U bit29:1;
INT32U bit30:1;
INT32U bit31:1;
INT32U bit32:1;
INT32U bit33:1;
INT32U bit34:1;
INT32U bit35:1;
INT32U bit36:1;
INT32U bit37:1;
INT32U bit38:1;
INT32U bit39:1;
#endif
}Bit40Struct;
typedef union MMemBit40{

Bit40Struct bit;
INT40U twValue;
INT40S tsValue;

}MMEMBIT40;

 

struct PlcMemInfo{
INT8U ucMemType; //内存类型 M
INT8U ucMemType2; //内存类型 M(D20) 此种类型该参数有效 0xFF
MMEMBIT8 ucReadType; //bit0: ucMemType-0:非F类型, 1:F类型
//bit1: ucMemType-0:非L类型, 1:L类型
//bit2: ucMemType2--1:使用;0:不适用
//bit3: ucMemType2--0:非L类型 1:L类型

//bit4: ucMemType2--1:负数 0:正数 X
//bit5: ucMemType--1:负数 0:正数 X
INT8U ucTag; //是否使用标志 0:不使用 1:使用 //change to u
MMEMBIT32 iValue; //存储数值
PlcMemInfo()
{
ucTag = 0;
ucMemType = 0xFF;
ucMemType2 = 0xFF;
ucReadType.cValue = 0;
iValue.dwValue = 0xFFFFFFFF;
}
};

posted @ 2020-09-12 16:58  石首桃花山  阅读(156)  评论(0编辑  收藏  举报