📄 duojiceshi.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 + -