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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC中檔單片機匯編指令詳解(6)

          PIC中檔單片機匯編指令詳解(6)

          作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
          立即數(shù)與控制操作指令

          SLEEP 單片機進入低功耗休眠模式

          本文引用地址:http://www.ex-cimer.com/article/201611/318564.htm

          語法形式:SLEEP

          操作數(shù):無

          執(zhí)行時間:一個指令周期

          執(zhí)行過程:

          看門狗計數(shù)器清0

          看門狗計數(shù)器的預分頻器清0

          STATUS寄存器的“TO”標志位置1

          STATUS寄存器的“PD”標志位清0

          狀態(tài)標志影響:TO PD

          說明:SLEEP指令可以讓單片機停止所有的工作進入低功耗休眠模式,在休眠模式下芯片的功耗降至最低。在休眠狀態(tài)下,單片機的主時鐘振蕩器將停止,所有內(nèi)部寄存器的內(nèi)容保持不變,直到出現(xiàn)某一條件將單片機從休眠狀態(tài)下喚醒。

          指令范例:

          CALL PrepSleep ;關閉所有不需要的負載,準備進入休眠模式

          SLEEP ;現(xiàn)在進入休眠模式

          NOP ;喚醒后開始執(zhí)行指令

          CLRWDT 清除看門狗計數(shù)器

          語法形式:CLRWDT

          操作數(shù):無

          執(zhí)行時間:一個指令周期

          執(zhí)行過程:

          看門狗計數(shù)器清0

          看門狗計數(shù)器的預分頻器清0

          STATUS寄存器的“TO”標志位置1

          STATUS寄存器的“PD”標志位置1

          狀態(tài)標志影響:TO PD

          說明:如果芯片在編程燒寫時啟用了獨立的片上看門狗電路,則在程序運行的過程中必須隔一段時間就執(zhí)行這條清除看門狗的命令。如果過了足夠長的時間而沒有執(zhí)行這條指令,到了看門狗計數(shù)器計數(shù)溢出時就會讓單片機產(chǎn)生復位,程序?qū)膹臀坏刂诽幹匦逻\行。PIC單片機的看門狗一旦被打開就不能通過軟件的方式關閉,在芯片休眠的時候照樣工作,故可以作為讓單片機退出休眠的一個條件。通過啟用看門狗可以避免軟件死循環(huán)的故障。需要強調(diào)的是在一個好的程序設計中CLRWDT這條指令只在程序的主循環(huán)中出現(xiàn)一次,盡量避免到處放置清看門狗指令,絕對不能把這條指令放到中斷服務程序中。

          指令范例:

          MainLoop:~~~ ;程序主循環(huán)

          CLRWDT ;清看門狗

          CALL KeyCheck ;檢查按鍵

          CALL Display ;顯示刷新

          GOTO MainLoop ;重復主循環(huán)體

          RETLW 子程序結(jié)束返回并在W寄存器內(nèi)賦一8位立即數(shù)

          語法形式:RETLW k

          操作數(shù):k為8位立即數(shù)

          執(zhí)行時間:2個指令周期

          執(zhí)行過程:彈出棧頂內(nèi)容到PC

          k→W

          狀態(tài)標志影響:無

          說明:除了在子程序返回時從W寄存器帶出一個8位立即數(shù)外,其他的執(zhí)行情況和指令“RETURN”完全相同。該指令經(jīng)常被用于查表功能中。

          指令范例:

          MOVF Index,W ;W中設定查表索引值(0~3)

          CALL Lookup ;調(diào)用查表子程序

          …… ;其他指令

          Lookup:ADDWF PCL,f ;對PC值作修改

          RETLW ‘0’ ;返回0對應的ASCII碼

          RETLW ‘1’ ;返回1對應的ASCII碼

          RETLW ‘2’ ;返回2對應的ASCII碼

          RETLW ‘3’ ;返回3對應的ASCII碼

          RETFIE 中斷服務程序結(jié)束并返回

          語法形式:RETFIE

          操作數(shù):無

          執(zhí)行時間:2個指令周期

          執(zhí)行過程:彈出棧頂內(nèi)容到PC

          INTCON寄存器的第7位GIE自動置1

          狀態(tài)標志影響:無

          說明:該指令把硬件堆棧棧頂?shù)膬?nèi)容(中斷發(fā)生時的返回地址)彈送到程序計數(shù)器PC內(nèi),對堆棧的影響如下圖所示

          和指令“RETURN”的情形基本相同,關鍵區(qū)別是該指令會把INTCON寄存器的第7位全局中斷使能位(GIE)置1(在響應中斷時該位自動清0)。然后返回到中斷發(fā)生時的下一條指令處繼續(xù)運行。

          指令范例:

          MOVF status_temp,w ;準備恢復STATUS寄存器的內(nèi)容

          MOVWF STATUS ;STATUS寄存器被恢復

          SWAPF w_temp,f ;準備恢復W寄存器內(nèi)容

          SWAPF w_temp,w ;W寄存器被恢復

          RETFIE ;中斷返回并允許新的中斷響應

          RETURN 子程序結(jié)束返回

          語法形式:RETURN

          操作數(shù):無

          執(zhí)行時間:2個指令周期

          執(zhí)行過程:彈出棧頂內(nèi)容到PC

          狀態(tài)標志影響:無

          說明:該指令將棧頂?shù)膬?nèi)容(子程序調(diào)用時的返回地址)彈送到程序計數(shù)器PC內(nèi)。注意特殊寄存器PCLATH的內(nèi)容不會因此改變。程序?qū)氐皆谧映绦蛘{(diào)用時的下一條指令處開始執(zhí)行。

          影響見該圖

          指令范例:

          CALL Dly4Tcy ;延時4個指令周期

          …… ;其他指令

          Dly4Tcy:RETURN ;CALL和RETURN總共消耗4個指令周期



          關鍵詞: PIC單片機匯編指

          評論


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

          關閉
          看屁屁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); })();