[AVR单片机] ICCAVR中的flag位如何处理?

[复制链接]
196|3
 楼主 | 2018-1-12 13:18 | 显示全部楼层 |阅读模式
我在ICCAVR中,用
typedef struct{
        unsigned char new_produc_work**               :1;//wrk_**.new_produc_work** 新产品开始工作标志;要求校对时间等重要响变量
        unsigned char powup_**                        :1;//wrk_**.powup_**   上电标志
        unsigned char sec_**                          :1;//wrk_**.sec_**   上电标志
        unsigned char data_updat_**                   :1;//wrk_**.data_updat_**   数据正常更新标志         
        unsigned char hear_requet_**                  :1;//wrk_**.hear_requet_**        //心跳包发送标志
        unsigned char indoor_tmp_**                   :1;//wrk_**.iodoor_tmp_**   0:indoor_temp;1:outdoor_temp
        unsigned char tim_switch_**                   :1;//wrk_**.tim_switch_**  //定时开关机
        unsigned char pai_feng_**                     :1;//wrk_**.pai_feng_**  //排风
        unsigned char song_feng_**                    :1;//wrk_**.song_feng_**  //送风
}work_flag;
的方式,发现各个flag不能可靠地表示真是状态。
请问大师:用什么方式改进?
 楼主 | 2018-1-12 13:20 | 显示全部楼层
这种方式在诸如codewarrior编译环境中是很好的执行的。
| 2018-1-12 13:55 | 显示全部楼层
zhanghl45 发表于 2018-1-12 13:20
这种方式在诸如codewarrior编译环境中是很好的执行的。

位域一般需要移植的,不同的编译器对位域的分配是不一样的,所以要先搞清楚原来的是怎么分配的,

或者直接看现在的是怎么处理的,再修改

写个简单的测试代码就可以了
| 2018-1-14 09:24 | 显示全部楼层
ICCavr 是否支持倒没有用过, GCCavr 肯定支持.
另外, 如果编译器没有报错, 那就应该是支持的.

发现各个flag不能可靠地表示真是状态。这个说明很含糊, 说明你自己的验证,  也许也有问题.
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

分享 快速回复 返回顶部 返回列表