微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 舵机程序 (为啥写进去舵机不转,我用的是stc89c52)

舵机程序 (为啥写进去舵机不转,我用的是stc89c52)

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#define Stop 0
#define Left 1
#define Right 2
sbit ControlPort = P2^0;
sbit KeyLeft = P1^0;
sbit KeyRight = P1^1;
sbit KeyStop = P1^2;
unsigned char TimeOutCounter = 0,LeftOrRight = 0;
void InitialTimer ( void )
{  TMOD=0x10;
    TH1 = ( 65535 - 500 ) / 256;
     TL1 = ( 65535 - 500 ) % 256;
    EA=1;
    ET1=1;
    TR1=1;
}
void ControlLeftOrRight ( void )
{
if( KeyStop == 0 )
   {
     LeftOrRight = Stop;
   
   
   }
if( KeyLeft == 0 )
LeftOrRight = Left;
if( KeyRight == 0 )
LeftOrRight = Right;
}
void main ( void )
{
  InitialTimer();
  for(;;)
  {
    ControlLeftOrRight();

}  
}
void Timer1 ( void ) interrupt 3
{
    TH1 =( 65535-500) / 256;
     TL1 = ( 65535 -500) % 256;
      TimeOutCounter ++;
    switch ( LeftOrRight )
{ case 0:
     {  if( TimeOutCounter <= 6 )
        ControlPort = 1;
    else
     ControlPort = 0;
     break;   
  
  }
   case 1:
     {  if( TimeOutCounter <= 2 )
        ControlPort = 1;
    else
     ControlPort = 0;
     break;   
  
  }

    case 2:
     {  if( TimeOutCounter <= 10 )
        ControlPort = 1;
    else
     ControlPort = 0;
     break;   
  
  }
     default: break;
      


}
    if( TimeOutCounter == 80 )
          TimeOutCounter = 0;

}

        s      

不知道                 

也在研究啊!不知道啊!

你要清楚舵机是怎么工作的  他有个20ms的基准周期  通过改变脉宽  就可以改变转角  很简单的呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top