⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 duojiceshi.c

📁 六足机器人程序
💻 C
字号:
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include <intrins.h>
sbit PWM=P1^0;    //定义LED端口
sbit PWM1=P1^1;
sbit PWM2=P1^2;
int  a;   //定时器中断计数
int m,n,o; //前进标志参数
int flag  ;  //动作执行标志
int i,j,k; //后退标志参数
int e,f,g; //右转标志参数
int flag1,flag2;   // 执行次数标志

void Init_Timer1(void)
{
 TMOD |= 0x10;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 
 TH1=0xFF;      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
 TL1=0xA3;
 EA=1;            //总中断打开
 ET1=1;           //定时器中断打开
 TR1=1;           //定时器开关打开   传感器控制端定义
IT0=1;       //下降沿触发
   EX0=1;
}

void delay(unsigned int t)

{
while(--t);


}
void zuotuiqian ()       //定义左腿往前迈   同时中间腿撑起
{
       if (a<7)
	   {
       PWM2=1;
       PWM=1;
	   }
	   else if (a>7&&a<20)
	   {
	   PWM2=0;
       PWM=1;	
	   }
       else if (a>20&&a<200)
	   {
       PWM2=0;
	   PWM=0;
	   }
       else if (a==200)
	   {
       a=0;
	   m++;
       }


      
}


void youtuiqian()          //定义右腿往前迈 同时中间腿撑起
{
          if (a<5)
		  {
          PWM=1;
          PWM1=1;
		  }
          else if (a>5&&a<14)
		  {
          PWM=0;
		  PWM1=1;
		  }
		  else if (a>14&&a<200)
		  {
		  PWM=0;
		  PWM1=0;
		  }
          else if (a==200)
		  {
          a=0;
		  n++;
		  }
}


void qianmai()           //定义左右腿同时往前迈  实现前进的动作
{
     
          if (a<5) 
		  {
          PWM1=1;
		  PWM2=1;
		  }
		  else if (a>5&&a<14)
		  {
		  PWM1=0;
		  PWM2=1;
		  }
		  else if (a>14&&a<200)
		  {
		  PWM1=0;
		  PWM2=0;
		  }
          else if (a==200)
          {
		  a=0;
          o++;

		  }

}


void qianjin()              //  前进动作整合  
{

    m=0;
	 n=0;
	 o=0;
	 flag++;
   while(1)
  {  
   
      if(m<30)
      zuotuiqian();
      else 
      {      
        if (n<30)
        youtuiqian();
         	else
   	    { 
	     if (o<30)
	     qianmai();
	       else 
	      break;
	     }
      }

   }
}


void zuotuihou()           // 定义左腿往后迈 同时中间腿撑起
{

       if (a<14 ) 
	   {
       PWM2=1;
	   PWM=1;
	   }
	   else if (a>14&&a<20)
	   {
	   PWM2=0;
	   PWM=1;
	   }
       else if (a>20&&a<200)
	   {
       PWM=0;
	   PWM2=0;
	   }
       else if (a==200)
	   {
       a=0;
       i++;
       }
            
}


void youtuihou()              //定义右腿往后迈  同时中间腿撑起
{
    
          if (a<5)
		  {
		  PWM1=1;
          PWM=1;
		  }
		  else if (a>5&&a<7)
		  {
		  PWM=0;
		  PWM1=1;
		  }
          else if (a>7&&a<200)
		  {
          PWM=0;
		  PWM1=0;
		  }
          else if (a==200)
          {
		  a=0;
		  j++;
		  }

}

void houmai()                 //定义左右腿同时往前迈   实现后退的动作
{

         
       if (a<7)
       {
	   PWM2=1;
	   PWM1=1;
	   }
	   else if (a>7&&a<14)
	   {
	   PWM2=0;
	   PWM1=1;
	   }
       else if (a>14&&a<200)
	   {
       PWM2=0;
       PWM1=0;
	   }
       else if (a==200)
      { 
	  a=0;
	  k++;

	  }

}


void houtui()                 //后退动作整合
{

    i=0;
	j=0;
	 k=0;
	 	  flag1++;
   while(1)
  {  
   
      if(i<30)
     zuotuihou();
      else 
      {      
        if (j<30)
        youtuihou();
         	else
   	    { 
	     if (k<30)
	     houmai();
	       else 
	      break;
	     }
      }

   }

}

void youzhuan1()        // 左腿往前迈   中间腿撑起
{
  
     if (a<7)
	   {
       PWM2=1;
       PWM=1;
	   }
	   else if (a>7&&a<20)
	   {
	   PWM2=0;
       PWM=1;	
	   }
       else if (a>20&&a<200)
	   {
       PWM2=0;
	   PWM=0;
	   }
       else if (a==200)
	   {
       a=0;
	   e++;
       }

}

void youzhuan2()         //右腿往后迈  同时中间腿撑起
{
       if (a<5)
		  {
		  PWM1=1;
          PWM=1;
		  }
		  else if (a>5&&a<7)
		  {
		  PWM=0;
		  PWM1=1;
		  }
          else if (a>7&&a<200)
		  {
          PWM=0;
		  PWM1=0;
		  }
          else if (a==200)
          {
		  a=0;
		  f++;
		  }
}


void youzhuan3()
{
     
          if (a<14) 
		  {
          PWM1=1;
		  PWM2=1;
		  }
          else if (a<200)
          {
		  PWM1=0;
          PWM2=0;
		  }
          else if (a==200)
          {
		  a=0;
  		  g++;
		  }

}

void youzhuan()
{

       e=0;
	   f=0;
	   g=0;
	   		  flag2++;

   while(1)
  {  
   
      if(e<30)
    youzhuan1();
      else 
      {      
        if (f<30)
        youzhuan2();
         	else
   	    { 
	     if (g<30)
	     youzhuan3();
	       else 
	      break;
	     }
      }

   }

}






void main()

{

 
Init_Timer1();

while(1)
{
if(flag<8)
qianjin();
else 
{
if(flag1<4)
houtui();
else
{
flag=0;
flag1=0;
}


}


}



}


void Timer1_isr(void) interrupt 3 using 1
{
 TH1=0xFF;		 //中赂持

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -