目次PIC入門873ハードSFR

PIC16F873のSFR説明(2)

STATUS(ステータスレジスタ) 03h,83h,103h,183h
このレジスタではRAMファイルレジスタのバンク指定、ウォッチドックタイマーのタイムアウト状態、パワーダウン状態、演算結果のフラッグなどが管理されます。
カッコ内の値は電源投入直後の状態です。

IRP : 間接アドレス指定の場合にバンク指定の上位ビットを設定します。
間接アドレス指定の場合、バンクはIRPビットとFSRの最上位ビットの組み合わせで指定されます。
バンク内のアドレスはFSRの下位7ビットにより指定されます。

STATUSおよびFSRレジスタは全バンク共通なので、バンクが切り替わっても動作に支障はありません。

RP1,RP0 : 直接アドレス指定の場合のバンク指定を設定します。
命令コードで直接レジスタを指定する形式(直接アドレス指定)の場合、バンクはRP0とRP1により指定されます。

RP1RP0バンク
000
011
102
113

TO(inv) : ウォッチドックタイマーのタイムアウト状態を表示します。書き込みはできません。
1:電源投入直後、CLRWDTまたはSLEEP命令を実行時
0:Watchdogタイマーのタイムアウトが発生

PD(inv) : パワーダウン状態を表示します。書き込みはできません。
1:電源投入直後、CLRWDT命令を実行時
0:SLEEP命令実行時(省電力モード)

: ゼロ状態表示ビット
1:演算結果がゼロ
0:演算結果がゼロでない

DC : デジットキャリービット
1:演算結果の下位4ビットからのオーバーフローが発生
0:演算結果の下位4ビットからのオーバーフローが発生していない

: キャリービット
1: 演算結果の最上位ビットからのオーバーフローが発生
引き算の場合、結果が正
0:演算結果の最上位ビットからのオーバーフローが発生していない




FSR(間接アドレスレジスタ) 05h,85h,105h,185h
このレジスタはインダイレクトアドレス(間接アドレス)形式でレジスタのアドレスを指定するレジスタです。
FSRの最上位ビットはバンク指定の下位ビットに使用し、残りの7ビットでバンク内レジスタアドレスを指定します。バンク指定の上位ビットはSTATUSレジスタのIRPで指定します。
これについてはSTATUSレジスタの項目を参照して下さい。また、FSRで指定したレジスタの読み書きについてはINDFレジスタの項目を参照して下さい。




PORTn(ポートレジスタ)/TRISn(ポート設定レジスタ) 05h,06h,07h,106h/85h,86h,87h,186h
PORTnレジスタは入出力ポートへのデータ設定またはデータ取り込みを行うレジスタです。TRISnレジスタはポートを入力または出力に設定するためにレジスタです。PIC16F873ではnはAからCまでで、DおよびEはありません。
Aポートは6ポート(下位6ビットを使用)で、BおよびCは8ポートです。
各ポートの入出力指定はTRISnレジスタで行います。"0"を設定すると出力指定になり、"1"を設定すると入力指定になります。
出力はPORTnレジスタに設定すると同時にポートに出力されます。ポートからの入力は常にPORTnレジスタに現れているので、PORTnレジスタを読み込めば入力状態を取り込むことができます。
PORTレジスタおよびTRISレジスタは8ビット同時に読み書きが行われるので、設定を1ビットだけ変える場合には他のビットを変えないように処理する必要があります。レジスタを一度読み込んでから必要なビットを変更して書き込むような処理も良く使われます。各ビットの状態が分かっていればそのような処理でなくてもかまいません。