无法控制好步进电机的转动角度,大神们教教我程序哪错了

2019-07-18 15:13发布

  1. #include <REGX52.H>

  2. #define uint unsigned int;

  3. //#define forwordDir 0;
  4. //#define backDir 1;

  5. sbit Pulse=P1^0;
  6. sbit Dir=P1^1;
  7. sbit En=P1^2;
  8. uint clock,i,x;
  9. uint counter=0;


  10. //void forword(void)
  11. //{
  12. //   TR0 = 1;
  13. //   TH0 = (65536 -clock)/256;
  14. //   TL0 = (65536 -clock)%256;
  15. //   Dir = 0;
  16. //   En = 0;
  17. //}

  18. void back(void)
  19. {
  20.    TR0 = 1;
  21.    TH0= (65536 - clock)/256;
  22.    TL0 = (65536 - clock)%256;
  23.    Dir = 1;
  24.    En = 0;

  25. }

  26. void stop(void)
  27. {
  28.    TR0 = 0;
  29. }


  30. void InitBJDJ(void)
  31. {
  32.    TMOD =0x01;
  33.    EA =1;
  34.    ET0=1;
  35. }

  36. void main(void)
  37. {   
  38.    clock =75;
  39.    x=1600;
  40.    InitBJDJ();

  41.    while(1)
  42.    {
  43.        back();
  44.      
  45.        if(counter>=x)//  我想要的效果是:8细分,1600个脉冲走完一圈。 但是电机一直在转,不会停
  46.        {
  47.            En=1;
  48.       }
  49.   }

  50. void time0(void) interrupt 1
  51. {
  52.    TH0= (65536-clock)/256;
  53.    TL0 = (65536 -clock)%256;
  54.    Pulse = ~Pulse;
  55.    counter++;
  56. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。