特殊機能レジスタ(SFR)は、マイクロコントローラ内のレジスタであり、マイクロコントローラの機能の様々な側面を制御または監視します。プロセッサアーキテクチャに応じて、SFRには以下が含まれますが、これらに限定されません。
- I/Oおよび周辺機器制御(シリアルポートや汎用IOなど)
- タイマー
- スタックポインタ
- スタック制限(オーバーフローを防ぐため)
- プログラムカウンタ
- サブルーチンの 戻りアドレス
- プロセッサの状態 (割り込み処理中、保護モードで実行中など)
- 条件コード(前回の比較の結果)
特殊レジスタはマイクロコントローラの特定の機能やステータスと密接に関連しているため、通常の命令(加算、移動など)では直接書き込みできない場合があります。一部のマイクロコントローラアーキテクチャでは、特殊レジスタを変更するために特別な命令が必要となる場合があります。例えば、多くのマイクロコントローラアーキテクチャでは、プログラムカウンタは直接書き込みできません。プログラマは、サブルーチンからの復帰、ジャンプ、分岐などの命令を使用してプログラムカウンタを変更します。また、条件コードレジスタは直接書き込みできないため、比較命令によってのみ更新される場合があります。
インテルマイクロコントローラー
特殊機能レジスタ(SFR)は、アドレス指定可能なメモリの上位領域、つまりアドレス0x80から0xFFにあります。このメモリ領域はデータやプログラムの保存には使用できませんが、メモリマップされたポートとレジスタの集合体として機能します。そのため、すべてのポート入出力は、SFR領域内の指定されたアドレスに対するメモリ移動操作によって実行できます。また、SFRには様々なステータスレジスタがマッピングされており、8051の状態を確認したり、8051の動作パラメータを変更したりするために使用できます。
一部のSFRビットは、SFRのアドレスに対してSETB/LDB命令を使用して直接設定できますが、他のビットは特定の命令の使用が必要です。Intel 80196クラスのマイクロコントローラには、それぞれ1バイトのサイズのSFRが24個あります。標準的なIntel 8051チップには、21個のSFRがあります。
外部リンク
- i8051 SFR
- ウェイバックマシンの「特殊機能レジスタ 1/2」(2014年1月29日アーカイブ)
- AVRのCプログラミングにおけるSFR