飞思卡尔MCU MC9S08DZ60 数据存储的问题

在使用MC9S08DZ60 ,开发的过程中,发现其存储数据和一般想象的不大一样,具体说来如下。

比如我定义了结构体:

typedef struct input_data {

        

    byte AirCleanerBlockWarningSwich     : 2;//空滤器阻塞报警开关

    byte CoolantLevelWanningSwich     : 2;//冷却液位报警开关  

    byte OilPressureSwich         : 2;//机油压力开关  

    byte BrakerFrayWarningSwich       : 2;//刹车片磨损报警开关  

         

    byte PowertakeoffInplaceSignal    : 2;//取力器到位信号                                                

    byte WheelsIntervaLockInplaceSignal    : 2;//轮间闭锁到位信号

    byte  AxelIntervaLockInplaceSignal      : 2;//轴间闭锁到位信号

    byte  AllwheelockInplaceSignal          : 2; //全轮驱动闭锁到位信号

    

    byte GearState                       : 4;//档位状态

    byte TurningOilevelWarningSwich        : 2;//转向油位报警开关  

    byte DplusSignal               : 2;//发动机D+信号  

  

    byte SystemGroundBad                 : 2;//系统接地不良

    byte ChassisTermalExceed               : 2;//底盘过温  

    byte MainICError               : 2;//主芯片故障

    byte  Reserved                          : 2;//备用  

              

    byte BCM2Temperature;//底盘环境温度  1Byte

    byte POWER30[2];

    byte undefined;//未定义 1Byte                                      

} ST_INPUT_DATA, *PST_INPUT_DATA;

编译之后,其存储方式为:仿真可看到其存储方式为:

 可以看到,首先定义的内容,比如AirCleanerBlockWarningSwich ,在第0字节,占2bit,原来设想的应该在字节的最高位,其实他却被安排到最低位,因此,编程的时候要特别注意这个问题。但是字节间的关系,还是按照我们想象的。

比如说定义数组 byte Data[4],还是Data[0],在最前的位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值