在线求救:请问我这程序有什么问题?

[复制链接]
 楼主| thanksgiving 发表于 2010-7-9 12:04 | 显示全部楼层 |阅读模式
本帖最后由 thanksgiving 于 2010-7-9 14:10 编辑

老是执行 WRN_IDL();

WHILE(1)

{
      if(b_I1A &&b_I1B&& b_I2A && b_I2B)
      {
           if((b_A1A==0)||(b_A1B==0))
            {
              ALM();
              }
            else
            {
                   if((b_W1A==0)||(b_W1B==0))
                     {
                      WRN();
                         }
                        else
                        RUN();
                }
  }
       else  
       {
            if((b_A1A==0)||(b_A1B==0))
               {
              ALM_IDL();
                }
             else
             {
                          if((b_W1A==0)||(b_W1B==0))
                                 {
                              WRN_IDL();
                               }
                            else
                            RUN_IDL();
              }
  }

}
BitFu 发表于 2010-7-9 12:43 | 显示全部楼层
楼主提问题也这么懒,没说清目的,别人没法给你分析。
hxlwjn 发表于 2010-7-9 13:22 | 显示全部楼层
看不懂,逻辑错误。
一棵小草 发表于 2010-7-9 13:33 | 显示全部楼层
看到LZ的if好晕的感觉
 楼主| thanksgiving 发表于 2010-7-9 14:05 | 显示全部楼层
本帖最后由 thanksgiving 于 2010-7-9 14:08 编辑

b_I1A等表示空闲,
b_W1A等表示警告,
b_A1A等表示报警。
多台设备,现在要有报警出报警ALM(),没报警有警告出警告WRN(),没报警和警告出正常运行RUN();
如果有空闲,则运行相应的ALM_IDL(), WRN_IDL(), IDL();
 楼主| thanksgiving 发表于 2010-7-9 14:10 | 显示全部楼层
用的是89S53
mbutterfly 发表于 2010-7-9 16:13 | 显示全部楼层
总执行那个肯定是满足执行它的条件:b_I1A ,b_I1B,_I2A ,b_I2B不全为1;b_A1A和b_A1B都为1;
b_W1A,b_W1B中有一个为0。
jiabin1024 发表于 2010-7-10 08:28 | 显示全部楼层
检查逻辑
mon200 发表于 2010-7-10 15:56 | 显示全部楼层
我感觉你的第一层if else语句条件存在语法错误,条件不明确,那么只能执行else语句了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

153

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部