解析下这驱动舵机的程序。周期为20ms,为什么8路就要20ms⼀8 得每路只有5ms?舵机驱动周期不是要20ms吗

2024-11-28 03:39:05
推荐回答(1个)
回答1:

我用MEGA8控制舵机程序问题PB3口OC2钟8MHz,用1024频PWM周期20ms其高电平1.5ms程序知哪错:
#include
#include

void main()
{
DDRB|=0XFF;
TCCR2=0X7F;
TCNT2=0X64;
OCR2=0XF4;

}
共四行知道哪...
刚始习51单片机定器明白 点云雾导致程序太理解程序网搜我拷贝KEIL软件运行载单片机连接舵机 运行程序没错误想请教虾:

程序定器0 定器1 及主程序while函数都运行

#include
typedef unsigned int uint;
typedef unsigned char uchar;
sbit pwm=P0^3;//输PWM信号
uint pwm_value=1500;//初值1.5ms

uint value[]={1500,1000,1500,2000,1500};//
void delay_ms(uint x)
{
uint i;
while(x--)for(i=0;i<125;i++);
}
void InitTimer(void)
{
TMOD=0x11;//定器0,1
TH0=-20000/256;//定20MS,20MS周期
TL0=-20000%256;
TH1=-1500/256;//定1.5MS,舵机处于0度
TL1=-1500%256;
EA=1;//总断
TR0=1;//定器0
ET0=1;
TR1=1;//定器1
ET1=1;
}
void timer0(void) interrupt 1//定器0断函数
{
pwm=1;
TH0=-20000/256;
TL0=-20000%256;
TR1=1;
}

void timer1(void) interrupt 3//定器1断函数
{
pwm=0;
TH1=-pwm_value/256;
TL1=-pwm_value%256;
TR1=0;
}
void main(void)//主函数
{
uchar i;
InitTimer();
pwm_value=1500;
while(1)
{
for(i=0;i<5;i++)
{
pwm_value=value[i];//通数组改变舵机转角度
delay_ms(1000);
}
}
}