用89C2051制作高可靠自動抽水裝置
軟件工作過程如下﹕
接通電源后﹐89C2051首先檢測是否缺相﹐如果缺相﹐則LED1亮且報警﹐否則檢測是否缺水﹐如果缺水﹐則啟動電機抽水﹐抽水3分鐘后再次對水位進行檢測(注意﹐第二次檢測水位的時間要根據(jù)水池的大小來確定)﹐如果檢測結果依然缺水(如電機空轉等情況)﹐則停止抽水﹐LED6亮且報警。否則否則程序返回開始處﹐有條不紊地檢測是否缺相﹐是否水滿﹑是否超溫﹑是否過流等。
原程序如下﹕
ORG0000H
AJMPSTART
ORG0030H
START:MOVP1,#0FFH
MOVP3,#0FFH
MAIN:JBP3.4,A4;是否缺相﹐若缺相﹐則轉A4處。
JNBP3.0,A0;是否缺水﹐若缺水﹐則轉A0處。
JBP3.1,A1;是否水滿﹐若水滿﹐則轉A1處。
JBP3.2,A2;是否超溫,若超溫﹐則轉A2處。
JBP3.3,A3;是否過流﹐若過流﹐則轉A3處。
AJMP MAIN
NOP﹔PC出錯處理
NOP
NOP
LJMP START
A0: ACALLDELAY100MS
JB P3.0,MAIN
MOVP1,#E3H;星形啟動﹐抽水指示燈亮
ACALLDELAY8s;延時8秒
MOVP1,#E5H;三角形啟動
ACALLDELAY3m;三角形啟動后再延時3分鐘
JNBP3.0,A5;抽水3分鐘后若P3.0依然為低電位﹐則水位異常。
AJMPMAINA1:ACALLDELAY100MS
JNBP3.1,MAIN
MOV P1,#0FFH;停止抽水﹐抽水指示燈滅。
CPL P3.5;水滿知指示燈亮。
AJMPAA2:
ACALLDELAY100MS
JNB P3.2,MAIN
MOV p1,#0BEH;停止抽水﹐超溫指示燈亮﹐報警
SJMP $;等待處理
A3:ACALLDELAY100MS
JNBP3.3,MAIN
MOV P1,#0DEH;停止抽水﹐過流指示燈亮﹐報警
SJMP $;等待處理
A4:ACALLDELAY100MS;防止誤取樣
JNBP3.4,MAIN
MOV P1,#7EH;停止抽水﹐缺相指示燈亮﹐報警
SJMP $;等待處理A5:
MOV P1,#FEH;停止抽水﹐報警
CPL P3.7;水位異常指示燈亮
SJMP $;等待處理
DELAY100ms:MOVR7,#248
D1:MOVR6,#200
D2:DJNZR6,D2
DJNZR7,D1
RETDELAY8s:MOVR0,#80
ACALLDELAY100ms
DJNZR0,DELAY8S
RETDELAY3M:MOVR1,#23
ACALLDELAY8S
DJNZR1,DELAY3M
RET
END
評論