qq_46015224 2022-01-07 12:55 采纳率: 50%
浏览 82
已结题

在51单片机编程中,怎么用数组中的某个值作为if的判断条件

我在编写红外遥控的程序时,用一个数组的第三位储存红外编码的数据段,发现无法用这个元素在后面的if判断语句中起作用,
程序是这样的 if(Ivalue[2]==0xa2)
执行
if(Ivalue[2]==0x89)
执行 无法实现不同编码值执行对应的功能,求解

  • 写回答

3条回答 默认 最新

  • qllaoda 2022-01-07 13:41
    关注

    很多时候其实只是程序的效果和你的预期不一样而已,并非执行错误。建议你不要这样考虑问题,容易被自己误导,也容易误导帮你分析问题的人。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • fuill 2022-01-07 13:20
    关注

    两个if嵌套会出问题
    应该改为
    if(Ivalue[2]==0xa2)
    //执行
    else if(Ivalue[2]==0x89)
    //执行

    评论 编辑记录
  • suqingxiao 2022-01-07 14:34
    关注

    我说一问题:首先你用了相同的Ivalue[2]红外编码的数据段,而Ivalue[2]是在变的,所以最好确认每次执行都能完成。
    可以这样做。
    u8 Flag =0;
    if(Ivalue[2]==0xa2 &&Flag ==0)
    {
    //执行
    Flag =1;
    }
    else if(Ivalue[2]==0x89 && Flag ==1)
    {
    //执行
    Flag =0;
    }

    如有帮助,请点采纳!

    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 k210显示failed init to model
  • ¥15 Evil-droid生成的APK手机已经下载但无法建立任务
  • ¥25 c语言韩信点兵的变式
  • ¥15 怎么根据书上的例子完成这个问题呢?
  • ¥15 ECharts 增加Zoom,整行包括右边的Text一起滑动
  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题