写了一个控制舵机的程序,用P10口输出,下载后舵机不会转动,信号端上的电压为0,用P00口输出(P0口接有外部上拉电阻),下载后舵机会转动但不受控制,不会停止,有时候平稳的转一个角度,然后接着会抖动,方向也不确定,改变定时器的初值或者改变脉冲宽度都不起作用,测量舵机信号端上的电压为2.7伏,是不是电压太低了啊?为什么两个端口输出的电压大小会不一样啊?该怎样解决啊?用的舵机是九克的,程序为:#include <reg51.h>
#define uchar unsigned char
sbit a=P1^0;
uchar time=0;
uchar p=200;
uchar h=10;
void timer0() interrupt 1 using 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if (++time==h)
a=0;
else if(time==p)
{
time=0;
a=1;
}
}
void main ()
{
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
a=1;
while (1);
} 还有,按照程序计数一次应该是0.1ms,可使用Keil进行仿真计数一次大概是0.055ms,为什么啊?
|