位操做指令詳述測試
BCF 數據寄存器指定位清0語法
語法形式:BCF f,b程序
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)數據
B爲數據位編號(0~7)端口
執行時間:一個指令週期時間
執行過程:使數據寄存器f的的b位清0分支
狀態標誌影響:無
說明:該指令可對任何數據寄存器的任意一個位置清0,經常使用於標誌位的設定和清除,或者把某一管腳置成低電平。
指令範例:BCF STATUS,C ;進位(借位)標誌C清0
BCF PORTD,7 ;PORTD的第7位輸出低電平
BSF 數據寄存器的指定位b置1
語法形式:BSF f,b
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
b爲數據位編號(0~7)
執行時間:一個指令週期
執行過程:使數據寄存器f的的b位置1
狀態標誌影響:無
說明:該指令可對任何數據寄存器的任意一個位置置1,經常使用於標誌位的設定和清除,或者把某一管腳置成高電平。
指令範例:
BSF INTCON,GIE ;INTCON寄存器的GIE位置1,打開全局中斷
BSF PORTD,6 ;PORTD第6位輸出高電平
BTFSC 判斷數據寄存器中的指定位,爲0則跳過下一條指令
語法形式:BTFSC f,b
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
b爲數據位編號(0~7)
執行時間:一個指令週期或兩個指令週期
執行過程:若是數據寄存器f的b位爲0,則跳過下一條指令
狀態標誌影響:無
說明:該指令能夠對數據寄存器的任意一位作0/1的判斷,若是數據位爲1,程序將按順序執行其下一條指令,此時一個指令週期;若是數據位爲0,那麼將跳過緊跟該指令以後的第一條指令,從第二條指令開始執行,此時使用兩個指令週期。該指令最經常使用於按標誌位實現程序的分支跳轉的控制。
指令範例:
BTFSC STATUS,Z ;測試狀態寄存器的Z標誌
GOTO Zero ;若是Z=1,執行此處指令
GOTO NotZero ;若是Z=0,執行此處指令
BTFSS 判斷數據寄存器的指定位,爲1則跳過下條指令
語法形式:BTFSS f,b
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
b爲數據位編號(0~7)
執行時間:一個指令週期或兩個指令週期
執行過程:若是數據寄存器f的b位爲1,則跳過下一條指令
狀態標誌影響:無
說明:該指令能夠對數據寄存器的任意一位作0/1的判斷,若是數據位爲0,程序將按順序執行其下一條指令,此時一個指令週期;若是數據位爲1,那麼將跳過緊跟該指令以後的第一條指令,從第二條指令開始執行,此時使用兩個指令週期。該指令最經常使用於按標誌位實現程序的分支跳轉的控制。
指令範例:
BTFSS PORTB,7 ;測試PORTB端口,位7
GOTO RB7_Low ;若是RB7=0,執行此處指令
GOTO RB7_High ;若是RB7=1,執行此處指令