📄 control.c~
字号:
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 setoff_flag;
unsigned char control_stop;
unsigned long int control_time;
unsigned long int control_timel;
unsigned long int control_timer;
unsigned char open_flag;
void set_operate(unsigned char seq,unsigned char open_flag){ //阀门控制
if(open_flag==1){
switch(seq){
case 1:
SET1_ON()
delay_ms((unsigned int)eks[en][0]*100);
break;
case 2:
SET2_ON()
delay_ms((unsigned int)eks[en][1]*100);
break;
case 4:
SET3_ON()
delay_ms((unsigned int)eks[en][2]*100);
break;
case 8:
SET4_ON()
delay_ms((unsigned int)eks[en][3]*100);
break;
case 16:
SET5_ON()
delay_ms((unsigned int)eks[en][4]*100);
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){
float a;
unsigned int b;
a=((float)p/100)*(5-(float)eqy/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;
a=change(p1);
b=change(p2);
c=a;
for(i=0;i<t;i++){
pwm(lr,1,(unsigned int)c);
delay_ms(10);
if(b>a)c+=(float)(b-a)/t;
else c-=(float)(a-b)/t;
}
pwm(lr,1,c);
}
void change_p1(unsigned char p1,unsigned char p2,unsigned char t,unsigned char lr){
unsigned int a,b;
float c;
unsigned char i;
a=change(p1);
b=change(p2);
c=a;
if(b>a)c+=(float)(b-a)/t;
else c-=(float)(a-b)/t;
pwm(lr,1,c);
}
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];
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: //左枪
pwm(1,1,change(pl[0]));
pwm(1,2,change(pl[0]));
change_p(pl[0],pl[1],tl[0],1);
temp=(unsigned int)tl[1]*10;
control_stop=0;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
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)){
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)){
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: //右枪
pwm(2,1,change(pr[0]));
pwm(2,2,change(pr[0]));
change_p(pr[0],pr[1],tr[0],2);
temp=(unsigned int)tr[1]*10;
control_stop=0;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
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)){
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)){
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: //左到右
pwm(1,1,change(pl[0]));
pwm(1,2,change(pl[0]));
change_p(pl[0],pl[1],tl[0],1);
temp=(unsigned int)tl[1]*10;
control_stop=0;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
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)){
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)){
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]));
pwm(2,2,change(pr[0]));
change_p(pr[0],pr[1],tr[0],2);
temp=(unsigned int)tr[1]*10;
control_stop=0;
control_time=0;
while((control_time<temp)&(control_stop!=1)){
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)){
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)){
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: //左右枪同时
control_time=0;
start_l=0;
start_r=0;
while((start_l<=8)|(start_r<=8)){
switch(start_l){ //左枪
case 0: //p1
pwm(1,2,change(pl[0]));
pl_temp=change(pl[0]);
pl_temp1=((float)change(pl[1])-(float)change(pl[0]))/(float)tl[0];
control_timel=0;
start_l=1;
break;
case 1: //p1-p2
if(control_timel>10){
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]));
}
break;
case 2: //p2
if((unsigned int)(control_time/10)>tl[1]+tl[0]){
pl_temp=change(pl[1]);
pl_temp1=((float)change(pl[2])-(float)change(pl[1]))/(float)tl[2];
control_timel=0;
start_l=3;
}
break;
case 3: //p2-p3
if(control_timel>10){
pl_temp+=pl_temp1;
pwm(1,1,pl_temp);
control_timel=0;
}
if((unsigned int)(control_time/10)>tl[2]+tl[1]+tl[0]){
start_l=4;
pwm(1,1,change(pl[2]));
}
break;
case 4: //p3
if((unsigned int)(control_time/10)>tl[3]+tl[2]+tl[1]+tl[0]){
pl_temp=change(pl[2]);
pl_temp1=((float)change(pl[3])-(float)change(pl[2]))/(float)tl[4];
control_timel=0;
start_l=5;
}
break;
case 5: //p3-p4
if(control_timel>10){
pl_temp+=pl_temp1;
pwm(1,1,pl_temp);
control_timel=0;
}
if((unsigned int)(control_time/10)>tl[4]+tl[3]+tl[2]+tl[1]+tl[0]){
start_l=6;
pwm(1,1,change(pl[3]));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -