命令MOVFについて MOVF の詳細 • movf f,d • fをdに代入 • fはレジスタ名(レジスタのアドレス) • dは転送先 • d=1、自分自身 • d=0、ワーキングレジスタ MOVF d=1の場合 • d=1の場合、転送元のレジスタへ転送される。 なぜ、こんなことをするのか? 演算結果で影響を受けるレジスタがある。(STATUS) STATUSレジスタには、 直前の演算結果の結果が反映されている。 たとえば、減算演算が0になった場合、Zフラグが立つ。 MOVF CNT1、1 とすることで、レジスタCNT1の内容は変わらないが、副次的効果で STATUSレジスタのZフラグをクリアすることができる。 MOVF d=0の場合 • d=0 の場合、転送先はワーキングレジスタになる。 • 素直に使う場合、 MOVF CNT1,0 • とすればレジスタCNT1の内容がワーキングレジスタに転送される。 • こっちがまともな使い方と言える。 MOVF f,d • よって、レジスタf の内容をワーキングレジスタに転送する場合には、以下のよ うにするべきである。 MOVF レジスタ名(変数名),0 • "p16f84a.inc"に定義されている値を使ってもよい。 W F EQU H'0000' EQU H'0001' MOVF レジスタ名(変数名),W
© Copyright 2024 ExpyDoc