悬赏 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);
}
}
}