那位大哥,帮忙找找程序错误,谢谢了~

2020-02-09 11:23发布

if(((a&0x01)&&(I>max))||((b&0x01)&&(I<min))  
{
if(time1++==time)   //当TIME1和设置时间一致时
{
  Q1=1;            //Q1吸合
  if((a&0x01)&&(I>max))  
  {
flag1=0x01;    //上限标志位为0X01
}
else
{
flag1=0;     //上限标志位为0
}
if((b&0x01)&&(I<min))
  {
flag2=0x10;      //下限标志为为0X10     
}
else
{
flag2=0;         //下限标志为为0X0     
}
}
else
{
Q1=0;
flag2=0;
flag1=0;
}
本人想要的是当越上限时,延时后Q1闭合,标志位0X01,不越上限时,Q1和标志位立即为零;
当越下限时,延时后Q1闭合,标志位0X10,不越下限时,Q1和标志位立即为零;
当上下限一直越限时,延时后Q1闭合,标志位0X11,不越上限时,Q1闭合,上限标志位立即清零或Q1闭合,下限标志位立即清零,当上下限一起不越限时一起清零。
现在程序写进去,当上下限一起越限时,当一相不越限的时候无法使标志位立即清零,有延时。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。