📄 pwm.txt
字号:
#include<reg51.h>
void initial(void);
void _set_time(int,int,int,int,int,int,int,int,int,int,int,int);
void delay1ms(int);
unsigned int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12;
int flag1,flag2;
main()
{ p1^7=1;
inital();
while(1)
{if(p1^7==0)
{ _set_time(1620,1830,1620,1620,1620,1830,1620,1620,1620,1830,1620,1620); //电机2,6,10正转11°,2,4,6脚抬起;
delay1ms(200);
_set_time(1830,1830,1620,1620,1830,1830,1620,1620,1830,1830,1620,1620); //电机1,5,9正转11°,2,4,6脚前摆;
delay1ms(200);
_set_time(1830,1620,1620,1620,1830,1620,1620,1620,1830,1620,1620,1620); //电机2,6,10反转11°,2,4,6脚放下;
delay1ms(200);
_set_time(1830,1620,1620,1830,1830,1620,1620,1830,1830,1620,1620,1830); //电机4,8,12正转11°,1,3,5脚抬起;
delay1ms(200);
_set_time(1620,1620,1620,1830,1620,1620,1620,1830,1620,1620,1620,1830); //电机1,5,9反转11°,身体向前移动;
delay1ms(200);
_set_time(1620,1620,1830,1830,1620,1620,1830,1830,1620,1620,1830,1830); //电机3,7,11反转11°,1,3,5脚向前摆;
delay1ms(200);
_set_time(1620,1620,1830,1620,1620,1620,1830,1620,1620,1620,1830,1620); //电机4,8,12反转11°。1,3,5脚放下;
delay1ms(200);
_set_time(1620,1830,1830,1620,1620,1830,1830,1620,1620,1830,1830,1620); //电机2.6.10正转11°,2,4,6脚抬起;
delay1ms(200);
_set_time(1620,1830,1620,1620,1620,1830,1620,1620,1620,1830,1620,1620);// 电机3,7,11反转11°。身体向前移动;
delay1ms(200);
_set_time(1620,1620,1620,1620,1620,1620,1620,1620,1620,1620,1620,1620);//电机2,6,10反转11°。2,4,6脚放下;
delay1ms(200);
}
}
//初始化子程序//
void initial(void)
{ TMOD=0x11;
flag1=flag2=1;
TH0=TH1=(65536-1620)/256;
TL0=TL1=(65536-1620)%256;
EA=1;
_set_time(1620,1620,1620,1620,1620,1620,1620,1620,1620,1620,1620,1620);
ET0=1;TR0=1;PT0=1;
ET1=1;TR1=1;PT1=1;
delay1ms(200);
}
//延时子程序//
void delay1ms(int x)
{ int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
//定时时间设定程序定时器0//
viod timero(void)interrupt 1
{ switch(flag1)
{
case1:{p0^0=1;TH0=(65536-t1)/256;TL0=(65536-t1)%256;break;}
case2:{p0^0=0;TH0=(65536-2540+t1)/256;TL0=(65536-2540+t1)%256;break;}
case3:{p0^1=1;TH0=(65536-t2)/256;TL0=(65536-t2)%256;break;}
case4:{p0^1=0;TH0=(65536-2540+t2)/256;TL0=(65536-2540+t2)%256;break;}
case5:{p0^2=1;TH=(65536-t3)/256;TL0=(65536-t3)%256;break;}
case6:{p0^2=0;TH0=(65536-2540+t3)/256;TL0=(65536-2540+t3)%256;break;}
case7:{p0^3=1;TH=(65536-t4)/256;TL0=(65536-t4)%256;break;}
case8:{p0^3=0;TH0=(65536-2540+t4)/256;TL0=(65536-2540+t4)%256;break;}
case9:{p0^4=1;TH=(65536-t5)/256;TL0=(65536-t5)%256;break;}
case10:{p0^4=0;TH0=(65536-2540+t5)/256;TL0=(65536-2540+t5)%256;break;}
case11:{p0^5=1;TH0=(65536-t6)/256;TL0=(65536-t6)%256;break;}
case12:{p0^5=0;TH0=(65536-8150+t6)/256;TL0=(65536-8150+t6)%256;flag1=0;}
defaut:flag1=0;
}
flag1++;
}
//定时器1//
viod timer1(void)interrupt 2
{ switch(flag2)
{
case1:{p1^0=1;TH0=(65536-t7)/256;TL0=(65536-t7)%256;break;}
case2:{p1^0=0;TH0=(65536-2540+t7)/256;TL0=(65536-2540+t7)%256;break;}
case3:{p1^1=1;TH0=(65536-t8)/256;TL0=(65536-t8)%256;break;}
case4:{p1^1=0;TH0=(65536-2540+t8)/256;TL0=(65536-2540+t8)%256;break;}
case5:{p1^2=1;TH=(65536-t9)/256;TL0=(65536-t9)%256;break;}
case6:{p1^2=0;TH0=(65536-2540+t9)/256;TL0=(65536-2540+t9)%256;break;}
case7:{p1^3=1;TH=(65536-t10)/256;TL0=(65536-t10)%256;break;}
case8:{p1^3=0;TH0=(65536-2540+t10)/256;TL0=(65536-2540+t10)%256;break;}
case9:{p1^4=1;TH=(65536-t11)/256;TL0=(65536-t11)%256;break;}
case10:{p1^4=0;TH0=(65536-2540+t11)/256;TL0=(65536-2540+t11)%256;break;}
case11:{p1^5=1;TH0=(65536-t12)/256;TL0=(65536-t12)%256;break;}
case12:{p1^5=0;TH0=(65536-8150+t12)/256;TL0=(65536-8150+t12)%256;flag1=0;}
defaut:flag2=0;
}
flag2++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -