📄 主机.c
字号:
/*case 0x7d://0
word='0';
flag1=0;
break;*/
case 0xee://1
word='1';
sendbuf[1]=1;
break;
case 0xed://2
word='2';
sendbuf[1]=2;
break;
case 0xeb://3
word='3';
sendbuf[1]=3;
break;
case 0xe7://4
word='4';
sendbuf[1]=4;
break;
case 0xde://5
word='5';
sendbuf[1]=5;
break;
case 0xdd://6
word='6';
sendbuf[1]=6;
break;
case 0xdb://7
word='7';
sendbuf[1]=7;
break;
case 0xd7://8
word='8';
sendbuf[1]=8;
break;
case 0xbe://9
word='9';
sendbuf[1]=9;
break;
}
}
sendbuf[3]=union_variary.byte.hand;
sendbuf[4]=union_variary.byte.ten;
sendbuf[5]=union_variary.byte.several;
sendbuf[6]=union_variary.byte.point;
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
//send_buf(0xaa ,0,0,union_variary.byte.hand,union_variary.byte.ten,union_variary.byte.several,union_variary.byte.point,0) ;
}
/////////////////////////////////////////////
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
send_byte(0xf4);
flag=0;
P1=0xff;
}
dis_lim()//显示上,下限
{
uchar z=0,x=0,xx=0,b1=0;
float y=0;
k=3;
P1=tab[m][n];
xx=P1;
if(P1==0xe7)
{
uchar code w1[]={"请输入子机号"};
uchar code w2[]={"按二显示二号上限"};
uchar code w3[]={"超时"};
send_byte(0xf4);
for(i=0,j=0;i<11;i=i+2,j++)
{
word=256*(w1[i]-0xa0)+w1[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
/*for(i=0,j=0;i<15;i=i+2,j++)
{
word=256*(w2[i]-0xa0)+w2[i+1]-0xa0;
dis_word(j+2,1,0xf0);
} */
P1=0xff;
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe)
check_key();
b1=P1;
send_byte(0xf4);
switch(b1)
{
/*case 0x7d://0
word='0';
flag1=0;
break;*/
case 0xee://1
word='1';
sendbuf[1]=1;
break;
case 0xed://2
word='2';
sendbuf[1]=2;
break;
case 0xeb://3
word='3';
sendbuf[1]=3;
break;
case 0xe7://4
word='4';
sendbuf[1]=4;
break;
case 0xde://5
word='5';
sendbuf[1]=5;
break;
case 0xdd://6
word='6';
sendbuf[1]=6;
break;
case 0xdb://7
word='7';
sendbuf[1]=7;
break;
case 0xd7://8
word='8';
sendbuf[1]=8;
break;
case 0xbe://9
word='9';
sendbuf[1]=9;
break;
}
sendbuf[2]=3;//读上限命令
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
j=0;
while((RI==0)&&(j<1000))
{
j++;
}
if(j>=1000)
overtime=1;
else
{
overtime=0;
RI=0;
}
if(overtime==0)
{
for(i=0;i<7;i++)
{
j1=0;
while(RI==0)
{
j1++;
if(j1>1000)
{
break; //超时退出
}
}
RI=0;
if(j1>1000)
{
break; //超时退出
}
buff[i]=SBUF;
}
}
if(j1>1000||overtime==1)
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
}
if(j1<1000&&overtime==0)
{
union_variary.byte.hand=buff[1];
union_variary.byte.ten=buff[2];
union_variary.byte.several=buff[3];
union_variary.byte.point=buff[4];
if(union_variary.word<0)
{
y=-union_variary.word;
uplim[0]=(int)y/100;
uplim[1]=(int)(y-uplim[0]*100)/10;
uplim[2]=(int)(y-uplim[0]*100-uplim[1]*10);
uplim[3]=(int)(y*10-uplim[0]*1000-uplim[1]*100-uplim[2]*10);
}
uplim[0]=(int)union_variary.word/100;
uplim[1]=(int)(union_variary.word-uplim[0]*100)/10;
uplim[2]=(int)(union_variary.word-uplim[0]*100-uplim[1]*10);
uplim[3]=(int)(union_variary.word*10-uplim[0]*1000-uplim[1]*100-uplim[2]*10);
if(sendbuf[1]==1)//存一号子几子机上限
{
for(i=0;i<4;i++)
uplim1[i]=uplim[i];
}
if(sendbuf[1]==2)//存二号子几子机上限
{
for(i=0;i<4;i++)
uplim2[i]=uplim[i];
}
limm=uplim;
}
}
if(P1==0xde)
{
uchar code w1[]={"请输入子机号"};
uchar code w2[]={"按二显示二号下限"};
uchar code w3[]={"超时"};
send_byte(0xf4);
for(i=0,j=0;i<11;i=i+2,j++)
{
word=256*(w1[i]-0xa0)+w1[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
/* for(i=0,j=0;i<15;i=i+2,j++)
{
word=256*(w2[i]-0xa0)+w2[i+1]-0xa0;
dis_word(j+2,1,0xf0);
} */
P1=0xff;
delay(1000,1000);
while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe)
check_key();
b1=P1;
send_byte(0xf4);
switch(b1)
{
/*case 0x7d://0
word='0';
flag1=0;
break;*/
case 0xee://1
word='1';
sendbuf[1]=1;
break;
case 0xed://2
word='2';
sendbuf[1]=2;
break;
case 0xeb://3
word='3';
sendbuf[1]=3;
break;
case 0xe7://4
word='4';
sendbuf[1]=4;
break;
case 0xde://5
word='5';
sendbuf[1]=5;
break;
case 0xdd://6
word='6';
sendbuf[1]=6;
break;
case 0xdb://7
word='7';
sendbuf[1]=7;
break;
case 0xd7://8
word='8';
sendbuf[1]=8;
break;
case 0xbe://9
word='9';
sendbuf[1]=9;
break;
}
sendbuf[2]=4;//读下限命令
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
j=0;
while((RI==0)&&(j<100))
{
j++;
}
if(j>=100)
overtime=1;
else
{
overtime=0;
RI=0;
}
if(overtime==0)
{
for(i=0;i<7;i++)
{
j1=0;
while(RI==0)
{
j1++;
if(j1>1000)
{
break; //超时退出
}
}
RI=0;
if(j1>1000)
{
break; //超时退出
}
buff[i]=SBUF;
}
}
if(j1>1000||overtime==1)
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
}
if(j1<1000&&overtime==0)
{
union_variary.byte.hand=buff[1];
i=union_variary.byte.hand;
union_variary.byte.ten=buff[2];
union_variary.byte.several=buff[3];
union_variary.byte.point=buff[4];
if(union_variary.word<0)
{
y=-union_variary.word;
downlim[0]=(int)y/100;
downlim[1]=(int)(y-downlim[0]*100)/10;
downlim[2]=(int)(y-downlim[0]*100-downlim[1]*10);
downlim[3]=(int)(y*10-downlim[0]*1000-downlim[1]*100-downlim[2]*10);
}
else
{
downlim[0]=(int)union_variary.word/100;
downlim[1]=(int)(union_variary.word-downlim[0]*100)/10;
downlim[2]=(int)(union_variary.word-downlim[0]*100-downlim[1]*10);
downlim[3]=(int)(union_variary.word*10-downlim[0]*1000-downlim[1]*100-downlim[2]*10);
}
if(sendbuf[1]=1)//存一号子机下限
{
for(i=0;i<4;i++)
downlim1[i]=downlim[i];
}
if(sendbuf[1]=2)//存二号子几子机下限
{
for(i=0;i<4;i++)
downlim2[i]=downlim[i];
}
limm=downlim;
}
}
if(j1<1000&&overtime==0)
{
if(xx==0xe7)
{
send_byte(0xf4);
for(i=0,j=0;i<9;i=i+2,j++)
{
word=256*(ll[i]-0xa0)+ll[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
}
if(xx==0xde)
{
send_byte(0xf4);
for(i=0,j=0;i<9;i=i+2,j++)
{
word=256*(mm[i]-0xa0)+mm[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
}
if(union_variary.word<0)
{
word='-';
dis_word(0x05,15,0xf9);
}
for(z=0;z<4;z++)
{
switch(*(limm+z))
{
case 0:
word='0';
break;
case 1:
word='1';
break;
case 2:
word='2';
break;
case 3:
word='3';
break;
case 4:
word='4';
break;
case 5:
word='5';
break;
case 6:
word='6';
break;
case 7:
word='7';
break;
case 8:
word='8';
break;
case 9:
word='9';
break;
}
switch(z)
{
case 0:
x=0x06;
break;
case 1:
x=0x07;
break;
case 2:
x=0x08;
break;
case 3:
x=0x0a;
xx=word;
word='.';
dis_word(0x09,15,0xf9);
word=xx;
break;
}
dis_word(x,15,0xf9);
}
for(i=0;i<1000;i++)
for(j=0;j<100;j++);
}
//delay(1000,1000);
overtime=0;
send_byte(0xf4);
P1=0xff;
}
//////////////////////////////////////////////////////////////////////
getT(uchar yy)//取温度
{
uchar code w3[]={"超时"};
uchar data z,x,xx;
float y;
k=3;
send_byte(0xf4);
sendbuf[1]=yy;//子机号
sendbuf[2]=5;//读温度命令
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
j=0;
while((RI==0)&&(j<100))
{
j++;
}
if(j>=100)
overtime=1;
else
{
overtime=0;
RI=0;
}
if(overtime==0)
{
for(i=0;i<7;i++)
{
j1=0;
while(RI==0)
{
j1++;
if(j1>1000)
{
break; //超时退出
}
}
RI=0;
if(j1>1000)
{
break; //超时退出
}
buff[i]=SBUF;
}
}
if(j1>1000||overtime==1)
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
}
if(j1<1000&&overtime==0)
{
union_variary.byte.hand=buff[1];
union_variary.byte.ten=buff[2];
union_variary.byte.several=buff[3];
union_variary.byte.point=buff[4];
union_variary.word=union_variary.word/10;
if(union_variary.word<0)
{
y=-union_variary.word;
firstT[0]=(int)y/100;
firstT[1]=(int)(y-firstT[0]*100)/10;
firstT[2]=(int)(y-firstT[0]*100-firstT[1]*10);
firstT[3]=(int)(y*10-firstT[0]*1000-firstT[1]*100-firstT[2]*10);
}
else
{
firstT[0]=(int)union_variary.word/100;
firstT[1]=(int)(union_variary.word-firstT[0]*100)/10;
firstT[2]=(int)(union_variary.word-firstT[0]*100-firstT[1]*10);
firstT[3]=(int)(union_variary.word*10-firstT[0]*1000-firstT[1]*100-firstT[2]*10);
}
limm=firstT;
for(i=0,j=0;i<9;i=i+2,j++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -