求助,51定时器中断输出脉冲控制步进

2020-01-16 18:28发布

学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;
         }  
  }


}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
tuowai
2020-01-17 10:06
【2楼】millwood0
"使用定时器中断输出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.
-----------------------------------------------------------------------

应该不全是脉冲过高的原因,我把初值改大后,脉冲噌就上来了,总觉的是计算哪个位置出了问题!

一周热门 更多>