登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看4057|回5|收藏
楼主 ID:465279 只看他
2020-2-13 21:24
悬赏 20 黑币 未解决
程序说明:电机旋转时带动一个电位器同时旋转,电位器接入STC12C5A60S2的P1.0脚读取AD值。
模式一:按住K1电机正转到指定位置,按住K1+SET键获取一个AD值保存为左限位L存入EEPROM。按住K2电机正转到指定位置,按住K2+SET键获取一个AD值保存为左限位R存入EEPROM。
模式二:按住K1后且当前AD值大于L时电机正转(当前AD值小于等于L时电机停止),按住K2后且当前AD值小于R时电机反转(当前AD值大于等于R时电机停止),实现没有限位开关的电机限位。


问题:模式二时用if(AD>L)语句后,程序停在电机正转语句上,不会动态的去比较AD值。 现在就是如果AD<L时按K1电机是不转的,但AD>L时电机会一直转,直到按键K1松开。

        while(1)
        {                  M1_1=1;                //电机停止
                 AD=adc10_start(0);        //读当前AD值
                   if(K1_1==0)                  //如果按键K1按下
             {         
                      delay(1000);                     //延时
                    if(K1_1==0&&AD>L)  //如果K1按下且AD>L
                      {         
                                 M1_1=0;   //电机正转
                                
                               while(K1_1==0&&AD>L);                                                                                         
                      }
             }
                        
        }

沙发 ID:8222 只看他
2020-2-14 11:07
不是不比较AD的值,而是你的条件满足一直正转下去。 if(K1_1==0&&AD>L)  ,只要按键按下和AD>L(其实上一直大于L),电机一直会正转。你没有让电机停止的条件。
板凳 ID:465279 只看他
2020-2-14 11:34
电机正转时AD值会变小,到某一点时if(K1_1==0&&AD>L)中的AD>L不成立不就应该不在执行M1_1=1;这个文句?
地板 ID:465279 只看他
2020-2-14 13:27
改了一下现在好像可以了,但还有没有更好的方法呢,请高手指教
假设e=100足以使AD<L进行如下修改,
while(1)
        {                  M1_1=1;        
                 AD=adc10_start(0);  
                   if(K1_1==0)
             {          
                             for(i=0;i<100;i++)
                                {
                                  delay(1000);
                                  if(K1_1==0)
                                  {         
                        if(AD>L)
                        {        
                                                   M1_1=0;
                                            
                                                M1=adc10_start(0);                                                                                        
                                    }
                                        else
                                        M1_1=1;       
                                  }                                         
                             }
                         
                   }
     }
5# ID:497177 只看他
2020-2-14 14:52
可以参考b我在B站上的教程哦
6# ID:465279 只看他
2020-2-14 20:51

引用:

becausetyet 发表于 2020-2-14 14:52
可以参考b我在B站上的教程哦

哪里呢?

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版