<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 淺談PIC單片機軟件開發(fā)技巧

          淺談PIC單片機軟件開發(fā)技巧

          作者: 時間:2013-02-07 來源:網(wǎng)絡(luò) 收藏

            actionstopflag表示參數(shù),給賦值,動作停止函數(shù)中將清零標志位的值。上述程序和前面所述程序的功能一樣,實現(xiàn)兩支手臂的動作。上面程序描寫左手是否到達故障位,到達停止,右手是否到達舉手位,到達停止。看是否為零,不是,不斷地循環(huán)檢測;是,執(zhí)行下面的程序。

            2 GOTO,cALL指令的不同使用

            PIC最大的特點是不搞單純的功能堆積,而是從實際出發(fā),重視產(chǎn)品的性能與價格比,靠發(fā)展多種型號來滿足不同層次的應(yīng)用要求。就實際而言,不同的應(yīng)用對單片機功能和資源的需求也是不同的。比如,一個摩托車的點火器需要一個I/O較少、RAM及程序存儲空間不大、可靠性較高的小型單片機,若采用40腳且功能強大的單片機,投資大不說,使用起來也不方便。PIC系列從低到高有幾十個型號,可以滿足各種需要。其中,PIC12C508單片機僅有8個引腳,是世界上最小的單片機。

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

            list D=16c76

            start:ca11 setCPU

            call automatlsn、statel

            L3 call readinsignal

            btfsc cs2_v,ultrasonicdetectl

            goto L3

            goto autonatlsmstate2

           ?。?P>  automatlsmstate2:

            return

            auatomatismstatel、automatismstate2表示兩種狀態(tài),uhrasonicdetectl表示一個輸入超聲檢測信號。上面程序描寫調(diào)用automatistmstate1狀態(tài),執(zhí)行完后進行下面的檢測ultrasonicdetect],沒有觸發(fā)就一直循環(huán)檢測,觸發(fā)就進入autornatismstate2狀態(tài),執(zhí)行完也不再回到下面的程序。

            PIC中檔產(chǎn)品是Microchip近年來重點發(fā)展的系列產(chǎn)品,品種最為豐富,其性能比低檔產(chǎn)品有所提高,增加了中斷功能,指令周期可達到200ns,帶A/D,內(nèi)部E2PROM數(shù)據(jù)存儲器,雙時鐘工作,比較輸出,捕捉輸入,PWM輸出,I2C和SPI接口,異步串行通訊(USART),模擬電壓比較器及LCD驅(qū)動等等,其封裝從8腳到68腳,可用于高、中、低檔的電子產(chǎn)品設(shè)計中,價格適中,廣泛應(yīng)用在各類電子產(chǎn)品中。

            3 狀態(tài)標志位Z、C的不同使用情況

            在進行判斷標志位時,Z(零標志)、C(借位標志)是不同的。Z為l時,表示上面的結(jié)果為0,Z為0時,則結(jié)果不為0。C為l時,借位,C為0時,沒有借位。在使用定時器的時候,一般使用C標志位,這是由于當完成某一動作去檢查定時器時,時間可能沒到,或是正好,或是已經(jīng)超過時間,只要到了或超過時間,都要按照要求關(guān)閉定時器,如下面程序所述。進行一般的計算時大多用Z,如前面的動作標志位中就是如此使用的。

            list D=16c76

            call opentimerO

            L4 movlw d’30’

            subwf t0_v2,W

            btfss status,c

            goto L4

            cau closetimer0

            程序檢測時間是否到達1.5s,沒有則循環(huán)等待,到了或檢測時間過了就關(guān)閉定時器,執(zhí)行下面的程序。

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


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();