淺談PIC單片機(jī)軟件開發(fā)技巧
1 動作標(biāo)志位的使用
在整個控制中,組合的動作很多,當(dāng)所有動作定位都通過光電開關(guān)控制時,在程序編寫上就有一些問題。如要求左手上升到故障位、右手上升到舉手位(手初始位置在最下的放下位),光電開關(guān)0有效(即為0時是擋住),到達(dá)正確位置。用簡單的理解可以寫成下面的程序:
list P=16c73
call lefthandup
call righthandup
LO call readinsignal
bdss csl_v,1efthandligbts
call lefthandstop
btfsc csl_v,righthandlight4
goto L0
call righthandstop
L1 call readinsignal
btfsc csl_v,lefthandlight3
goto L1
call lefthandstop
?。?/P>
lefthandlight表示光電開關(guān),由此判斷是否到相應(yīng)的位置。1表示在手臂最下面的位置;2表示在手臂的握手位置;3表示在手臂的故障位置;4表示在手臂的高舉手位置。上面程序描寫左手臂上升到舉手位置和右手臂上升到故障位置并停止的過程。先判斷左手到達(dá)否,到達(dá)則左手停止,接著看右手是否到達(dá)舉手位,到達(dá)則停止,否則循環(huán)上述的檢測,直到左手到達(dá)故障位,右手到達(dá)舉手位。
注意,這里的3,4表示的就是故障位,舉手位。經(jīng)過循環(huán)檢測可以讓手臂停在各位上,然而機(jī)械動作是有慣性的,機(jī)械停止位可能在該位的上一點(diǎn)或下一點(diǎn),這就影響下面動作的進(jìn)行,可能在若干動作后機(jī)械動作出現(xiàn)失常,也就是程序沒法正常的運(yùn)行。在此情況下,需要修改程序的編寫方式,采用標(biāo)志位來控制動作的進(jìn)行。如果采用控制標(biāo)志位,一定要在動作子函數(shù)中對標(biāo)志位置零。程序如下:
list p=16c73
?。?/P>
actlonstopflag equ Ox6e ;位定義
lefthandfla8 cqu 0x0 ;0表示停止左手動作
rightbandflag equ Oxl ;O表示停止右手動作
?。?/P>
movlw Ox03
movWf actionstopflag
call lefthanduo
call righthandup
L2 call readinsignal
btfss csl_v,lefthandhght3
call lefthatldotop
btfss csl_v,righthandlight4
call righthandstop
movlw Ox00
subwf actionstopflag,w
btfss status,z
goto L2
繼續(xù)下面的程序
評論