|
|
20黑幣
程序說明:電機(jī)旋轉(zhuǎn)時帶動一個電位器同時旋轉(zhuǎn),電位器接入STC12C5A60S2的P1.0腳讀取AD值。
模式一:按住K1電機(jī)正轉(zhuǎn)到指定位置,按住K1+SET鍵獲取一個AD值保存為左限位L存入EEPROM。按住K2電機(jī)正轉(zhuǎn)到指定位置,按住K2+SET鍵獲取一個AD值保存為左限位R存入EEPROM。
模式二:按住K1后且當(dāng)前AD值大于L時電機(jī)正轉(zhuǎn)(當(dāng)前AD值小于等于L時電機(jī)停止),按住K2后且當(dāng)前AD值小于R時電機(jī)反轉(zhuǎn)(當(dāng)前AD值大于等于R時電機(jī)停止),實現(xiàn)沒有限位開關(guān)的電機(jī)限位。
問題:模式二時用if(AD>L)語句后,程序停在電機(jī)正轉(zhuǎn)語句上,不會動態(tài)的去比較AD值。 現(xiàn)在就是如果AD<L時按K1電機(jī)是不轉(zhuǎn)的,但AD>L時電機(jī)會一直轉(zhuǎn),直到按鍵K1松開。
while(1)
{ M1_1=1; //電機(jī)停止
AD=adc10_start(0); //讀當(dāng)前AD值
if(K1_1==0) //如果按鍵K1按下
{
delay(1000); //延時
if(K1_1==0&&AD>L) //如果K1按下且AD>L
{
M1_1=0; //電機(jī)正轉(zhuǎn)
while(K1_1==0&&AD>L);
}
}
}
|
|