|
大咖好,本人才疏學(xué)淺,業(yè)余嘗試自己寫(xiě)寫(xiě)簡(jiǎn)單的程序,現(xiàn)在遇到一個(gè)困惑:
遙控升降過(guò)程中,電機(jī)從底部向上走,或者從頂部向下走,會(huì)被行程開(kāi)關(guān)影響到停機(jī)的問(wèn)題,我現(xiàn)在把我程序貼出,看能否指點(diǎn)一二,感謝!
單片機(jī)源程序如下:
#include<STC15.H>
sbit A = P3^2;//遙控升
sbit B1 = P3^3;//遙控停
sbit C = P3^4; //遙控降
sbit M1 = P1^0;//電機(jī)正
sbit M2 = P1^1;//電機(jī)反
sbit UP = P2^0;//上限位開(kāi)關(guān)
sbit DN = P2^1;//下限位開(kāi)關(guān)
void main ()
{
P1M0 = 0XFF;//配置為強(qiáng)輸出
P1M1 = 0X00;//配置為強(qiáng)輸出
P3M0 = 0X00;//配置為高阻輸入
P3M1 = 0XFF;//配置為高阻輸入
P2M0 = 0X00;//配置為準(zhǔn)雙向口
P2M1 = 0X00; //配置為準(zhǔn)雙向口
A = 0; //上電初始置低
B1 = 0; //上電初始置低
C = 0; //上電初始置低
M1 = 0; //上電初始置低
M2 = 0; //上電初始置低
while (1)
{
if(A==1) //當(dāng)按下遙控升且同時(shí)上限位開(kāi)關(guān)打開(kāi)
{
M1=1; //電機(jī)上升
M2=0;
}
if(C==1) //當(dāng)按下遙控升且同時(shí)上限位開(kāi)關(guān)打開(kāi)
{
M1=0; //電機(jī)下降
M2=1;
}
if(UP==0||DN==0||B1==1) //當(dāng)上限開(kāi)關(guān)或者下限開(kāi)關(guān)閉合或者遙控停
{
M1=0; //電機(jī)停
M2=0;
}
while(UP==0) //當(dāng)上限開(kāi)關(guān)閉合后進(jìn)入遙控降等待狀態(tài)
{
if(C==1) //遙控降給信號(hào)
{
M1=0; //電機(jī)下降
M2=1;}
}
while(DN==0) //當(dāng)下限開(kāi)關(guān)閉合后進(jìn)入遙控升等待狀態(tài)
{
if(A==1)
{
M1=1; //電機(jī)上升
M2=0;
}
}
}
}
|
|