如下面的程序:
/*******************自动运行程序***********************/
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#自动关阀标志位
}
}
请大家指点。
谢谢。 |