你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

iar选择不优化,但编译后一部分代码没有对应的汇编代码

[复制链接]
iyumi 提问时间:2018-8-30 09:28 /
阅读主题, 点击返回1楼
收藏 评论11 发布时间:2018-8-30 09:28
11个回答
tyhjrwx2011 回答时间:2018-8-30 20:41:54
iyumi 发表于 2018-8-30 14:25
ir_revdata确认改变了,我按了两个红外按键,得到了不同的值

if(addr_l==(~addr_h))

仔细看了下写法
C语言语法,这句话,应该永远不成立,所以编译器自动过滤了无效的代码段
iyumi 回答时间:2018-8-30 22:11:11
本帖最后由 iyumi 于 2018-8-31 10:06 编辑
tyhjrwx2011 发表于 2018-8-30 20:41
if(addr_l==(~addr_h))

仔细看了下写法

大神,牛逼啊!!我刚把这个问题解决了,准备上来结贴,就看到你给出正确答案了,确实是这样的,我现在改成这样了:

        addr_l = (u8)(ir_revdata>>24);
        addr_h = ~(u8)(ir_revdata>>16);
        //if(addr_l==(~data_h)&&addr_l==EQ_ID)//EQ_ID,设备ID
        if(addr_l==addr_h)
        {
            data_l = (u8)(ir_revdata>>8);
            data_h = ~(u8)ir_revdata;
            if(data_l==data_h)
            {
                ...
            }
        }
把取反的操作放到前边去,if条件里不取反,这样就没有问题

大神,再具体说一下,这个条件有什么问题吗,为什么永远不成立?

12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版