文档库 最新最全的文档下载
当前位置:文档库 › 窄足机器人程序

窄足机器人程序

#include
#define uint unsigned int
#define uchar unsigned char
uchar num;
uchar flg=1;
uint num1;
uint n=0;

sbit pw1=P2^0;
sbit pw2=P2^1;
sbit pw3=P2^2;
sbit pw4=P2^3;
sbit pw5=P2^4;
sbit pw6=P2^5;
sbit pw7=P2^6;
sbit pw8=P2^7;
sbit key=P3^5;
void init()
{
P2=0x00;
P3=0xff;
TMOD=0x02;
TH0=206;
TL0=206;
EA=1;
ET0=1;
}

void angle(float Servo1_angle,float Servo2_angle,float Servo3_angle,float Servo4_angle,float Servo5_angle,float Servo6_angle,float Servo7_angle,float Servo8_angle,uint action_time )
{
uint Servo1_pw,Servo2_pw,Servo3_pw,Servo4_pw,Servo5_pw,Servo6_pw,Servo7_pw,Servo8_pw;
uchar Servo1_loop_num,Servo2_loop_num,Servo3_loop_num,Servo4_loop_num,Servo5_loop_num,Servo6_loop_num,Servo7_loop_num,Servo8_loop_num;
uchar flag_delay=0;
Servo1_pw=(uint)(500+100*Servo1_angle/9);
Servo2_pw=(uint)(500+100*Servo2_angle/9);
Servo3_pw=(uint)(500+100*Servo3_angle/9);
Servo4_pw=(uint)(500+100*Servo4_angle/9);
Servo5_pw=(uint)(500+100*Servo5_angle/9);
Servo6_pw=(uint)(500+100*Servo6_angle/9);
Servo7_pw=(uint)(500+100*Servo7_angle/9);
Servo8_pw=(uint)(500+100*Servo8_angle/9);

Servo1_loop_num=Servo1_pw/50;
Servo2_loop_num=Servo2_pw/50;
Servo3_loop_num=Servo3_pw/50;
Servo4_loop_num=Servo4_pw/50;
Servo5_loop_num=Servo5_pw/50;
Servo6_loop_num=Servo6_pw/50;
Servo7_loop_num=Servo7_pw/50;
Servo8_loop_num=Servo8_pw/50;

while(!flag_delay)
{
TR0=1;
pw1=1;
while(num!=Servo1_loop_num);
pw1=0;
while(!(num==50));

num=0;
pw2=1;
while(num!=Servo2_loop_num);
pw2=0;
while(!(num==50));

num=0;
pw3=1;
while(num!=Servo3_loop_num);
pw3=0;
while(!(num==50));

num=0;
pw4=1;
while(num!=Servo4_loop_num);
pw4=0;
while(!(num==50));

num=0;
pw5=1;
while(num!=Servo5_loop_num);
pw5=0;
while(!(num==50));

num=0;
pw6=1;
while(num!=Servo6_loop_num);
pw6=0;
while(!(num==50));

num=0;
pw7=1;
while(num!=Servo7_loop_num);
pw7=0;
while(!(num==50));

num=0;
pw8=1;
while(num!=Servo8_loop_num);
pw8=0;
while(!(num==50));

num=0;
num1++;
if(num1==action_time)
{
TR0=0;
flag_delay=1;
num1=0;
}

}
}


void main()
{
init();
key=1;
while(key)
{
angle(90,90,90,90,90,90,0,0,10);
}
key=1;
/********************前进*************************************/
angle(90,90,100.8,90,104.4,104.4,0,0,10);/*while(1)while(1)*/
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,104.4,104.4,0,0,10);
while(flg)
{
angle(144,144,36,36,90,90,0,0,10);
angle(144,144,36,36,79.2,75.6,0,0,10);
angle(90,144,90,36,75.6,79.2,0,0,10);
angle(90,28.8,90,144,75.6,79.2,0,0,10);
angle(36,36,144,144,75.6,75.6,0,0,10);
angle(36,36,144,144,90,90,0,0,10);
angle(36,36,144,144,104.4,104.4,0,0,10);
angle(36,90,144,90,108,108,0,0,10);
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,108,104.4,0,0,10);
n++;


