学51也有快半年了,却什么也没搞成,最近准备使用51定时器中断输出脉冲来控制步进,有现成的驱动,参考书上公式计算的定时器初值,输出的脉冲频率却低了很多,想来肯定是初值计算出的问题,却不知道该如何计算才正确,找了好多资料也没结果,望那位大哥帮忙指点一二,谢谢!
(原文件名:计算初值.png)
//晶振 12M
//使用定时器中断输出50KHZ脉冲,用来驱动步进)
void timer1(void) interrupt 3
{
Motor_CLK=~Motor_CLK;
TH1=0xff;
TL1=0xec;
}
void main(void)
{
// AUXR|=0x40; //定时器工作在1T模式
TMOD=0x10; //定时器工作方式为1
TH1=0xff; //
TL1=0xec;
Motor_CLK=0;
RUN_LED=1; //运行led灭 低电平有效
STOP_LED=1; //停止led亮 高电平有效
TR1=1;
ET1=1;
//EA=1;
while(1)//循环等待
{
if (START_key==0) //按下开始按钮
{
EA=1; //开总中断,启动脉冲输出
RUN_LED=0; //运行led亮
STOP_LED=0; //停止led灭
}
if (STOP_key==0) //按下停止按钮
{
EA=0; //关总中断,停止脉冲输出
RUN_LED=1;
STOP_LED=1;
}
}
}
"使用定时器中断输出50khz脉冲,"
that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.
try something lower.
-----------------------------------------------------------------------
应该不全是脉冲过高的原因,我把初值改大后,脉冲噌就上来了,总觉的是计算哪个位置出了问题!
一周热门 更多>