超声波流量计的主程序研究与设计 十四
P2=0xfb;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
delay(10);
if(temp!=0xf0)
switch(temp)
{
case 0xe0: key_num=8;break;
case 0xd0: key_num=9;break;
case 0xb0: key_num=10;break;//设置直径
case 0x70: key_num=11;break;//设置角度
}
P2=0xf7;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
delay(10);
if(temp!=0xf0)
switch(temp)
{
case 0xe0:key_num=12;break;//将直径和角度清零
case 0xd0:flag_sure=1;break;//sure确认标志位
case 0xb0:key_num=14;break;//加1建
case 0x70:key_num=15;break;//减1建
}
return key_num;
}
//3.对按键值进行处理子函数
void key_do()
{
uint i;
while(1)
{
getkey=key_num();//调用键值函数
if(getkey==10&&flag_sure==1)//如果键值为10则设置直径d的大小
{
flag_sure=0;//将确认标志位清零
delay(1);//延时1ms
for(i=0;i<3;i++)
{
getkey=key_num();
delay(1);
if(getkey<9)//必须是0---9之间的数据
{
data_d[i]=getkey;//将设定的直径送到数组中
delay(10);
}
}
}
getkey=key_num();//再次调用键值函数,获取新的键值
if(getkey==11&&flag_sure==1)//如果键值为12则,设置安装角度的大小
{
flag_sure==0;
delay(1);//延时1ms
for(i=0;i<3;i++)
{
getkey=key_num();
delay(1);
if(getkey<9) //如果是0--9之间的数据则赋给对应的数组
{
data_jiao[i]=getkey;//将设定的角度送到数组中
delay(10);
}
}
}
if(getkey==12)//如果键值为12,则清所设定的直径和角度参数
{
delay(1);//延时1ms
for(i=0;i<3;i++)
{
data_d[i]=0x00;//参数清零
data_jiao[i]=0x00;
}
}
}
超声波流量计