
51单片机用软件定时来控制舵机,延时函数怎么写?求解
1个回答
展开全部
延时可以用定时器来实现,也可以自己写延时函数。
这是51单片机定时器初始化示例程序。
TMOD = 0x10f; //GATE=0 01010001
//C/T=0--定时/计数器1工作于定时方式
//M1=1;M0=0--选择工作模式1,构成最大定时器
//T0:在此程序不使用
TL1 = 0x13; TH1 = 0x2C; //指定定时时间为50ms 65536-50/(11.0592/12)=11283=2C13h
EA = 1; //开总中断
TF1 = 0;
ET1 = 1; //开定时器中断
TR1 = 1; //开始计时
如果用延时函数,要精确计算时间。
这是精确定时1ms的程序,你可以参考一下。
void delay1ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
这是51单片机定时器初始化示例程序。
TMOD = 0x10f; //GATE=0 01010001
//C/T=0--定时/计数器1工作于定时方式
//M1=1;M0=0--选择工作模式1,构成最大定时器
//T0:在此程序不使用
TL1 = 0x13; TH1 = 0x2C; //指定定时时间为50ms 65536-50/(11.0592/12)=11283=2C13h
EA = 1; //开总中断
TF1 = 0;
ET1 = 1; //开定时器中断
TR1 = 1; //开始计时
如果用延时函数,要精确计算时间。
这是精确定时1ms的程序,你可以参考一下。
void delay1ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
更多追问追答
追问
1个定时器能带几个设备啊?我想用定时器来做电机的,用延时函数来控制舵机,那个延时函数能延时更小码,求解,谢谢
追答
这个问题问得比较有意思。
理论上1个定时器可以做很多事情。
比如,你的定时器定时间为1ms,你电机PWM周期刚好为1ms的整数倍,那你就可以用这个定时器来驱动电机。同时,你的舵机延时是10ms,那么你也可以用这个定时器来做。
你需要控制几个电机?现在一般的单片机本身都有PWM控制。你可以直接用。
延时函数延时是任意的。只要是机器周期的整数倍都可以实现。比如你用12M的晶振,单片机也是12T的,那机器周期就是1us,那么就可以延时任意us.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |