組み込みシステム-SFRレジスタ

特殊機能レジスタ(または特殊目的レジスタ、または単に特殊レジスタ)は、マイクロプロセッサのさまざまな機能を制御または監視するマイクロプロセッサ内のレジスタです。特殊レジスタは、プロセッサの特殊な機能やステータスと密接に関連しているため、通常の命令(追加、移動など)では直接書き込みできない場合があります。代わりに、一部のプロセッサアーキテクチャの一部の特殊レジスタは、それらを変更するために特別な命令を必要とします。

8051では、レジスタA、B、DPTR、およびPSWは、一般にSFR(特殊機能レジスタ)と呼ばれるレジスタのグループの一部です。SFRには、名前またはアドレスでアクセスできます。

次の表に、SFRとそのアドレスのリストを示します。

バイトアドレス ビットアドレス
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 - D0 PSW
B8 - - - 紀元前 BB BA B9 B8 IP
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A2 AF - - 交流 AB AA A9 A8 IE
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 ビットアドレス指定不可 SBUF
98 9F 9E 9D 9C 9B 9A 99 98 SCON
90 97 96 95 94 93 92 91 90 P1
8D ビットアドレス指定不可 TH1
8C ビットアドレス指定不可 TH0
8B ビットアドレス指定不可 TL1
8A ビットアドレス指定不可 TL0
89 ビットアドレス指定不可 TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 ビットアドレス指定不可 PCON
83 ビットアドレス指定不可 DPH
82 ビットアドレス指定不可 DPL
81 ビットアドレス指定不可 SP
80 87 87 85 84 83 82 81 80 P0

SFRアドレスについては、次の2点を考慮してください。

  • 特殊機能レジスタは、80HからFFHまでのアドレスを持つことができます。00から7FHまでのアドレスは8051内のRAMメモリのアドレスであるため、これらのアドレスは80Hより上です。

  • 80からFFのすべてのアドレス空間がSFRによって使用されるわけではありません。未使用の場所(80HからFFH)は予約されており、8051プログラマーが使用してはなりません。

CY PSW.7 キャリーフラグ
交流 PSW.6 補助キャリーフラグ
F0 PSW.5 ユーザーが汎用で使用できるフラグ0。
RS1 PSW.4 レジスタバンクセレクタビット1
RS0 PSW.3 レジスタバンクセレクタビット0
OV PSW.2 オーバーフローフラグ
- PSW.1 ユーザー定義可能なフラグ
P PSW.0 パリティフラグ。アキュムレータの1ビットの偶数/奇数を示すために、命令サイクル中にハードウェアによってセット/クリアされます。

次の例では、SFRレジスタの名前がそれらのアドレスに置き換えられています。

CY 交流 F0 RS1 RS0 OV - P

RS0およびRS1ビットを使用して、対応するレジスタバンクビットを選択できます。

RS1 RS2 レジスターバンク 住所
0 0 0 00H-07H
0 1 1 08H-0FH
1 0 2 10H-17H
1 1 3 18H-1FH

プログラムステータスワード(PSW)には、CPUの現在の状態を反映するステータスビットが含まれています。8051バリアントは、このステータス情報を備えた1つの特殊機能レジスタPSWを提供します。8251は、2つの追加のステータスフラグZとNを提供します。これらは、PSW1と呼ばれる2番目の特殊機能レジスタで使用できます。