找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4189|回复: 6
收起左侧

按键控制步进电机加减速程序,能加不能减,求高手指点程序错误..

[复制链接]
ID:59980 发表于 2015-10-23 20:40 | 显示全部楼层 |阅读模式
//按键控制步进电机加减速程序:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit k1=P3^4;
sbit k2=P3^5;
sbit A=P3^0;
sbit B1=P3^1;
sbit C=P3^2;
sbit D1=P3^3;

void DelayMS(uint aa)
{
  uchar bb;
  while(aa--)
  {
   for(bb=0;bb<115;bb++)     //1ms基准延时程序
   {
    ;
   }
  }

}
void main()
{
  uint        i;
  i=500;
  while(1)
           {
            if(k2==0)
                   {
                             while(k2==0);
                          
                          if(i<50)
                            {
                                  i=i+50;
                                  if(i==500)
                                  {
                                   i==50;
                                  }
                                }
                                DelayMS(200);
                   }
                   if(k1==0)
                   {
                             while(k1==0);
                          
                          if(i>50)
                            {
                                  i=i-50;
                                  if(i==50)
                                  {
                                   i==500;
                                  }
                                }
                                DelayMS(200);
                   }
           A=1;//8拍
           B1=0;
           C=0;
           D1=0;
           DelayMS(i);
              A=1;
           B1=1;
           C=0;
           D1=0;
           DelayMS(i);
           A=0;
           B1=1;
           C=0;
           D1=0;
           DelayMS(i);
              A=0;
           B1=1;
           C=1;
           D1=0;
           DelayMS(i);
           A=0;
           B1=0;
           C=1;
           D1=0;
           DelayMS(i);
              A=0;
           B1=0;
           C=1;
           D1=1;
           DelayMS(i);
           A=0;
           B1=0;
           C=0;
           D1=1;
           DelayMS(i);
              A=1;
           B1=0;
           C=0;
           D1=1;
           DelayMS(i);
           }
          
}




回复

使用道具 举报

ID:93478 发表于 2015-10-25 10:45 来自手机 | 显示全部楼层
感觉这么写好复杂,你这个思路是挺明确,可是硬件运行起来的时候容易出问题,持续的控制,我自己有一个程序需要加我QQ:229492525
回复

使用道具 举报

ID:79544 发表于 2015-10-25 13:43 | 显示全部楼层
这个程序只能加不能减,减应该 if(i>500)
                            {
                                  i=i-50;
                                  if(i==50)
                                  {
                                   i==50;
                                  }
                                }
                                DelayMS(200);
这样试试
回复

使用道具 举报

ID:59980 发表于 2015-10-28 00:58 | 显示全部楼层
我自己后来详查错误后找出来了,在这几句中
if(i>50)
                            {
                                  i=i-50;
                                  if(i==50)
                                  {
                                   i==500;

    i==500;多了一个等于号"=="
正确的是:i=500;就可以了。

谢谢各位同志有心啦
回复

使用道具 举报

ID:59980 发表于 2015-10-28 01:03 | 显示全部楼层
你好!你的程序是用数组的读取法来实现的吧。本人用的是8脚mcu,只有6个i/o口。用那种方法可能会对按键有影响。。。
回复

使用道具 举报

ID:44987 发表于 2015-10-31 16:59 | 显示全部楼层
膜拜少时诵诗书s's
回复

使用道具 举报

ID:274435 发表于 2018-8-2 16:12 | 显示全部楼层
减的程序改成if(i<500)试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表