|
通過采用51單片機設(shè)置定時和中斷輸出PWM波來控制舵機,能實現(xiàn)單次到指定位置,但要在循環(huán)之中實現(xiàn)持續(xù)來回運動重復(fù)動作卻會在第一個位置就卡住不動了。希望能夠解決這個問題,謝謝,程序如下:
#include <reg52.h>
unsigned char i=0,a,b,c;
sbit P17=P1^7;//舵機 1
sbit P16=P1^6;//舵機 2
sbit P15=P1^5;//舵機 3
unsigned char c1[]={77,75,77,75,77};
unsigned char c2[]={77,76,77,74,77};
unsigned char c3[]={77,74,77,76,77};
void delay(unsigned int j)
{
unsigned int x,y;
for(x=0;x<j;x++);
for(y=0;y<101;y++);
}
void main(void)
{
EA=1;
TMOD=0x01;
TH0=(65536-250)/256;
TL0=(65536-250)%256;
ET0=1;
TR0=1;
while(1)
{ a=c1[0];
b=c2[0];
c=c3[0];//通過數(shù)組就可以改變舵機的轉(zhuǎn)角度
delay(5000);//延時5s
a=c1[1];
b=c2[1];
c=c3[1];
delay(5000);
a=c1[2];
b=c2[2];
c=c3[2];
delay(5000);
a=c1[3];
b=c2[3];
c=c3[3];
delay(5000);
}
}
void timer0_int() interrupt 1
{
i++;
if(i==a) {P17=1;}//70--78
if(i==b) {P16=1;}//72--78
if(i==c) {P15=1;}//72--78
if(i==80) {P17=0;P16=0;P15=0;i=0; }//1=0.25ms
TH0=(65536-250)/256;
TL0=(65536-250)%256;
}
|
|