📄 control.h~
字号:
//******注意数据的匹配********
unsigned char start_flag; //启动标志
extern void key_stop(void);
#define SET1_ON() {DDRE|=0X04;PORTE|=0X04;}
#define SET1_OFF() {DDRE|=0X04;PORTE&=0XFB;}
#define SET2_ON() {DDRE|=0X08;PORTE|=0X08;}
#define SET2_OFF() {DDRE|=0X08;PORTE&=0XF7;}
#define SET3_ON() {DDRE|=0X40;PORTE|=0X40;}
#define SET3_OFF() {DDRE|=0X40;PORTE&=0XBF;}
#define SET4_ON() {DDRE|=0X80;PORTE|=0X80;}
#define SET4_OFF() {DDRE|=0X80;PORTE&=0X7F;}
#define SET5_ON() {DDRB.0=1;PORTB.0=1;}
#define SET5_OFF() {DDRB.0=1;PORTB.0=0;}
#define YQ_ON() {DDRB.1=1;PORTB.1=1;}
#define YQ_OFF() {DDRB.1=1;PORTB.1=0;}
unsigned char k1_flag;
unsigned char k2_flag;
unsigned char k3_flag;
unsigned char k4_flag;
unsigned char k5_flag;
unsigned char control_stop;
unsigned long int control_time;
unsigned long int control_timel;
unsigned long int control_timer;
unsigned char control_state; //0 not key
unsigned char control_dd; //点动=1,否=0;
unsigned char open_flag;
void set_operate(unsigned char seq,unsigned char open_flag){ //阀门控制
unsigned long int temp;
if(open_flag==1){
switch(seq){
case 1:
SET1_ON()
temp=(unsigned long int)eks[en][0]*100;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
key_stop(); //检测停止
if(key_data1==7)control_stop=1;
}
break;
case 2:
SET2_ON()
temp=(unsigned long int)eks[en][1]*100;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
key_stop(); //检测停止
if(key_data1==7)control_stop=1;
}
break;
case 4:
SET3_ON()
temp=(unsigned long int)eks[en][2]*100;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
key_stop(); //检测停止
if(key_data1==7)control_stop=1;
}
break;
case 8:
SET4_ON()
temp=(unsigned long int)eks[en][3]*100;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
key_stop(); //检测停止
if(key_data1==7)control_stop=1;
}
break;
case 16:
SET5_ON()
temp=(unsigned long int)eks[en][4]*100;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
key_stop(); //检测停止
if(key_data1==7)control_stop=1;
}
break;
}
}
else if(open_flag==2){
switch(seq){
case 1:
delay_ms((unsigned int)ejs[en][0]*100);
SET1_OFF()
break;
case 2:
delay_ms((unsigned int)ejs[en][1]*100);
SET2_OFF()
break;
case 4:
delay_ms((unsigned int)ejs[en][2]*100);
SET3_OFF()
break;
case 8:
delay_ms((unsigned int)ejs[en][3]*100);
SET4_OFF()
break;
case 16:
delay_ms((unsigned int)ejs[en][4]*100);
SET5_OFF()
break;
}
}
}
unsigned int change(unsigned char p,unsigned char lr){
float a;
unsigned int b;
unsigned char qy=0;
if(lr==1)qy=elqy;
else qy=erqy;
a=((float)p/100)*(5-(float)qy/100)+(float)qy/100;
b=(unsigned int)(a*204.8);
return(b);
}
void change_p(unsigned char p1,unsigned char p2,unsigned char t,unsigned char lr){
unsigned int a,b;
float c;
unsigned char i;
control_time=0;
a=change(p1,lr);
b=change(p2,lr);
c=a;
for(i=0;i<(2*t);i++){
while((control_time<5)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
control_time=0;
pwm(lr,1,(unsigned int)c);
if(b>a)c+=(float)(b-a)/(2*t);
else c-=(float)(a-b)/(2*t);
}
}
void p_control(){
float pl_temp,pl_temp1;
float pr_temp,pr_temp1;
unsigned char start_l=0,start_r=0;
unsigned char i,j;
unsigned int temp;
unsigned char pl[5];
unsigned char pr[5];
unsigned int tl[7];
unsigned int tr[7];
unsigned char b;
if(esd==1)b=3;
else b=5;
if(esy_en!=1){
if(esc==0)esc_en=0;
else esc_en=1;
if(eyqc==0)eyqc_en=0;
else eyqc_en=1;
if(esc_en!=0)esc--;
else if(eyqc_en!=0)eyqc--;
}
if((esy_en!=1)&(eyqc_en!=1)&(esc_en!=1))return; //使用限制
esyc++;
if(esyc>999999)esyc=0;
for(i=0;i<5;i++){
pl[i]=epl[en][i];
pr[i]=epr[en][i];
}
for(i=0;i<7;i++){
tl[i]=etl[en][i];
tr[i]=etr[en][i];
}
switch(key_data3){
case 1:
control_stop=0; //左枪
pwm(1,1,change(pl[0],1));
pwm(1,2,change(pl[0],1));
change_p(pl[0],pl[1],tl[0],1);
temp=(unsigned int)tl[1]*10;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start(); //点动检测
if(key_data1==9)control_stop=1;
}
else {
key_stop(); //停止键检测
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pl[1],pl[2],tl[2],1);
temp=(unsigned int)tl[3]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pl[2],pl[3],tl[4],1);
temp=(unsigned int)tl[5]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1)change_p(pl[3],pl[4],tl[6],1);
pwm(1,3,0);
break;
case 2: //右枪
if(b==3)break;
control_stop=0;
pwm(2,1,change(pr[0],2));
pwm(2,2,change(pr[0],2));
change_p(pr[0],pr[1],tr[0],2);
temp=(unsigned int)tr[1]*10;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pr[1],pr[2],tr[2],2);
temp=(unsigned int)tr[3]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pr[2],pr[3],tr[4],2);
temp=(unsigned int)tr[5]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1)change_p(pr[3],pr[4],tr[6],2);
pwm(2,3,0);
break;
case 3: //左到右
if(b==3)break;
control_stop=0;
pwm(1,1,change(pl[0],1));
pwm(1,2,change(pl[0],1));
change_p(pl[0],pl[1],tl[0],1);
temp=(unsigned int)tl[1]*10;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pl[1],pl[2],tl[2],1);
temp=(unsigned int)tl[3]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pl[2],pl[3],tl[4],1);
temp=(unsigned int)tl[5]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1)change_p(pl[3],pl[4],tl[6],1);
pwm(1,3,0);
pwm(2,1,change(pr[0],2));
pwm(2,2,change(pr[0],2));
change_p(pr[0],pr[1],tr[0],2);
temp=(unsigned int)tr[1]*10;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pr[1],pr[2],tr[2],2);
temp=(unsigned int)tr[3]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1){
change_p(pr[2],pr[3],tr[4],2);
temp=(unsigned int)tr[5]*10;
}
control_time=0;
while((control_time<temp)&(control_stop!=1)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
}
if(control_stop!=1)change_p(pr[3],pr[4],tr[6],2);
pwm(2,3,0);
break;
case 4: //左右枪同时
if(b==3)break;
control_stop=0;
control_time=0;
start_l=0;
start_r=0;
while((start_l<=8)|(start_r<=8)){
if(control_dd==1){
key_start();
if(key_data1==9)control_stop=1;
}
else {
key_stop();
if(key_data1==7)control_stop=1;
}
if(control_stop==1){
start_l=8;
start_r=8;
}
switch(start_l){ //左枪
case 0: //p1
pwm(1,2,change(pl[0],1));
pl_temp=change(pl[0],1);
pl_temp1=((float)change(pl[1],1)-(float)change(pl[0],1))/(float)(2*tl[0]);
control_timel=0;
start_l=1;
break;
case 1: //p1-p2
if(control_timel>5){
pl_temp+=pl_temp1;
pwm(1,1,pl_temp);
control_timel=0;
}
if((unsigned int)(control_time/10)>tl[0]){
start_l=2;
pwm(1,1,change(pl[1],1));
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -