单片机产生脉冲控制步进电机出现问题

2020-02-01 16:32发布

#include <regs52.h>
#define uchar unsigned char
#define uint  unsigned int
//按钮功能
sbit btn_left=P2^7;
sbit btn_right=P2^6;

//脉冲和方向
sbit M1=P1^0;
sbit M2=P1^1;
sbit dir1=P1^2;
sbit dir2=P1^3;


//速度控制标志位
uchar hz=330;           //设定3K
uchar pul=0;

//函数的声明
void delay(uint z);


void main()
{
  P1=0xff;
  EA=1;
  ET0=1;
  TMOD=0x01;
  TR0=1;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;

        while(1)
  {
        if(btn_left==0)
        {
                M1=pul;
                dir1=0;
        }
        else        M1=1;

       
        if(btn_right==0)
        {
                M1=pul;
                dir1=1;
        }
        else        M1=1;
  }
}


void delay(uint z)
{
        uchar i;
        while(z--)
        {
        for(i=120;i>0;i--);
        }
}



//脉冲产生定时器
void timer0() interrupt 1
{
  TH0=(65536-hz)/256;
  TL0=(65536-hz)%256;
        pul=~pul;

}

为什么控制的时候,按键经常不灵???



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。