我这个舵机归中程序舵机转了好几圈才归中,怎么改才能让它只转一圈。是改while吗?
#include<AT89x52.H>
#include <intrins.h>
#define Sevro_moto_pwm P1^7 //接舵机信号端输入PWM信号调节速度
unsigned char pwm_val_left = 0;//变量定义
unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号
unsigned long S=0;
unsigned long S1=0;
unsigned long S2=0;
unsigned long S3=0;
unsigned long S4=0;
unsigned int time=0; //时间变量
unsigned int timer=0; //延时基准变量
unsigned char timer1=0; //扫描时间变量
/************************************************************************/
/* PWM信号产生控制舵机 */
/************************************************************************/
/* */
/*调节push_val_left的值改变电机转速,占空比 */
void pwm_Servomoto(void)
{
if(pwm_val_left<=push_val_left)
Sevro_moto_pwm=1;
else
Sevro_moto_pwm=0;
if(pwm_val_left>=200)
pwm_val_left=0;
}
/***************************************************/
///*TIMER1中断服务子函数产生PWM信号*/
void time1()interrupt 3 using 2
{
TH1=(65536-100)/256; //100US定时
TL1=(65536-100)%256;
//定时器100US为准。在这个基础上延时
pwm_val_left++;
pwm_Servomoto();
}
/***************************************************/
void main(void)
{
TMOD=0X11;
TH1=(65536-100)/256; //100US定时
TL1=(65536-100)%256;
TH0=0;
TL0=0;
TR1= 1;
ET1= 1;
ET0= 1;
EA = 1;
push_val_left=14; //舵机归中
while(1) /*无限循环*/
{
}
}
|