【記号説明】
下記説明で使用している記号、略号の意味は下記による。
記号 |
意味内容 |
記号 |
意味内容 |
f |
レジスタのアドレス |
Wreg |
ワーキングレジスタ |
b |
ビットのアドレス(0-7) |
k |
リテラルデータ(1byte) |
x |
Don't care(0にしておく) |
d |
格納先指定(0 or 1) |
label |
ラベル名 |
PC |
プログラムカウンタ |
dest |
dと同じ意味 |
|
|
[ ] |
省略可能 |
( ) |
内容 |
< > |
レジスタビット位置 |
|
書式 [label] ADDLW k
オペランド k:リテラルデータ(00〜256)
実行内容 (Wreg)+k → (Wreg)
影響フラグ C、DC、Z
サイクル 1サイクル
機械語 1 1 1 1 1 x k k k k k k k k
実行内容 Wregの内容に8ビットのリテラルデータ
を加算し、結果をWregに上書きする。
【ANDLW】 WregとリテラルデータのANDを取る
書式 [label] ANDLW k
オペランド k:リテラルデータ(00〜256)
実行内容 (Wreg).AND.( k ) → (Wreg)
影響フラグ Z
サイクル 1サイクル
機械語 1 1 1 0 0 1 k k k k k k k k
実行内容 Wregの内容と8ビットのリテラルデータ
のANDを取り、結果をWregに上書きする。
【IORLW】 WregとリテラルデータのORを取る
書式 [label] IORLW k
オペランド k:リテラルデータ(00〜256)
実行内容 (Wreg).OR.( k ) → (Wreg)
影響フラグ Z
サイクル 1サイクル
機械語 1 1 1 0 0 0 k k k k k k k k
実行内容 Wregの内容と8ビットのリテラルデータ
のORを取り、結果をWregに上書きする。
【MOVLW】 リテラルデータをWregに取り出す
書式 [label] MOVLW k
オペランド k:リテラルデータ(00〜256)
実行内容 ( k ) → (Wreg)
影響フラグ 無し
サイクル 1サイクル
機械語 1 1 0 0 x x k k k k k k k k
実行内容 8ビットのリテラルデータをWregに
ロードする。
【SUBLW】 リテラルデータからWregを引き算する
書式 [label] SUBLW k
オペランド k:リテラルデータ(00〜256)
実行内容 ( k ) − (Wreg) → (Wreg)
影響フラグ C、DC、Z
サイクル 1サイクル
機械語 1 1 1 1 0 x k k k k k k k k
実行内容 8ビットのリテラルデータからWregを
引き算し、結果をWregに上書きする。
【XORLW】 WregとリテラルデータのXORを取る
書式 [label] XORLW k
オペランド k:リテラルデータ(00〜256)
実行内容 (Wreg).XOR.( k ) → (Wreg)
影響フラグ Z
サイクル 1サイクル
機械語 1 1 1 0 1 0 k k k k k k k k
実行内容 Wregの内容と8ビットのリテラルデータ
のXORを取り、結果をWregに上書きする。
【コントロール命令】
【CLRWDT】 ウォッチドッグタイマをリセットする
書式 [label] CLRWDT
オペランド 無し
実行内容 0 → (WDT prescaler)
1 → TO、 1 → PD
影響フラグ TO、PD
サイクル 1サイクル
機械語 0 0 0 0 0 0 0 1 1 0 0 1 0 0
実行内容 ウォッチドッグタイマをリセットし、さらに
連動するプリスケーラもゼロクリアする。
ステータスビットのTOとPDを1にセット
する。
【SLEEP】 プロセッサをスリープモードにする
書式 [label] SLEEP
オペランド 無し
実行内容 0 → WDT
0 → WDT prescaler
1 → TO、 0 → PD
影響フラグ TO、PD
サイクル 1サイクル
機械語 0 0 0 0 0 0 0 1 1 0 0 0 1 1
実行内容 パワーダウンステータスビット(PD)をリセット
し、タイムアウトステータスビット(TO)をセット
する。
さらにウォッチドッグタイマをリセットする。
その後、オシレータを停止させてプロセッサを
スリープモードにする。