【その他の命令】
PICにはこれまでの命令以外に下記のような特殊な動作をする命令が
用意されています。
nemonic : 内容 :Flag :Cycle :オペコード
--------------------------------------------------------------
CLRWDT : 00h -> WDT : PD,TO : 1 : 00 0000 0110 0100
0 -> WDT prescaler 1 -> PD(STATUS<3>)
1 -> TO(STATUS<4>)
NOP : No Operation : None : 1 : 00 0000 0xx0 0000
SLEEP : スリープモード : PD,TO : 1 : 00 0000 0110 0011
00h -> WDT 1 -> PD(STATUS<3>) 0 -> TO(STATUS<4>)
【NOP命令】
何もしないという命令です。何もしないというのは変なのですが、使い方
としては、何もしないのですが、実行時間だけはかかるので、タイマーなど
のプログラムで、時間を調整するときに、ダミーの命令として良く使います。
構造は図2(a)となっていますが、dやfは全て0となっています。。
【CLRWDT命令】
PICにはウォッチドッグタイマというタイマが内蔵されています。これは
プログラムが異常になったことを検知するためにあるのですが、この
CKRWDT命令は、ウォッチドッグタイマをクリアしてタイムアップしない
ようにする命令です。
つまり、常に一定時間以内にCLRWDT命令を実行するようにプログラム
を作成し、もし、プログラムが異常な動作をしたときには、このCLRWDT
命令が一定時間内に実行出来なくなり、ウォッチドッグタイマがタイム
アップしてしまいます。
タイムアップするとどうなるのでしょうか?
タイムアップすると、PICにはハードウェアのリセットがかかり、プログラム
カウンタが強制的に0となり、その他のレジスタ類も初期化されます。
従って、プログラムは最初から実行しなおされることになり、正常動作に
戻すことが出来ます。
ウォッチドッグタイマの詳細は、「PICプログラミング実用テク」を参照して
下さい。
【SLEEP命令】
このSLEEP命令は、PICを一時休止状態にして、電力消費を極端に小さく
できる命令です。
リセットや割り込み信号で休止状態が解除され通常動作に戻ります。