机器人控制程序(舵机型)

来源:本站
导读:目前正在解读《机器人控制程序(舵机型)》的相关信息,《机器人控制程序(舵机型)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《机器人控制程序(舵机型)》的详细说明。
简介:这里给大家分享一个机器人控制程序(舵机型)。

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 包含头文件(Includes)// 基本资源定义(Definition of basic resources)// 机器人型号:HGR-3M-C-1// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈#include <reg52.h>// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 宏定义(Acer definition)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈#define uchar unsigned char#define uint  unsigned int#define HIGH 1                      //高电平(Logic high)#define LOW 0                       //低电平(Logic low)#define FALSE 0                     //假#define TRUE ~FALSE                 //真// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 函数声明(Function declaration)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈extern void delay_8us();            //把delay_8us()声明为外部函数extern void delay_20us();           //把delay_20us()声明为外部函数extern void delay_200us();          //把delay_200us()声明为外部函数extern void delay_490us();          //把delay_490us()声明为外部函数extern void delay_500us();          //把delay_500us()声明为外部函数extern void delay_1ms();            //把delay_1ms()声明为外部函数extern void delay_2ms();            //把delay_2ms()声明为外部函数extern void delay_5ms();            //把delay_5ms()声明为外部函数extern void delay_10ms();           //把delay_10ms()声明为外部函数extern void delay_200ms();          //把delay_200ms()声明为外部函数extern void delay_500ms();          //把delay_500ms()声明为外部函数extern void delay_1000ms();         //把delay_1000ms()声明为外部函数// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// 全局变量定义(Global variables defined)// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈uchar position[24]={0};             //用于记录24个舵机的位置/*        数组对应端口说明:         ━━━━━>>      P1.0          z1舵机     汇编存储器  40H         position[1]       ━━━━━>>      P1.1          z2舵机                 41H         position[2]       ━━━━━>>      P1.2          z3舵机                 42H         position[3]       ━━━━━>>      P1.3          z4舵机                 43H         position[4]       ━━━━━>>      P1.4          z5舵机                 44H         position[5]       ━━━━━>>      P1.5          z6舵机                 45H         position[6]       ━━━━━>>      P1.6          z7舵机                 46H         position[7]       ━━━━━>>      P1.7          z8舵机                 47H         position[8]       ━━━━━>>      P2.0          p1舵机                 48H         position[9]       ━━━━━>>      P2.1          p2舵机                 49H         position[10]      ━━━━━>>      P2.2          p3舵机                 4AH         position[11]      ━━━━━>>      P2.3          p4舵机                 4BH         position[12]      ━━━━━>>      P2.4          p5舵机                 4CH         position[13]      ━━━━━>>      P2.5          p6舵机                 4DH         position[14]      ━━━━━>>      P2.6          p7舵机                 4EH         position[15]      ━━━━━>>      P2.7          p8舵机                 4FH         position[16]      ━━━━━>>      P3.0         position[17]      ━━━━━>>      P3.1         position[18]      ━━━━━>>      P3.2         position[19]      ━━━━━>>      P3.3         position[20]      ━━━━━>>      P3.4         position[21]      ━━━━━>>      P3.5         position[22]      ━━━━━>>      P3.6         position[23]      ━━━━━>>      P3.7*/uchar kouchu[8];uchar uart[30]={0};uchar paixu_ncha[8]=0;      //提供排序空间//关于扫尾值的参数uchar zsax=10 ;                //14h,z平面sa修正参数uchar psax=8;                //15h,p平面sa修正参数     交互2uchar zsag;                 //16h,z平面sa过渡参数uchar psag=27;                 //17h,p平面sa过渡参数uchar uartin;uchar uartout;unsigned char add;//红外线接收处理    红外线一共是4个字节的数据:包括,地址、地址的重复、数据、和数据的按位取反//变量定义:char     inf_array[2]      = 0;     //红外线接收队列char     inf_dizhi         = 0;     //确认最新数据char     inf_dizhichou     = 0;char     inf_shuju         = 0;char     inf_shujuf        = 0;char     inf_dizhi_buf     = 0;     //缓冲区数据,有可能随时变化,不可相信char     inf_dizhichou_buf = 0;char     inf_shuju_buf     = 0;char     inf_shujuf_buf    = 0;char     inf_shunxu        = 0;     //输入次序,记录目前红外线接收的次序。int      inf_zanshi        = 0;     //红外线数据暂时存储,在使用前应注意其值char     inf_zanshi1       = 0;     //另一个暂时数据,用来做校验char bdata  inf_mode       = 0;     //红外线状态及控制变量,按位使用sbit     inf_mode_en       = inf_mode^7;sbit     inf_mode_new      = inf_mode^6;sbit     inf_mode_cuowu    = inf_mode^0;sbit     P3_2              = P3^2;sbit     P3_3              = P3^3;sbit     P3_4              = P3^4;sbit     TEST              = P2^1;sbit     fengming          = P0^0;/***********************************************************************************/#define  kaishizhi_l       100      //此值为引导码最低阈值#define  kaishizhi_h       230      //此值为引导码最高阈值#define  inf_lingzhi_l     0x07     //此值为"0"码最低阈值#define  inf_lingzhi_h     0x17     //此值为"0"码最高阈值#define  inf_yizhi_l       0x18     //此值为"1"码最低阈值#define  inf_yizhi_h       0x27     //此值为"1"码最高阈值#define  inf_code_0        0x0F#define  inf_code_1        0x0E#define  inf_code_2        0x99     //正常应该是0x10但是不知道为什么不成#define  inf_code_3        0x01#define  inf_code_4        0x02#define  inf_code_5        0x03#define  inf_code_6        0x04#define  inf_code_7        0x05#define  inf_code_8        0x06#define  inf_code_9        0x07#define  inf_code_10       0x08#define  inf_code_11       0x09#define  inf_code_12       0x0A#define  inf_code_13       0x00#define  inf_code_14       0x24#define  inf_code_15       0x20#define  inf_code_16       0x1E#define  inf_code_17       0x18#define  inf_code_18       0x1A#define  inf_code_19       0x16#define  inf_code_20       0x0B#define  inf_code_21       0x12#define  inf_code_22       0x10#define  inf_code_23       0x11#define  inf_code_24       0x0C#define  inf_code_25       0x28#define  inf_code_26       0x17#define  inf_code_27       0x13/*************************************************************************************/// ─────────────────────────────────────────// 函数原型:void initial_mcu()// 函数名称:初始化函数(Initialization MCU Functions)// 功    能:单片机初始化// 参    数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_mcu( ){         P0    = 0x01;              //四个口全赋值为零         P1    = 0x00;         P2    = 0x00;//       P3    = 0x01;         PSW   = 0x00;              //选择00H->07H为工作寄存器组         ACC   = 0x00;              //A B寄存器为零         B     = 0x00;//       PCON  = 0x00;//       TCON  = 0x00;         SCON  = 0x50;         TMOD  = 0x20;//       TH1   = 0xe8;          //11.0592晶振,1200波特率//      TL1   = 0xe8;       TH1   = 0xe6;            //12M晶振 ,1200波特率       TL1   = 0xe6;        TR1 =1;                //启动定时器T1         ES=1;                  //允许串行口中断         PS=1;                  //设计串行口中断优先级         EA=1;               uartin=0;         uartout=0;        }//───────────────────────────────────────//初始化红外线接收变量函数void init_inf(void){    inf_array[0]=0xFF;    inf_array[1]=0xFF;    inf_dizhi_buf     = 0;    inf_dizhichou_buf = 0;    inf_shuju_buf     = 0;    inf_shujuf_buf    = 0;    inf_dizhi         = 0;    inf_dizhichou     = 0;    inf_shuju         = 0;    inf_shujuf        = 0;    inf_shunxu        = 0;    inf_mode_en       = 1;      //开红外线接收软件模块    inf_mode_cuowu    = 0;      //清除错误    /*我们需要使用两部分的硬件资源,    一是定时器1,    二是外部中断0,    下面是分别的初始化:*/    P3_3 = 1;    P3_4 = 1;    //初始化定时器1:    TMOD  = TMOD & 0x0F;        //初始化定时器1的计数方式为方式1    TMOD  = TMOD | 0x10;    TH1   = 0x1F;               //定时器高位    TL1   = 0xFF;               //定时器低位    TR1   = 0;                  //关定时器1计数    IE    = IE | 0x88;          //总中断和定时器1要打开    //初始化外部中断1:    IT1   = 1;                  //INT1的处罚方式为下降沿触发    IE    = IE | 0x84;          //总中断和外部中断1要打开}// ─────────────────────────────────────────// 函数原型:void sorting( )// 函数名称:排序子程序(Sorting Subroutine)// 功    能:对所有通道口的数值进行排序。// 参    数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void sorting( ){    uchar i=0,j=0,x=0;          kouchu[0]=0xFE;          kouchu[1]=0xFD;          kouchu[2]=0xFB;          kouchu[3]=0xF7;          kouchu[4]=0xEF;          kouchu[5]=0xDF;          kouchu[6]=0xBF;          kouchu[7]=0x7F;        //冒泡法排序    for(i=0;i<=6;i++)         for(j=i+1;j<=7;j++)         {                  if(paixu_ncha[i]<paixu_ncha[j])                  {                                       //交换数据                           x=paixu_ncha[j];                           paixu_ncha[j]=paixu_ncha[i];                           paixu_ncha[i]=x;                           x=kouchu[j];                           kouchu[j]=kouchu[i];                           kouchu[i]=x;                  }         }}// ─────────────────────────────────────────// 函数原型:void N_value( )// 函数名称:N差子程序(N poor Subroutine)// 功    能:对临近数值做差,求出相对差值,用于延时。// 参    数:// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void N_value( ){       uchar i;         for(i=0;i<=6;i++)         {                  paixu_ncha[i]=paixu_ncha[i]-paixu_ncha[i+1];         }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// 函数原型:void PWM_16()// 函数名称:16路舵机输出子程序(16 Subroutine output Servos )// 功    能:对临近数值做差,求出相对差值,用于延时。控制端口P1、P2// 入口参数:foot,表示步数// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void PWM_16(){        uchar i=0,j=0;         for(i=0;i<=7;i++)          //给排序数组赋值         {              paixu_ncha[i]=position[i];         }         sorting( );                //调用排序函数         N_value( );                //调用N差函数         P1=0xff;                   //使口P1全部拉高                  delay_500us();             //调用延时490us函数         for(i=0;i<8;i++)           //延时输出到口P1(八路)         {                  for(j=0;j<paixu_ncha[7-i];j++)                  {                           delay_8us();                  }                  P1=P1&kouchu[7-i];         }         for(i=0;i<8;i++)          //给排序数组赋值         {                  paixu_ncha[i]=position[i+8];         }         sorting( );                //调用排序函数         N_value( );                //调用N差函数         P2=0xff;                   //使口P2全部拉高                  delay_500us();             //调用延时490us函数         for(i=0;i<8;i++)           //延时输出到口P1(八路)         {        for(j=0;j<paixu_ncha[7-i];j++)                  {                           delay_8us();                  }                  P2=P2&kouchu[7-i];         }         for(i=0;i<1;i++)         delay_500us();     }// ─────────────────────────────────────────// 函数原型:sao_wei(uchar saowei)// 函数名称:扫尾子程序// 功    能:控制舵机转动的速度和加速度// 影    响:// 入口参数:saowei,表示扫尾系数// 返 回 值:无// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void sao_wei(uchar saowei){  uchar i;  for(i=0;i<saowei;i++)  delay_500us();}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/************************************************************************************//************************************************************************************///所谓函数群指的是一群实现功能相似或相反的函数集合/************************************************************************************/// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                           /*复位函数群*/// 函数原型:void initial_position(uchar type,uchar time)// 函数名称:初始位置调整子程序// 功    能:按照入口参数的类型,选择不同的初始位置并调节。// 参    数:type<-用于决定初始位置类型(局部变量)。//           time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:壹// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_position(uchar type,uchar time)                 {        uchar i,j,k;         for(i=0;i<time;i++)                  for(j=0;j<type;j++)                           for(k=0;k<30;k++)                           {                           /*P1口*/                 //  标准                              position[0]=131;         //z1舵机  160       左腿                           position[1]=45;          //Z2舵机  47                                   position[2]=129;         //z3舵机  135                               position[3]=86;          //Z4舵机  80        右腿                              position[4]=175;         //Z5舵机  158                                       position[5]=91;          //Z6舵机  128                                  position[6]=225;         //Z7舵机  220       左肩                           position[7]=5;           //Z8舵机            右肩                            /*P2口*/                            position[8]=105;         //p1舵机  104       左脚板                             position[9]=82;          //p2舵机  104                                  position[10]=125;        //p3舵机  146       右脚板                           position[11]=111;        //p4舵机  146                                  position[12]=190;        //p5舵机   180                           position[13]=108;        //p6舵机                            position[14]=25;         //p7舵机    40                              position[15]=120;        //p8舵机                                        /*p3口*/                           position[23]=110;                           PWM_16();                          // sao_wei(100);                             }                     // while(1);}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                           /*复位函数群*/// 函数原型:void initial_position1(uchar type,uchar time)// 函数名称:初始位置调整子程序1// 功    能:当下蹲以后,双腿会出现不对称现象,故加二次调整初始位置// 参    数:type<-用于决定初始位置类型(局部变量)。//           time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:壹// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void initial_position1(uchar type,uchar time)                 {        uchar i,j,k;         for(i=0;i<time;i++)                  for(j=0;j<type;j++)                           for(k=0;k<30;k++)                           {                           /*P1口*/                 //  标准                              position[0]=97;          //z1舵机  160    左腿                           position[1]=143;         //Z2舵机  47                                   position[2]=181;         //z3欢纡  135                               position[3]=138;         //Z4舵机  80     右腿                              position[4]=92;          //Z5舵机  158                                   position[5]=60;          //Z6舵机  128                               position[6]=190;         //Z7舵机         左肩                           position[7]=30;          //Z8舵机         右肩                            /*P2口*/                            position[8]=147;         //p1舵机  104    左脚板                             position[9]=138;         //p2舵机  104                             position[10]=175;        //p3舵机  146    右脚板                           position[11]=109;        //p4舵机  146                               position[12]=166;        //p5舵机                            position[13]=100;        //p6舵机                            position[14]=60;         //p7舵机                                  position[15]=130;        //p8舵机                                   /*p3口*/                           position[23]=110;                           PWM_16();                          // sao_wei(100);                             }                    //   while(1);}// 函数原型:void fw_hand(uchar type,uchar time)// 函数名称:双手复位子程序  // 功    能:双手复位// 参    数:type<-用于决定初始位置类型(局部变量)。//           time<-用于确定初始位置的调整时间(局部变量)。// 返 回 值:无// 函数编号:贰// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void fw_hand(uchar type,uchar time)                 {        uchar i,j,k;         for(i=0;i<time;i++)                  for(j=0;j<type;j++)                           for(k=0;k<30;k++)                           {                                                     position[6]=220;         //220 Z7舵机       左肩                                                      position[7]=27;          //Z8舵机           右肩                                                       position[12]=195;        //p5舵机                            position[13]=95;         //p6舵机                            position[14]=55;         //p7舵机                                  position[15]=160;        //p8舵机                                   PWM_16();                           }}                             // ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                                    /*下蹲和起立函数群*/// 函数原型:void xd_zu1(uchar foot))// 函数名称:下蹲第1族子程序。// 功    能:// 参    数:foot, 表示积分步数。// 返 回 值:无// 函数编号:一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void xd_zu1(uchar foot){                 uchar i,j;         j=foot/2+zsax;                    //z平面扫尾值初始化计算公式  28/2+6=20       for(i=0;i<foot;i++)            {               position[0]--;              //z1   190+28=218   左腿下蹲               position[1]++;              //z2   91+2*28=147               position[1]++;               position[2]++;              //z3   133-28=105                              position[3]++;              //z4   101-28=73    右腿下蹲               position[4]--;              //z5   158-2*28=102               position[4]--;               position[5]--;              //z6   149+28=177               PWM_16();               if(j>5)                 {                   j--;                   sao_wei(j);            //调用扫尾值计算子程序,最后zsag=5                   zsag=j;                 }                else                  {                   sao_wei(5);                   zsag=5;                 }            }}   // 函数原型:void xd_zu2(uchar foot))// 函数名称:下蹲第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值:无// 函数编号:二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void xd_zu2(uchar foot){                 uchar i,j;         j=zsag;                           //z平面扫尾值过渡         for(i=0;i<foot;i++)            {               position[0]--;              //z1   218+28=246   左腿下蹲               position[1]++;              //z2   147+2*28=203               position[1]++;               position[2]++;              //z3   105-28=77               position[3]++;              //z4   73-28=45     右腿下蹲               position[4]--;              //z5   102-2*28=46               position[4]--;               position[5]--;              //z6   177+28=205               PWM_16();               if(j<32)                 {                   j++;                   sao_wei(j);             //调用扫尾值计算子程序  zsagwei为32                   zsag=j;                 }                else                  {                   sao_wei(32);                   zsag=32;                 }            }}  // 函数原型: void ql_zu1(uchar foot))// 函数名称: 起立第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ql_zu1(uchar foot){                 uchar i,j;         j=zsag;                          //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;             //z1   左褪起立                position[1]--;             //z2                position[1]--;                position[2]--;             //z3                position[3]--;             //z4   右腿起立                position[4]++;             //z5                position[4]++;                position[5]++;             //z6                PWM_16();               if(j>35)                 {                   j--;                   sao_wei(j);             //调用扫尾值计算子程序                   j=zsag;                 }                else                  {                    sao_wei(35);                    zsag=5;                  }            }}// 函数原型:void ql_zu2(uchar foot)// 函数名称:起立第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ql_zu2(uchar foot){                 uchar i,j=0;         j=zsag;                          //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;             //z1   左褪起立                position[1]--;             //z2                position[1]--;                position[2]--;             //z3                position[3]--;             //z4    右腿起立                position[4]++;             //z5                position[4]++;                position[5]++;             //z6                PWM_16();               if(j<32)                 {                   j++;                   sao_wei(j);            //调用扫尾值计算子程序                   zsag=j;                 }                else                  {                   sao_wei(32);                   zsag=32;                 }            }}   // ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                          /*侧身+摆手函数群*/                          // 函数原型:void l_cs_r_bs_zu1(uchar foot)// 函数名称:向左侧身+右摆手第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void l_cs_r_bs_zu1(uchar foot){                 uchar i,j;         j=psag;                          //p平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[8]--;            //p1   134-30=104  左腿                position[9]++;            //p2   134-30=04                position[10]--;           //p3   176-30=146  右腿                position[11]++;           //p4   176-30=146                position[12]++;            //p5                                   position[14]++;            //p7                  PWM_16();               if(j>5)                 {                   j--;                                     sao_wei(j);                   psag=j;                  //psag为20~5                 }                 else                  {                  sao_wei(5);                  psag=5;                 }            }}// 函数原型:void l_cs_r_bs_zu2(uchar foot)// 函数名称:向左侧身+右摆手第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void l_cs_r_bs_zu2(uchar foot){                 uchar i,j;          j=10;            //p平面扫尾值初始化计算公式  15&127+8=135         for(i=0;i<foot;i++)            {                position[8]--;            //p1   104-30=74  左腿                position[9]++;            //p2   104-30=74                position[10]--;           //p3   146-30=116 右腿                position[11]++;           //p4   146-30=116                position[12]++;            //p5  摆手                   position[14]++;            //p7                   PWM_16();               if(j<32)                                    {                   j++;                    sao_wei(j);            //psag为5到20                   psag=j;                 }                else                  {                  sao_wei(32);                  psag=32;                 }            }}// 函数原型:void r_cs_l_bs_zu1(uchar foot)// 函数名称:向右侧身+左摆手第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void r_cs_l_bs_zu1(uchar foot){                 uchar i,j;         j=psag;                          //p平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[8]++;            //p1    74+30=104  左腿                    position[9]--;            //p2    74+30=104                position[10]++;           //p3    116+30=146 右腿                position[11]--;           //p4    116+30=146                position[12]--;            //p5   摆手                 position[14]--;            //p7                  PWM_16();               if(j>6)                 {                   j--;                   sao_wei(j);                   psag=j;                   //psag为20~5                 }                else                  {                   sao_wei(6);                   psag=5;                 }            }}// 函数原型:void r_cs_l_bs_zu2(uchar foot)// 函数名称:向右侧身+左摆手第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void r_cs_l_bs_zu2(uchar foot){                uchar i,j;         j=psag;                          //p平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[8]++;            //p1   104+30=134  左腿                position[9]--;            //p2   104+30=134                position[10]++;           //p3   146+30=176  右腿                position[11]--;           //p4   146+30=176                position[12]--;            //p5   摆手                                position[14]--;            //p7                  PWM_16();               if(j<20)                 {                   j++;                                     sao_wei(j);                   psag=j;                  //psag为5~20                 }                else                  {                  sao_wei(20);                  psag=20;                 }            }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                                  /*抬腿和落腿函数群*/// 函数原型:void lt_up_zu1(uchar foot)// 函数名称:左腿抬起第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_up_zu1(uchar foot){                 uchar i,j;                       //z平面扫尾值初始化计算公式          j=(foot/2)+zsax;          for(i=0;i<foot;i++)            {                position[0]--;            //z1                position[1]++;            //z2                 position[1]++;                           position[2]++;            //z3                PWM_16();               if(j>5)                 {                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void lt_up_zu2(uchar foot)// 函数名称:左腿抬起第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_up_zu2(uchar foot){                 uchar i,j;          j=zsag;                         //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]--;            //z1                position[1]++;            //z2                 position[1]++;                           position[2]++;            //z3                PWM_16();               if(j<32)                 {                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=32;                 }            }}// 函数原型:void rt_up_zu1(uchar foot)// 函数名称:右腿抬起第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_up_zu1(uchar foot){                 uchar i,j;          j=zsag;                        //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[3]++;           //z4                position[4]--;           //z5                position[4]--;                position[5]--;           //z6                PWM_16();               if(j>5)                 {                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void rt_up_zu2(uchar foot)// 函数名称:右腿抬起第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_up_zu2(uchar foot){                 uchar i,j;          j=zsag;                       //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[3]++;           //z4                position[4]--;           //z5                position[4]--;                position[5]--;           //z6                PWM_16();               if(j<32)                 {                   j++;                    sao_wei(j);                   zsag=j;                 }                else                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         {                  sao_wei(32);                  zsag=32;                 }            }}// 函数原型:void lt_dw_zu1(uchar foot)// 函数名称:左腿落下第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_dw_zu1(uchar foot){                 uchar i,j;          j=zsag;                      //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;         //z1                position[1]--;         //z2                position[1]--;                position[2]--;         //z3                PWM_16();               if(j>5)                 {                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void lt_dw_zu2(uchar foot)// 函数名称:左腿落下第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lt_dw_zu2(uchar foot){                 uchar i,j;          j=zsag;                     //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;         //z1                position[1]--;         //z2                position[1]--;                position[2]--;         //z3                PWM_16();               if(j<32)                 {                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=32;                 }            }}// 函数原型:void rt_dw_zu1(uchar foot)// 函数名称:右腿落下第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_dw_zu1(uchar foot){                 uchar i,j;                    //z平面扫尾值过渡          j=zsag;         for(i=0;i<foot;i++)            {                position[3]--;         //z4                position[4]++;         //z5                position[4]++;                position[5]++;         //z6                PWM_16();               if(j>5)                 {                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void rt_dw_zu2(uchar foot)// 函数名称:右腿落下第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rt_dw_zu2(uchar foot){                 uchar i,j;          j=zsag;                       //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[3]--;         //z4                position[4]++;         //z5                position[4]++;                position[5]++;         //z6                PWM_16();               if(j<32)                 {                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=32;                 }            }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                                 /*前进中腿抬起和落下函数群*/// 函数原型:void ft_ru_zu1(uchar foot)// 函数名称:前进中右腿抬起第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu1(uchar foot){                 uchar i,j;         j=(foot/2)&127+zsax;             //z平面扫尾值初始化计算公式   j=133         for(i=0;i<foot;i++)            {                position[0]++;           //z1  246-10=236  左腿                position[2]++;           //z3  77-10=67                position[3]++;           //z4  45-2*10=25  右腿                position[3]++;                position[4]--;           //z5  46-2*10=26                position[4]--;                PWM_16();               if(j>5)                 {                   j--;                   j--;                    sao_wei(j);           // 最后zsag=113        抖动                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void ft_ru_zu2(uchar foot)// 函数名称:前进中右腿抬起第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu2(uchar foot){                 uchar i,j;         j=zsag;                         //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;           //z1  236-10=226   左腿                position[2]++;           //z3  67-10=57                position[3]++;           //z4  25-2*10=5    右腿                position[3]++;                         position[4]--;           //z5  26-2*10=6                position[4]--;                PWM_16();               if(j<32)                 {                   j++;                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=32;                 }            }}// 函数原型:void ft_rd_zu1(uchar foot)// 函数名称:前进中右腿落下第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 十九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu1(uchar foot){                 uchar i,j;         j=zsag;                        //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;          //z1    226-10=216   左腿                position[2]++;          //z3    57-10=47                             position[4]++;          //z5    6+2*10=26                position[4]++;                          position[5]++;          //z6    205-2*10=185                position[5]++;                PWM_16();               if(j>5)                 {                   j--;                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void ft_rd_zu2(uchar foot)// 函数名称:前进中右腿落下第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu2(uchar foot){                 uchar i,j;         j=zsag;                       //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]++;          //z1   216-10=206  左腿                position[2]++;          //z3   47-10=37                             position[4]++;          //z5   26+2*10=46  右腿                position[4]++;                          position[5]++;          //z6   185-2*10=165                position[5]++;                PWM_16();               if(j<32)                 {                   j++;                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=53;                 }            }}// 函数原型:void ft_lu_zu1(uchar foot)// 函数名称:前进中左腿抬起第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu1(uchar foot){                 uchar i,j;         j=zsag;                           //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[0]--;             //z1    206+20=226   左腿                position[0]--;                position[1]++;             //z2    203+20=223                position[1]++;                                position[3]--;             //z4    5+10=15     右腿                position[5]--;             //z6    165+10=175                PWM_16();               if(j>5)                 {                   j--;                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void ft_lu_zu2(uchar foot)// 函数名称:前进中左腿抬起第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu2(uchar foot){                 uchar i,j;         j=zsag;                          //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                                position[0]--;             //z1   226+20=246   左腿                position[0]--;                position[1]++;             //z2   223+20=243                position[1]++;                position[3]--;             //z4   15+10=25     右腿                position[5]--;             //z6   175+10=185                PWM_16();               if(j<32)                 {                   j++;                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(32);                  zsag=32;                 }            }}// 函数原型:void ft_ld_zu1(uchar foot)// 函数名称:前进中左腿落下第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十三// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu1(uchar foot){                 uchar i,j;         j=zsag;                          //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[1]--;            //z2     243-20=223   左腿                position[1]--;                position[2]--;            //z3     37+20=57                position[2]--;                                position[3]--;            //z4     25+10=35     右腿                position[5]--;            //z6     185+10=195                PWM_16();               if(j>5)                 {                   j--;                   j--;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(5);                  zsag=5;                 }            }}// 函数原型:void ft_ld_zu2(uchar foot)// 函数名称:前进中左腿落下第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十四// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu2(uchar foot){                 uchar i,j;         j=zsag;                           //z平面扫尾值过渡         for(i=0;i<foot;i++)            {                position[1]--;            //z2     223-20=203   左腿                position[1]--;                position[2]--;            //z3     57+20=77                 position[2]--;                                position[3]--;            //z4     35+10=45      右腿                  position[5]--;            //z6     195+10=205                PWM_16();               if(j<53)                 {                   j++;                   j++;                    sao_wei(j);                   zsag=j;                 }                else                  {                  sao_wei(53);                  zsag=53;                 }            }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                               /*侧身+抬落腿+摆手函数群*/// 函数原型:void  lc_ru(uchar foot)// 函数名称:左侧身+抬右腿+右摆手子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十五// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lc_ru_r_bs(uchar foot){                 uchar i,j;         j=psag;                         //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[0]++;           //z1                position[2]++;           //z3                position[3]++;           //z4                position[3]++;                position[4]--;           //z5                position[4]--;                                position[8]--;           //p1                position[9]++;           //p2                position[10]--;          //p3                position[11]++;          //p4                position[12]++;          //p5                                  position[14]++;          //p7                                 PWM_16();               if(j<40)                 {                   j+=2;                                  sao_wei(j);                   psag=j;             //psag为20~30                 }                else                  {                  sao_wei(40);                  psag=30;                 }            }}// 函数原型:void  rc_rd_l_bs(uchar foot)// 函数名称:右侧身+落右腿+左摆手子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十六// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rc_rd_l_bs(uchar foot){                 uchar i,j;         j=psag;                             //p平面扫尾过渡值,舍弃z平面过渡值                       for(i=0;i<foot;i++)            {                position[0]++;               //z1                position[2]++;               //z3                position[4]++;               //z5                position[4]++;                position[5]++;               //z6                position[5]++;                                position[8]++;              //p1                position[9]--;              //p2                position[10]++;             //p3                position[11]--;             //p4                position[12]--;            //p5                                 position[14]--;            //p7                                   PWM_16();               if(j>20)                 {                   j--;                                  sao_wei(j);                   psag=j;                   //psag为30~20                 }                else                  {                  sao_wei(20);                  psag=20;                 }            }}// 函数原型:void  rc_lu_l_bs(uchar foot)// 函数名称:右侧身+抬左腿+左摆手子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十七// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void rc_lu_l_bs(uchar foot){                 uchar i,j;         j=psag;                               //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[3]--;                 //z4                position[5]--;                 //z6                position[0]--;                 //z1                position[0]--;                position[1]++;                 //z2                position[1]++;                               position[8]++;                 //p1                position[9]--;                 //p2                position[10]++;                //p3                position[11]--;                //p4                position[12]--;            //p5                                 position[14]--;            //p7                                 PWM_16();               if(j<30)                 {                   j++;                                     sao_wei(j);                   psag=j;                    //psag为20~30                 }                else                  {                  sao_wei(30);                  psag=30;                 }            }}// 函数原型:void  lc_ld_r_bs(uchar foot)// 函数名称:左侧身+落左腿+右摆手子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十八// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void lc_ld_r_bs(uchar foot){                 uchar i,j;         j=psag;                            //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[3]--;              //z4                position[5]--;              //z6                position[1]--;              //z2                position[1]--;                position[2]--;              //z3                position[2]--;                                position[8]--;              //p1                position[9]++;              //p2                position[10]--;             //p3                position[11]++;             //p4                position[12]++;            //p5                                 position[14]++;            //p7                                 PWM_16();               if(j>20)                 {                   j--;                                     sao_wei(j);                   psag=j;                    //psag为30~20                 }                else                  {                  sao_wei(20);                  psag=20;                 }            }}// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈                                /*抬落腿前进+摆手函数群*/// 函数原型:void  ft_ru_zu2_bs(uchar foot)// 函数名称:抬右腿前进+摆手第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 二十九// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ru_zu2_bs(uchar foot){                 uchar i,j;         j=psag;                          //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[0]++;            //z1                position[2]++;            //z3                position[3]++;            //z4                position[3]++;                position[4]--;            //z5                position[4]--;                 position[6]--;            //z7                position[7]--;            //z8                              PWM_16();               if(j<40)                 {                   j++;                                     sao_wei(j);                   zsag=j;            //psag=30~40                 }                else                  {                  sao_wei(40);                  zsag=40;                 }            }}// 函数原型:void  ft_rd_zu1_bs(uchar foot)// 函数名称:落右腿前进+摆手第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_rd_zu1_bs(uchar foot){                 uchar i,j;         j=psag;                           //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[0]++;             //z1                position[2]++;             //z3                position[4]++;             //z5                position[4]++;                position[5]++;             //z6                position[5]++;                position[6]--;            //z7                position[7]--;            //z8                              PWM_16();               if(j>30)                 {                   j--;                                    sao_wei(j);                   psag=j;             //psag=40~30                 }                else                  {                  sao_wei(30);                  psag=30;                 }            }}// 函数原型:void  ft_lu_zu2_bs(uchar foot)// 函数名称:抬左腿前进+摆手第2族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十一// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_lu_zu2_bs(uchar foot){                 uchar i,j;         j=psag;                              //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[3]--;                //z4                position[5]--;                //z6                position[0]--;                //z1                position[0]--;                 position[1]++;                //z2                position[1]++;                position[6]++;            //z7                position[7]++;            //z8                               PWM_16();               if(j<40)                 {                   j++;                                      sao_wei(j);                   psag=j;             //psag为30~40                 }                else                  {                   sao_wei(40);                   psag=40;                 }            }}// 函数原型:void  ft_ld_zu1_bs(uchar foot)// 函数名称:落左腿前进+摆手第1族子程序// 功    能:// 参    数: foot, 表示积分步数。// 返 回 值: 无// 函数编号: 三十二// ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈void ft_ld_zu1_bs(uchar foot){                 uchar i,j;         j=psag;                              //p平面扫尾过渡值,舍弃z平面过渡值         for(i=0;i<foot;i++)            {                position[3]--;                //z4                position[5]--;                //z6                position

提醒:《机器人控制程序(舵机型)》最后刷新时间 2024-03-14 01:02:35,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《机器人控制程序(舵机型)》该内容的真实性请自行鉴别。