if(n==1)
{
n=0;
flg=0;
}
}
flg=1;

/*************立正*******************************/
angle(144,144,36,36,79.2,79.2,0,0,10);
angle(90,144,90,36,79.2,79.2,0,0,10);
angle(90,90,100.8,90,79.2,79.2,0,0,10);
angle(90,90,90,90,90,90,0,0,10);

/*********************前翻*******************************/
while(flg)
{
angle(90,90,90,90,90,90,0,0,10);
angle(176.4,10.8,90,90,90,90,0,0,10);
angle(176.4,15,135,45,90,90,0,0,10);
angle(176.4,15,180,15,90,90,0,0,10);
angle(135,45,180,15,90,90,0,0,10);
angle(90,90,180,15,90,90,0,0,10);
angle(90,90,45,135,90,90,0,0,10);
angle(15,176.4,45,135,90,90,0,0,20);
angle(90,90,90,90,90,90,0,0,10);
n++;
if(n==3)
{
n=0;
flg=0;
}
}
flg=1;

/*******************前进*************************/
angle(90,90,100.8,90,104.4,104.4,0,0,10);
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,104.4,104.4,0,0,10);
while(flg)
{
angle(144,144,36,36,90,90,0,0,10);
angle(144,144,36,36,79.2,75.6,0,0,10);
angle(90,144,90,36,75.6,79.2,0,0,10);
angle(90,28.8,90,144,75.6,79.2,0,0,10);
angle(36,36,144,144,75.6,75.6,0,0,10);
angle(36,36,144,144,90,90,0,0,10);
angle(36,36,144,144,104.4,104.4,0,0,10);
angle(36,90,144,90,108,108,0,0,10);
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,108,104.4,0,0,10);
n++;
if(n==1)
{
n=0;
flg=0;
}
}
flg=1;

/*************立正*******************************/
angle(144,144,36,36,79.2,79.2,0,0,10);
angle(90,144,90,36,79.2,79.2,0,0,10);
angle(90,90,100.8,90,79.2,79.2,0,0,10);
angle(90,90,90,90,90,90,0,0,10);

/*********************后翻************************/
while(flg)
{
angle(90,90,90,90,90,90,0,0,10);
angle(10.8,176.4,90,90,90,90,0,0,10);
angle(15,176.4,45,135,90,90,0,0,10);//*//*
angle(10,180,15,180,90,90,0,0,10);//
angle(45,140,15,176.4,90,90,0,0,10);
angle(90,90,15,172.8,90,90,0,0,10);
angle(90,90,180,15,90,90,0,0,20);//{}
angle(176.4,15,180,15,90,90,0,0,10);
angle(176.4,15,135,45,90,90,0,0,10);
angle(176.4,15,90,90,90,90,0,0,10);
angle(90,90,90,90,90,90,0,0,10);//;while(1){}
n++;
if(n==2)
{
n=0;
flg=0;
}
}
flg=1;

/************************前走************************/
angle(90,90,100.8,90,104.4,104.4,0,0,10);
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,104.4,104.4,0,0,10);
while(1)
{
angle(144,144,36,36,90,90,0,0,10);
angle(144,144,36,36,79.2,75.6,0,0,10);
angle(90,144,90,36,75.6,79.2,0,0,10);
angle(90,28.8,90,144,75.6,79.2,0,0,10);
angle(36,36,144,144,75.6,75.6,0,0,10);
angle(36,36,144,144,90,90,0,0,10);
angle(36,36,144,144,104.4,104.4,0,0,10);
angle(36,90,144,90,108,108,0,0,10);
angle(151.2,90,36,90,97.2,104.4,0,0,10);
angle(144,144,36,36,108,104.4,0,0,10);
}
}

void Time0()interrupt 1
{
TH1=206;
TL1=206;
num++;
}

相关文档
相关文档 最新文档