|
只要通过按键增减角度,舵机都会出现跳舵(摇臂左右小角度摆动),最大角度也只有90度,估计是程序有问题,时序有冲突,但我实在看不出来,请高手们帮忙看看。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,b;
uint num;
sbit PWM=P1^0;
sbit K1=P1^1; //角度增
sbit K2=P1^2; //角度减
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
a=0;
num=1200;
PWM=1;
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=(65535-num)/256;
TL0=(65535-num)%256;
}
void main()
{
init();
while(1)
{
//*******PWM输出********
if(a==1)
PWM=0;
if(b==20000/num)
{
a=0;
b=0;
PWM=1;
}
//*******角度调整********
if(K1==0)
delay(5);
if(K1==0)
{
num=num+50;
while(!K1);
}
if(K2==0)
delay(5);
if(K2==0)
{
num=num-50;
while(!K2);
}
}
}
void t0() interrupt 1
{
TH0=(65535-num)/256;
TL0=(65535-num)%256;
a++;
b++;
}
|
|