打印
[AVR单片机]

ICCAVR中的flag位如何处理?

[复制链接]
1080|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanghl45|  楼主 | 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不能可靠地表示真是状态。
请问大师:用什么方式改进?

相关帖子

沙发
zhanghl45|  楼主 | 2018-1-12 13:20 | 只看该作者
这种方式在诸如codewarrior编译环境中是很好的执行的。

使用特权

评论回复
板凳
ayb_ice| | 2018-1-12 13:55 | 只看该作者
zhanghl45 发表于 2018-1-12 13:20
这种方式在诸如codewarrior编译环境中是很好的执行的。

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

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

写个简单的测试代码就可以了

使用特权

评论回复
地板
airwill| | 2018-1-14 09:24 | 只看该作者
ICCavr 是否支持倒没有用过, GCCavr 肯定支持.
另外, 如果编译器没有报错, 那就应该是支持的.

发现各个flag不能可靠地表示真是状态。这个说明很含糊, 说明你自己的验证,  也许也有问题.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

251

帖子

1

粉丝