jiuyueyingfei 发表于 2010-12-30 16:38:18

附程序!我是舵机初学者,我有一个控制舵机的程序,但是舵机就是不按要求转,请高手给一个控

#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度的程序,不需要太精确,只要能正反转就可以。

silence_sky 发表于 2011-1-1 23:23:56

#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;
   }
   }
}

silence_sky 发表于 2011-1-1 23:25:36

不知道自己错那了就用KEIl软仿一下,软仿时可以用KEIl自带的逻辑分析仪看。

jianjian163 发表于 2011-10-19 00:45:07

貌似不能正反转!!
页: [1]
查看完整版本: 附程序!我是舵机初学者,我有一个控制舵机的程序,但是舵机就是不按要求转,请高手给一个控