附程序!我是舵机初学者,我有一个控制舵机的程序,但是舵机就是不按要求转,请高手给一个控
#include <reg52.h>#define uint unsigned int
#define uchar unsigned char
sbit c=P0^0;//白线控制线
void begin()//初始化程序
{
c=1;
TMOD=0x11;//设置定时器0和定时器1的工作方式为方式1
TH0=(65536-1000)/256; //求模
TL0=(65536-1000)%256; //求余
TH1=(65536-19000)/256; //求模
TL1=(65536-19000)%256; //求余
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
ET1=1;
TR1=1;
}
void main()
{
begin();
while(1);
}
void timer0() interrupt 1 //定时器0中断服务程序
{
c=0;
TH0=(65536-1000)/256; //求模
TL0=(65536-1000)%256; //求余
ET1=1;//开定时器1中断
TR1=1;//启动定时器1
ET0=0;//关定时器0中断
TR0=0;//关闭定时器0
}
void timer1() interrupt 3 //定时器1中断服务程序
{
c=1;
TH1=(65536-19000)/256; //求模
TL1=(65536-19000)%256; //求余
ET1=0;//关定时器1中断
TR1=0;//关闭定时器1
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
程序输入之后,舵机是一顿一顿的朝一个方向转,不知道是什么原因?求高手给一个控制舵机正转45度,再反转45度的程序,不需要太精确,只要能正反转就可以。 #include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit c=P0^0;//白线控制线
uint pluse;
volatile uchar count;
void begin()//初始化程序
{
c=1;
TMOD=0x11;//设置定时器0和定时器1的工作方式为方式1
TH0=(65536-1000)/256; //求模
TL0=(65536-1000)%256; //求余
TH1=(65536-20000)/256; //求模
TL1=(65536-20000)%256; //求余
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
ET1=1;
TR1=1;
}
void timer0() interrupt 1 //定时器0中断服务程序
{
TR0=0;//关闭定时器0
c=0;
TH0=(65536-pluse)/256; //求模
TL0=(65536-pluse)%256; //求余
}
void timer1() interrupt 3 //定时器1中断服务程序
{
c=1;
TH1=(65536-20000)/256; //求模
TL1=(65536-20000)%256; //求余
TR0=1;//启动定时器0
count++;
}
void main()
{
begin();
count=0;
pluse=1000;
while(1)
{
if(count==100) //左转信号维持2秒,慢一点没事
pluse=2000;
if(count==200) //右转信号维持2秒,
{
pluse=1000;
count=0;
}
}
} 不知道自己错那了就用KEIl软仿一下,软仿时可以用KEIl自带的逻辑分析仪看。 貌似不能正反转!!
页:
[1]