PIC18F452のプログラムに $ を使う

PIC16F84AやPIC16F877Aなどのアッセンブラプログラミングにおいて プログラムカウンタを一つ進めるには NOP を書けばプログラムカウンタが一つ進められます。 

MPASM ではオペレータ $ を使い GOTO $+1 とすると PIC16F84Aや PIC16F877Aなどではプログラムカウンタが1つ進められます。コマンド間の時間差を取るためにGOTO コマンドを使うと GOTO コマンドは2サイクル命令なので1サイクル命令のNOPの倍の時間(タイミング)が確保されます。

ところで、PIC18F452 など PIC18 系ではプログラムメモリーを 8ビット+8ビット=16ビットとしてプログラムカウンタを偶数づつ進めるため GOTO $+1  とか $+3 ではプログラムカウンタの奇数部分に進むのでプログラムは動かなくなってしまいます。  GOTO $+2 とか GOTO $+4でないといけません。

2003.7.19
2007.12.10文脈改
 PIC目次へ     トップページへ