JackDong 发表于 2019-7-29 16:03:31

普中教程里的四线双极性步进电机,我想做成用按键实现正反转,可是没有达到我的目的。

我是小白,希望能给解答一下

#include<reg51.h>

typedef unsigned int u16;
typedef unsigned char u8;
sbit motor= P1;

sbitk1= P2^7;
sbitk2= P2^6;
#define speed 200
void delay(u16 i)
{
    while(i--);
}

void keypros()
{
    u8 a[]={0xfd,0xfe,0xf7,0xfb};
    u8 b[]={0xfe,0xfd,0xfb,0xf7};
    u8 i,j;
        if(k1==0)
        {
                delay(10);
                if(k1==0)
                {   for(i=0;i<4;i++)
                       {
                             motor=a;
                             delay(200);
                                  

                       }


                }
                while(!k1);
        }
    if(k2==0)
    {
      delay(10);
      if(k2==0)
      {
            for(j=0;j<4;j++)
            {
                motor=b;
                                             delay(200);
                                               
            }

      }
      while(!k2);
    }
}

void main()
{motor=0x00;
    keypros();

/*while(1)
{

        }*/
}

wx_JUGMqXG2 发表于 2019-7-29 17:31:59

本帖最后由 wx_JUGMqXG2 于 2019-7-29 17:35 编辑

对于这个程序,我猜其运行的现象是闪一下就没有结果了。如果猜对的话,那就是犯了单片机程序的大忌。
没有把主程序放到while(1)循环中。
建议把检测按键的程序写成一个函数,再把运行电机的写成一个函数,然后两个函数在main程序中while循环中一调用


页: [1]
查看完整版本: 普中教程里的四线双极性步进电机,我想做成用按键实现正反转,可是没有达到我的目的。