PIC中檔微控制器彙編指令詳解(7) 完

2022-03-17 09:50:19 字數 1897 閱讀 1471

goto 程式無條件跳轉到指定的位址

語法形式:goto m

執行過程:

m→pc【10:0】

pclath【4:3】→pc【12:11】

狀態標誌影響:無

說明:程式無條件立即強行跳轉到目的位址處繼續執行。目的位址由本指令內含的11位位址碼和特殊暫存器pclath中的【4:3】一起構成完整的13位位址。

指令範例:

org 0x000 ;偽指令指定程式的起始位址

goto main ;程式跳轉到標號指定的位置處繼續執行

movlw w暫存器賦立即數

語法形式:movlw k

運算元:k為8位立即數

執行過程:k→w

狀態標誌影響:無

說明:該指令對w暫存器賦乙個初值。任何其他資料暫存器如果要賦乙個立即數值,必須通過w暫存器傳送。

指令範例:

movlw 0x55 ;【w】=0x55

movwf tmp ;【tmp】=【w】=0x55

addlw w暫存器和8位立即數相加

語法形式:addlw k

運算元:k為8位立即數

執行過程:【w】+k→w

狀態標誌影響:z dc c

說明:w暫存器的值和8位立即數相加,結果放入w暫存器內

指令範例:

movlw 0xaa ;w=0xaa

addlw 0x11 ;w=0xaa+0x11=0xbb

sublw 立即數減去w暫存器

語法形式:sublw k

運算元:k為8位立即數

執行過程:k-【w】→w

狀態標誌影響:z dc c

說明:必須注意w暫存器在這條指令中是減數

如果k=w,相減結果為0,則z=1

如果k>w,沒有借位發生,則c=1

如果k在pic微控制器內部這條減法指令的執行是先對w暫存器求補碼,然後和被減數k相加,所以在判斷是否有借位標誌時要千萬小心

指令範例:

movlw 0x23 ;w=0x23

sublw 0x32 ;w=0x32-0x23=0x0f,k>w所以c=1

iorlw w暫存器和立即數做邏輯或操作

語法形式:iorlw k

運算元:k為8位立即數

執行過程:【w】|k→w

狀態標誌影響:z

說明:w暫存器和8位立即數相或,結果放入w暫存器內。按照邏輯或有1出1的法則,此指令可以把w暫存器的任意位設定成資料1

指令範例:

iorlw b『00001111』 ;w暫存器低4位置1

andlw w暫存器和立即數做邏輯與操作

語法形式:andlw k

運算元:k為8位立即數

執行過程:【w】&k→w

狀態標誌影響:z

說明:w暫存器和8位立即數相與,結果放入w暫存器內。按照邏輯與有0出0的法則,可以把w暫存器的任意位置清0

指令範例:

andlw b『00001111』 ;w暫存器高4位清0

xorlw w暫存器和立即數做邏輯異或操作

語法形式:xorlw k

運算元:k為8位立即數

執行過程:【w】^k→w

狀態標誌影響:z

說明:w暫存器和8位立即數異或,結果放入w暫存器內。按照邏輯異或的法則,任何數和1異或,結果為其反碼;任何數和其自身異或,結果為0。所以該指令可以把w暫存器的任意位數反轉,或者判斷w暫存器的內容是否為特定值

指令範例:

例1:任意資料按位取反

xorlw b『11111111』 ;取w暫存器8位反碼

例2:判斷w暫存器內容是否為特定值

xorlw 0x34 ;判斷w=0x34?

btfsc status,z ;w不等於0x34,則跳過下條指令

goto w34 ;w等於0x34,轉去執行相關操作

關於PIC微控制器SLEEP指令

之前一直沒有真正理解sleep指令,最近在做智慧型水表的產品的時候,用了一款8位的微控制器pic16f690,當看到程式中的sleep指令時以為執行後cpu還會工作,導致一些認識上的錯誤,在網上搜尋了一下,找到了一篇關於sleep的詳細說明文章,現收集下來以便以後查詢!在執行sleep指令後進入睡眠...

PIC微控制器引腳

微控制器的訊號引腳是微控制器外特性的體現,在硬體上使用者只能使用引腳,通過引腳的連線組建微控制器系統。pic 8位微控制器系列和mcs 51系列微控制器一樣,其引腳除電源 vdd vss為單一功能外,其餘的訊號引腳常是多個功能,即引腳的復用功能。常見的引腳符號和主要功能如下 1 clr vpp 清除...

PIC系列微控制器

pic系列微控制器 由美國microchip公司推出的pic微控制器系列產品,首先採用了risc結構的嵌入式微控制器,其高速度 低電壓 低功耗 大電流lcd驅動能力和低價位otp技術等都體現出微控制器產業的新趨勢。現在pic系列微控制器在世界微控制器市場的份額排名中已逐年公升位,尤其在8位微控制器市...