新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機軟件在關機器人控制中的編程技巧

        PIC單片機軟件在關機器人控制中的編程技巧

        作者: 時間:2014-01-16 來源:網絡 收藏

        subwf actionstopflag,w

        btfss status,z

        goto L2

        繼續下面的程序

        actionstopflag 表示動作標志位參數,給動作標志位賦值,動作停止函數中將清零標志位的值。上述程序和前面所述程序的功能一樣,實現兩支手臂的動作。上面程序描寫左手是否到達鼓掌位,到達停止,右手是否到達舉手位,到達停止。看動作標志位是否為零,不是,不斷地循環檢測;是,執行下面的程序。
        2 、GOTO,CALL指令的不同使用

        在PIC的匯編程序中,CALL與GOT0指冷使用的場合不同。一般情況下,在于程序與主程序之間大多用CALL指令;而狀態轉換模塊之間大多用GOTO 指令,即由此狀態進入另一種狀態不需返回。由于的堆棧有限,在程序中,不能無止境地使用GOTO語句,這樣會使堆棧溢出,程序無法正常運行。各個小程序內部循環占用堆棧的級數不多,使用GOTO指令是可行的,但在大的程序中用GOTO則無法返回到調用前程序的下一條指令。CALL指令完成調用完子程序后返回到調用前的程序。程序如下:

        list D=16c76

        start:ca11 setcpu

        call automatlsn、statel

        L3 call readinsignal

        btfsc cs2_v,ultrasonicdetectl

        goto L3

        goto autonatlsmstate2

        automatlsmstate2:

        return

        auatomatismstatel、 automatismstate2表示兩種狀態,uhrasonicdetectl表示一個輸入超聲檢測信號。上面程序描寫調用 automatistmstate1狀態,執行完后進行下面的檢測ultrasonicdetect],沒有觸發就一直循環檢測,觸發就進入 autornatismstate2狀態,執行完也不再回到下面的程序。

        3 、狀態標志位Z、C的不同使用情況

        在進行判斷標志位時,Z(零標志)、C(借位標志)是不同的。Z為l時,表示上面的結果為0,Z為0時,則結果不為0。C為l時,借位,C為0時,沒有借位。在使用定時器的時候,一般使用C標志位,這是由于當完成某一動作去檢查定時器時,時間可能沒到,或是正好,或是已經超過時間,只要到了或超過時間,都要按照要求關閉定時器,如下面程序所述。如果用Z標志位,等于0時可能沒有檢測到,無法判斷停止的狀態,而用z可以很好地控制時間定時。進行一般的計算時大多用Z,如前面的動作標志位中就是如此使用的。

        list D=16c76

        call opentimerO

        L4 movlw d’30’

        subwf t0_v2,W

        btfss status,c

        goto L4

        cau closetimer0

        程序檢測時間是否到達1.5s,沒有則循環等待,到了或檢測時間過了就關閉定時器,執行下面的程序。

        總之,在的編程中采用合適的方法,可以使整個程序運行穩定,而且程序空間的使用也將有所減小,避免了調試中的Bug。這是筆者在實際中的一點體會,還有許多不足或沒有考慮到的問題,希望在和大家的探討中不斷學習的精髓。

        光電開關相關文章:光電開關原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 苍山县| 抚宁县| 泽普县| 无棣县| 利辛县| 库车县| 南岸区| 新营市| 招远市| 吉安县| 武宣县| 彰化市| 东光县| 依兰县| 广东省| 贵阳市| 浪卡子县| 宁乡县| 茂名市| 郓城县| 四子王旗| 沧州市| 尉犁县| 芒康县| 荆州市| 盱眙县| 阳曲县| 祥云县| 华阴市| 吉水县| 渭源县| 南阳市| 平定县| 潢川县| 蒲城县| 阿拉善盟| 泗洪县| 铜梁县| 无极县| 铁岭县| 聊城市|