打印

请教,有必要每次判断TK都执行165扫描程序吗?

[复制链接]
1965|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanquan12345|  楼主 | 2011-3-14 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下面的程序:
/*******************自动运行程序***********************/
void zidong()
{
  uchar xx=0,yy=0,TK=0;
  hc165pl=1;   //165移位负跳变
  xx=w165();
  yy=w165();
  hc165pl=0;
  TK=xx&0xFF;
  if(flag==1)
  {
   if(TK==0xfe)   //1#开阀到位
   {
    flag10=1;  //1#开阀到位标志位
    flag11=0;  //1#关阀到位标志位
    flag12=0;  //1#自动开阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xfd)   //1#关阀到位
   {
    flag11=1;    //1#关阀到位标志位
    flag10=0;    //1#开阀到位标志位
    flag13=0;  //1#自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xfb)   //1#自动开阀开关闭合
   {
    flag12=1;   //1#自动开阀标志位
    flag13=0;  //1#自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xf7)   //1#关阀开关闭合
   {
    flag13=1;   //1#自动关阀标志位
    flag12=0;   //1#自动开阀标志位
   }
      else
   {
    whc595_dat(0xff);
    hc595st=0;
    hc595st=1;
   }


  
   if((flag12==1)&&(flag10!=1))
   {
    whc595_dat(0xbf);   //开阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
     if((flag13==1)&&(flag11!=1))
   {
    whc595_dat(0xdf);   //关阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
  }
  else
  {
   flag10=0;   //标志位复位
   flag11=0;
   flag12=0;
   flag13=0;
  }
  if(flag2==1)
  {
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xef)   //2#开阀到位
   {
    flag14=1;   //2#开阀到位标志位
    flag15=0;   //2#关阀到位标志位
    flag16=0;   //自动开阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xdf)   //2#关阀到位
   {
    flag15=1;  // 2#关阀到位标志位
    flag14=0;  //2#开阀到位标志位
    flag17=0;  //自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0xbf)   //2#自动开阀开关闭合
   {
    flag16=1;  //自动开阀标志位
    flag17=0;   //自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=xx&0xFF;
   if(TK==0x7f)   //2#关阀开关闭合
   {
    flag17=1; //自动关阀标志位
    flag16=0;  //自动开阀标志位
   }
      else
   {
    whc595_dat(0xff); //继电器全部关断
    hc595st=0;
    hc595st=1;
   }


  
   if((flag16==1)&&(flag14!=1))
   {
    whc595_dat(0xef);   //开阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
     if((flag17==1)&&(flag15!=1))
   {
    whc595_dat(0xf7);   //关阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
  }
  else
  {
   flag14=0;    //标志位复位
   flag15=0;
   flag16=0;
   flag17=0;
  }
  if(flag4==1)
  {
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=yy&0xFF;
   if(TK==0xfe)   //3#开阀到位
   {
    flag18=1; //3#开阀到位标准位
    flag19=0; //3#关阀到位标志位
    flag20=0; //3#自动开阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=yy&0xFF;
   if(TK==0xfd)   //3#关阀到位
   {
    flag19=1;  //3#关阀到位标志位
    flag18=0;  //3#开阀到位标准位
    flag21=0;  //3#自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=yy&0xFF;
   if(TK==0xfb)   //3#自动开阀开关闭合
   {
    flag20=1; //3#自动开阀标志位
    flag21=0;  //3#自动关阀标志位
   }
   hc165pl=1;   //165移位负跳变
   xx=w165();
   yy=w165();
   hc165pl=0;
   TK=yy&0xFF;
   if(TK==0xf7)   //3#关阀开关闭合
   {
    flag21=1;  //3#自动关阀标志位
    flag20=0; //3#自动开阀标志位
   }
      else
   {
    whc595_dat(0xff);
    hc595st=0;
    hc595st=1;
   }


  
   if((flag20==1)&&(flag18!=1))
   {
    whc595_dat(0xfb);   //开阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
     if((flag21==1)&&(flag19!=1))
   {
    whc595_dat(0xfd);   //关阀继电器
       hc595st=0;   //595锁存端(12脚)
  
    hc595st=1;
   }
  }
  else
  {
   flag18=0;
   flag19=0;  //3#关阀到位标志位
   flag20=0;  //3#自动开阀标志位
   flag21=0;  //3#自动关阀标志位
  }
  
}
请大家指点。
谢谢。

相关帖子

沙发
yuanquan12345|  楼主 | 2011-3-14 10:45 | 只看该作者
有不规范的地方,请大家指正。
谢谢。

使用特权

评论回复
板凳
yuanquan12345|  楼主 | 2011-3-14 15:34 | 只看该作者
不过写成这样不行:
/*******************自动运行程序***********************/
void zidong()
{

uchar xx=0,yy=0,TK=0;
hc165pl=1;  //165移位负跳变
xx=w165();
yy=w165();
hc165pl=0;
TK=xx&0xFF;
if(flag==1)
{
if(TK==0xfe)   //1#开阀到位
{
flag10=1;  //1#开阀到位标志位
flag11=0;  //1#关阀到位标志位
flag12=0;  //1#自动开阀标志位
}
if(TK==0xfd)   //1#关阀到位
{
flag11=1;    //1#关阀到位标志位
flag10=0;    //1#开阀到位标志位
flag13=0;  //1#自动关阀标志位
}
if(TK==0xfb)   //1#自动开阀开关闭合
{
flag12=1;   //1#自动开阀标志位
flag13=0;  //1#自动关阀标志位
}
if(TK==0xf7)   //1#关阀开关闭合
{
flag13=1;   //1#自动关阀标志位
flag12=0;   //1#自动开阀标志位
}
    else
{
whc595_dat(0xff);
hc595st=0;
hc595st=1;
}




if((flag12==1)&&(flag10!=1))
{
whc595_dat(0xbf);   //开阀继电器
    hc595st=0;   //595锁存端(12脚)

hc595st=1;
}
   if((flag13==1)&&(flag11!=1))
{
whc595_dat(0xdf);   //关阀继电器
    hc595st=0;   //595锁存端(12脚)

hc595st=1;
}
}
else
{
flag10=0;  //标志位复位
flag11=0;
flag12=0;
flag13=0;
}

使用特权

评论回复
地板
yuanquan12345|  楼主 | 2011-3-14 22:05 | 只看该作者
等待指点。先谢谢了。

使用特权

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

本版积分规则

75

主题

1155

帖子

3

粉丝