PIC の命令一覧(ABC順)

PIC の命令一覧(機能順)

種別nemonic内容flagcycle命令コード
種別1種別2
演算命令 加減算命令 ADDWF f,d w + f -> dest C,DC,Z 1 00 0111 dfff ffff
SUBWF f,d f - w -> dest C,CD,Z 1 00 0010 dfff ffff
ADDLW k w + k -> w C,DC,Z 1 11 111x kkkk kkkk
SUBLW k k - w -> w C,CD,Z 1 11 110x kkkk kkkk
論理演算命令 ANDLW k w AND k -> w Z 1 11 1001 kkkk kkkk
ANDWF f,d w AND f -> dest Z 1 00 0101 dfff ffff
IORLW k w OR k -> w Z 1 11 1000 kkkk kkkk
IORWF f,d w OR f -> dest Z 1 00 0100 dfff ffff
XORLW k w XOR k -> w Z 1 11 1010 kkkk kkkk
XORWF f,d w XOR f -> dest Z 1 00 0110 dfff ffff
COMFf,d f -> dest Z 1 00 1001 dfff ffff
移動命令 MOVF f,d f -> dest Z 1 00 1000 dfff ffff
MOVWF f w -> f - 1 00 0000 1fff ffff
MOVLW k k -> w - 1 11 00xx kkkk kkkk
CLRF f 00h -> f Z(=1) 1 00 0001 1fff ffff
CLRW 00h -> w Z(=1) 1 00 0001 0xxx xxxx
カウント命令 カウントアップダウン命令 DECF f,d f - 1 ->dest Z 1 00 0011 dfff ffff
INCF f,d f + 1 ->dest Z 1 00 1010 dfff ffff
カウントアップダウン & スキップ命令 DECFSZ f,d f - 1 -> dest,
skip if result=0
- 1(2) 00 1011 dfff ffff
INCFSZ f,d f + 1 -> dest,
skip if result=0
- 1(2) 00 1111 dfff ffff
ビット操作命令 ビット操作命令 BCF f,b 0 -> f<b> - 1 01 00bb bfff ffff
BSF f,b 1 -> f<b> - 1 01 01bb bfff ffff
ビットテスト & スキップ命令 BTFSC f,b skip if f<d>=0 - 1(2) 01 10bb bfff ffff
BTFSS f,b skip if f<d>=1 - 1(2) 01 11bb bfff ffff
巡回シフト命令 巡回シフト命令 RLF f,d 左回転 :
f<n> -> d<n+1>,
f<7> -> C,
C -> d<0>
C 1 00 1101 dfff ffff
RRF f,d 右回転 :
f<n> -> d<n-1>,
f<0> -> C,
C -> d<7>
C 1 00 1100 dfff ffff
スワップ命令 SWAPF f,d スワップ : f<3:0> -> d<7:4>,
f<7:4> -> d<3:0>
- 1 00 1110 dfff ffff
ジャンプ命令 単純ジャンプ命令 GOTO GOTO k k -> PC<10:0>,
PCLATH<4:3> -> PC<12:11>
- 2 10 1kkk kkkk kkkk
CALL と RETURN 命令 CALL adr サブルーチンの呼び出し :
PC+1 -> TOS,
k -> PC<10:0>,
PCLATH<4:3> -> PC<12:11>
- 2 10 0kkk kkkk kkkk
RETFIE 割り込み処理からのリターン :
TOS -> PC,1 -> GIE(INTCON<7>)
- 2 00 0000 0000 1001
RETLW k k -> w して リターン :
TOS -> PC
- 2 11 01xx kkkk kkkk
RETURN サブルーチンからのリターン :
TOS -> PC
- 2 00 0000 0000 1000
その他の命令 CLRWDT 00h -> WDT 0 -> WDT,
prescaler,
1 -> PD(STATUS<3>),
1 -> TO(STATUS<4>)
PD,TO 1 00 0000 0110 0100
NOP No Operation - 1 00 0000 0xx0 0000
SLEEP スリープモード :
00h -> WDT,
1 -> PD(STATUS<3>),
0 -> TO(STATUS<4>)
PD,TO 1 00 0000 0110 0011

PIC の内部構造

プログラムカウンタ
実行番地の指定
プログラムメモリ
プログラムの命令の格納庫
命令レジスタ
命令の解釈と実行
レジスタファイル
データレジスタの格納庫
ステータスレジスタ
命令実行後の状態の格納庫
Mux
選択切替ユニット
ALU
演算を行う回路
W reg
作業レジスタ
データバス
データの通り道
タイマー
時間を作る周辺ハードウェア
入出力ポート
入出力ピンとつながるデータレジスタ
PIC の内部構造

PIC のオペランド

d : 実行結果の核の場所
実行結果の格納を W reg にするか(0の時)、レジスタファイルにするか(1の時)を指定
f : レジスタアドレス
レジスタファイル内の f番地 のレジスタを指す
k : 数値
定数で0〜255(1バイト)の値
b : ビット位置
ビット位置を示す(最下位:0〜最上位:7)

参考