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位微控制器市...