📄 two18.c
字号:
if(V>=Vb) //大于启动速度
{
if(V>=Vb&&V<Vs) //位于启动速度与安全速度之间
{
if(V>=25&&V<=30) // 2006.3.3
tc=(float)t0*0.001;
if(V>30&&V<=40)
tc=(float)t1*0.001;
if(V>40&&V<=50)
tc=(float)t2*0.001;
if(V>50&&V<=60)
tc=(float)t3*0.001;
if(V>60&&V<=70) // 2006.3.3
tc=(float)t4*0.001;
if(V>70&&V<=80)
tc=(float)t5*0.001;
if(V>80&&V<=90) //报警起始段 2006.3.9
{
tc=(float)t6*0.001;
/* if(alarmlevel==0)
{
alarmlevel=1; //一级报警,周期0.5秒
alarmcount=501;
alarmstatus=51;
alarm=1;
} */
}
if(V>90&&V<=100)
{
tc=(float)t7*0.001;
/* if(alarmlevel==0)
{
alarmlevel=2; //二级报警,周期0.4秒
alarmcount=501;
alarmstatus=41;
alarm=1;
} */
}
if(V>100&&V<=110)
{
tc=(float)t8*0.001;
/* if(alarmlevel==0)
{
alarmlevel=3; //三级报警,周期0.3秒
alarmcount=501;
alarmstatus=31;
alarm=1;
} */
}
if(V>110&&V<120) // 2006.3.3
{
tc=(float)t9*0.001;
/* if(alarmlevel==0)
{
alarmlevel=4; //四级报警,周期0.2秒
alarmcount=501;
alarmstatus=21;
alarm=1;
} */
}
if(D>=Dd) //大于危险距离
{
if(D>=Dd&&D<Ds) //位于安全距离与危险距离之间
{
//八种断油操作
if(t<=tc) //时间小于刹车时间 2006.3.6
{
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111; //断油1秒
// door1=1; //
}
return '1';
}
if(t>tc&&t<=(tc*1.2)) // 2006.3.6
{
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111; //断油1秒
// door1=1;
}
return '2';
}
if(t>(tc*1.2)&&t<=(tc*1.4)) // 2006.3.6
{
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111; //断油1秒
// door1=1;
}
return '3';
}
if(t>(tc*1.4)&&t<=(tc*1.6)) // 2006.3.6
{
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111;
// door1=1;
}
return '4';
}
if(t>(tc*1.6)&&t<=(tc*1.8)) // 2006.3.6
{
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111;
// door1=1;
}
return '5';
}
if(t>(tc*1.8)) // 2006.3.6
return '6';
}
else return 'S'; //正常行使
}
else
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111;
// door1=1;
}
/* if(alarmlevel==0)
{
alarmlevel=5; //五级报警,周期0.2秒
alarmcount=501;
alarmstatus=11;
alarm=1;
} */
return '?'; //小于危险距离
}
else
if(cutflag==0&&blankflag==0) //无断油操作开始置标志断油计数 2006.3.6
{
cutflag=1;
cutcount=111;
// door1=1;
}
/* if(alarmlevel==0)
{
alarmlevel=6; //五级报警,周期0.1秒
alarmcount=501;
alarmstatus=6;
alarm=1;
} */
return '!'; //超速
}
else return '*'; //低于启动速度
}
//=====================================================
//函数名称:OPERATE()
//功能描述:端口操作子程序
//输入:k(1/2/3/4/5/6/S/?/!/*)
//输出:/
//全局变量: door1 blankflag
//调用模块: /
//=====================================================
void OPERATE(uchar k) //对应操做
{
if(door1==1) //如果门开 2006.3.6
{
if(blankflag==1) //恢复正常标志为1,有效 2006.3.6
k='6'; //正常供油 2006.3.6
switch(k)
{
case '*': //低于启动速度系统不工作, 无操作 2006.3.6
stop=1;
slow1=1;
slow2=1;
slow3=1;
slow4=1;
slow5=1;
// alarm=0;
break;
case '?': //小于危险距离 2006.3.6
slow1=0;
slow2=0;
slow3=0;
slow4=0;
slow5=0;
door1=0; //关总门
// stop=1;
// alarm=0;
break;
case 'S': //大于安全距离, 无操作 2006.3.6
stop=1;
slow1=1;
slow2=1;
slow3=1;
slow4=1;
slow5=1;
// alarm=0;
break;
case '!': //超速 2006.3.6
slow1=0;
slow2=0;
slow3=0;
slow4=0;
slow5=0;
door1=0; //关总门 2006 5 21
// stop=0;
// alarm=~alarm;
break;
case '1': //cut 5 oil 2006.3.6
slow1=0;
slow2=0;
slow3=0;
slow4=0;
slow5=0;
door1=0; //关总门 2006 5 21
// stop=1;
// alarm=~alarm;
break;
case '2': //cut 4 oil 2006.3.6
slow1=0;
slow2=0;
slow3=0;
slow4=0;
slow5=1;
door1=0; //关总门 2006 5 21
// stop=0;
// alarm=0;
break;
case '3': //cut 3 oil 2006.3.6
slow1=0;
slow2=0;
slow3=0;
slow4=1;
slow5=1;
door1=0; //关总门 2006 5 21
// stop=0;
// alarm=0;
break;
case '4': //cut 2 oil 2006.3.6
slow1=0;
slow2=0;
slow3=1;
slow4=1;
slow5=1;
door1=0; //关总门 2006 5 21
// stop=0;
// alarm=0;
break;
case '5': //cut 1 oil 2006.3.6
slow1=0;
slow2=1;
slow3=1;
slow4=1;
slow5=1;
door1=0; //关总门 2006 5 21
// stop=0;
// alarm=0;
break;
case '6': //未采取措施 2006.3.6
// alarm=0; //报警
stop=1;
slow1=1;
slow2=1;
slow3=1;
slow4=1;
slow5=1;
// stop=0;
// alarm=0;
break;
};
}
else ; //退出 2006 3 9
}
//=====================================================
//显示子程序
//函数名称:OPERATE()
//功能描述:端口操作子程序
//输入:t(1/2/3/4/5/6/S/?/!/*)
//输出:/
//全局变量: door1 door2 brakeflag blankflag
//调用模块: write_com() write_zf()
//=====================================================
/* void DISPLAY(uchar t)
{
if(t=='?')
{
write_com(0x80); //显示"危险距离"标志 2006.3.6
write_zf(DIST,2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1, 2);
}
if(t=='!')
{
write_com(0x80); //显示"超速"标志
write_zf(SPEED, 2); // 2006.3.6
write_com(0x81);
write_zf(WHITE1,2);
}
if(door1==1||door2==1) //两扇门中其中有一扇门开 2006.3.6
{
if(blankflag==1) //恢复正常标志为1,有效 2006.3.6
t=6; //清屏 2006.3.6
if(brakeflag==1) // 2006.3.6
{ // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(BRAKE,2); // 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); //显示"刹车"标志 2006.3.6
door2=0; //关门2 2006.3.6
t=8; //跳出下面的SWITCH结构 2006 3 9
}
switch(t)
{
case '*':
write_com(0x80); //第一行显示八个空字符
write_zf(WHITE2,8);
break;
case '?':
write_com(0x82); // 2006.3.6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -