日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

PIC中档单片机汇编指令详解(6)

發(fā)布時(shí)間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PIC中档单片机汇编指令详解(6) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

立即數(shù)與控制操作指令

SLEEP 單片機(jī)進(jìn)入低功耗休眠模式

語(yǔ)法形式:SLEEP

操作數(shù):無(wú)

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

執(zhí)行過(guò)程:

看門(mén)狗計(jì)數(shù)器清0

看門(mén)狗計(jì)數(shù)器的預(yù)分頻器清0

STATUS寄存器的“TO”標(biāo)志位置1

STATUS寄存器的“PD”標(biāo)志位清0

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

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

指令范例:

CALL PrepSleep ;關(guān)閉所有不需要的負(fù)載,準(zhǔn)備進(jìn)入休眠模式

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

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

CLRWDT 清除看門(mén)狗計(jì)數(shù)器

語(yǔ)法形式:CLRWDT

操作數(shù):無(wú)

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

執(zhí)行過(guò)程:

看門(mén)狗計(jì)數(shù)器清0

看門(mén)狗計(jì)數(shù)器的預(yù)分頻器清0

STATUS寄存器的“TO”標(biāo)志位置1

STATUS寄存器的“PD”標(biāo)志位置1

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

說(shuō)明:如果芯片在編程燒寫(xiě)時(shí)啟用了獨(dú)立的片上看門(mén)狗電路,則在程序運(yùn)行的過(guò)程中必須隔一段時(shí)間就執(zhí)行這條清除看門(mén)狗的命令。如果過(guò)了足夠長(zhǎng)的時(shí)間而沒(méi)有執(zhí)行這條指令,到了看門(mén)狗計(jì)數(shù)器計(jì)數(shù)溢出時(shí)就會(huì)讓單片機(jī)產(chǎn)生復(fù)位,程序?qū)?huì)從復(fù)位地址處重新運(yùn)行。PIC單片機(jī)的看門(mén)狗一旦被打開(kāi)就不能通過(guò)軟件的方式關(guān)閉,在芯片休眠的時(shí)候照樣工作,故可以作為讓單片機(jī)退出休眠的一個(gè)條件。通過(guò)啟用看門(mén)狗可以避免軟件死循環(huán)的故障。需要強(qiáng)調(diào)的是在一個(gè)好的程序設(shè)計(jì)中CLRWDT這條指令只在程序的主循環(huán)中出現(xiàn)一次,盡量避免到處放置清看門(mén)狗指令,絕對(duì)不能把這條指令放到中斷服務(wù)程序中。

指令范例:

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

? CLRWDT ;清看門(mén)狗

? CALL KeyCheck ;檢查按鍵

? CALL Display ;顯示刷新

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

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

語(yǔ)法形式:RETLW k

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

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

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

k→W

狀態(tài)標(biāo)志影響:無(wú)

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

指令范例:

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

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

…… ;其他指令

Lookup:ADDWF PCL,f ;對(duì)PC值作修改

RETLW ‘0’ ;返回0對(duì)應(yīng)的ASCII碼

RETLW ‘1’ ;返回1對(duì)應(yīng)的ASCII碼

RETLW ‘2’ ;返回2對(duì)應(yīng)的ASCII碼

RETLW ‘3’ ;返回3對(duì)應(yīng)的ASCII碼

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

語(yǔ)法形式:RETFIE

操作數(shù):無(wú)

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

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

INTCON寄存器的第7位GIE自動(dòng)置1

狀態(tài)標(biāo)志影響:無(wú)

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

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

指令范例:

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

MOVWF STATUS ;STATUS寄存器被恢復(fù)

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

SWAPF w_temp,w ;W寄存器被恢復(fù)

RETFIE ;中斷返回并允許新的中斷響應(yīng)

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

語(yǔ)法形式:RETURN

操作數(shù):無(wú)

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

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

狀態(tài)標(biāo)志影響:無(wú)

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

影響見(jiàn)該圖

指令范例:

CALL Dly4Tcy ;延時(shí)4個(gè)指令周期

…… ;其他指令

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

轉(zhuǎn)載于:https://my.oschina.net/u/124452/blog/125012

總結(jié)

以上是生活随笔為你收集整理的PIC中档单片机汇编指令详解(6)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。