5. 特殊機能レジスタSFR
本マニュアルでは、以下の略語を使用してレジスタを説明することがあります:
略語 | 説明 |
---|---|
RO | アクセスタイプを示す: 読み取り専用 |
WO | アクセスタイプを示す: 書き込みのみ、読み取り値は無効 |
RW | アクセスタイプを示す: 読み取り可能、書き込み可能 |
h | 16進数で表現 |
b | 2進数で表現 |
5.1 SFRのプロフィールとアドレス配信
CH559は、特殊機能レジスタSFR, xSFRを使用して動作モードの制御、管理、設定を行います。
SFRは内部データ記憶領域の80h-FFhアドレス範囲を占有し、ダイレクトアドレスモード命令でのみアクセス可能です。
アドレスがx0hまたはx8hであるレジスタは、特定のビットにアクセスする際に他のビットの値を変更しないようにするため、ビットアドレス指定が可能です。8の倍数以外のレジスタは、バイト単位でしかアクセスできません。
SFRには、セーフモードではデータを書き込むことができますが、非セキュアモードでは読み取り専用になるものがあります。GLOBAL_CFG、PLL_CFG、CLOCK_CFG、SLEEP_CTRL、WAKE_CTRLなどです。
いくつかのSFRは、次のような1つ以上のエイリアスを持っています。SPI0_CK_SE/SPI0_S_PRE、UDEV_CTRL/UHUB0_CTRL、UEP1_CTRL/UH_SETUP、UEP2_CTRL/UH_RX_CTRL、UEP2_T_LEN/UH_EP_PID、UEP3_CTRL/UH_TX_CTRL、UEP3_T_LEN/UH_TX_LEN、P5_PIN/P4_CFG。
部分アドレスは、複数の独立したSFRに対応します。例えば、TL2/T2CAP1L、TH2/T2CAP1H、SAFE_MOD/CHIP_ID、T3_COUNT_L/T3_CK_SE_L、T3_COUNT_H/T3_CK_SE_H、SER1_FIFO/SER1_RBR/SER1_THR/SER1_DLL、SER1_IER/SER1_DLM、SER1_IIR/SER1_FCR、SER1_ADDR/SER1_DIV、ROM_CTRL/ROM_STATUS。
xSFRは、外部データ記憶空間のxdataタイプの2440h~298Fhのアドレス範囲を占有する。またはpdataタイプの40H-8Fhアドレス範囲を指定します。xSFRはMOVX命令による間接アドレス指定でのみバイト単位でアクセスできます。
デフォルトはDPTRポインタがベースです。ただし、bXIR_XSFRが設定された後、高速なR0またはR1は、pdata型ポインタを用いてpU*
とpLED_*
という名前のxSFRにアクセスすることができます。
いくつかのxSFRは、1つまたは複数のエイリアスを持っています。例えば、UEP2_3_MOD/UH_EP_MOD、UEP2_DMA_H/UH_RX_DMA_H、UEP2_DMA_L/UH_RX_DMA_L、UEP2_DMA/UH_RX_DMA、UEP3_DMA_H/UH_TX_DMA_H、UEP3_DMA_L/UH_TX_DMA_L、UEP3_DMA/UH_TX_DMA。
部分アドレスは、複数の独立したxSFRに対応しています。例えば、LED_DATA/LED_FIFO_CN。
CH559には、8051標準SFRの全レジスタが格納されています。そして、デバイス制御レジスタが追加されました。具体的なSFRは以下の表に示します。
表 5.1 特殊機能レジスタ表
備考: (1)赤の文字はビット単位でアドレス指定できることを意味 (2)カラーボックスの対応は以下の通り
色 | 説明 |
---|---|
レジスタアドレス | |
SPI0関連レジスタ | |
ADC関連レジスタ | |
USB関連レジスタ | |
Timer/Counter2関連レジスタ | |
ポート設定関連レジスタ | |
SPI1関連レジスタ | |
PWM1, PWM2関連レジスタ | |
UART1関連レジスタ | |
Timer/Counter0, 1関連レジスタ | |
フラッシュROM関連レジスタ |
5.2 SFRの種類とリセット値
機能 | 名前 | アドレス | 説明 | リセット値 |
---|---|---|---|---|
システム設定レジスタ | B | F0h | Bレジスタ | 0000 0000b |
ACC | E0h | アキュムレータ | 0000 0000b | |
PSW | D0h | プログラムステータスレジスタ | 0000 0000b | |
GLOBAL_CFG | B1h | グローバルコンフィグレーションレジスタ(ブートローダ状態) | 1110 0000b | |
グローバルコンフィグレーションレジスタ(アプリケーション状態) | 1100 0000b | |||
CHIP_ID | A1h | チップID(読み取り専用) | 0101 1001b | |
SAFE_MOD | A1h | セーフモード制御レジスタ(書き込み専用) | 0000 0000b | |
DPH | 83h | データアドレスポインタ上位8ビット | 0000 0000b | |
DPL | 82h | データアドレスポインタ下位8ビット | 0000 0000b | |
DPTR | 82h | DPLとDPHで16ビットのSFRを指定 | 0000h | |
SP | 81h | スタックポインタ | 0000 0111b | |
クロックとスリープ、電源制御レジスタ | WDOG_COUNT | FFh | ウォッチドッグカウントレジスタ | 0000 0000b |
RESET_KEEP | FEh | リセット保持レジスタ(パワーオンリセット状態) | 0000 0000b | |
WAKE_CTRL | EBh | スリープウェイク制御レジスタ | 0000 0000b | |
SLEEP_CTRL | EAh | スリープ制御レジスタ | 0000 0000b | |
CLOCK_CFG | B3h | システムクロック設定レジスタ | 1001 1000b | |
PLL_CFG | B2h | PLLクロック設定レジスタ | 1101 1000b | |
PCON | 87h | 電源制御レジスタ(パワーオンリセット状態) | 0001 0000b | |
割り込み制御レジスタ | IP_EX | E9h | 拡張割り込み優先制御レジスタ | 0000 0000b |
IE_EX | E8h | 拡張割り込み許可レジスタ | 0000 0000b | |
GPIO_IE | CFh | GPIO割り込み許可レジスタ | 0000 0000b | |
IP | B8h | 割り込み優先制御レジスタ | 0000 0000b | |
IE | A8h | 割り込み許可レジスタ | 0000 0000b | |
フラッシュROMレジスタ | ROM_DATA_H | 8Fh | フラッシュROMデータレジスタ上位バイト | xxxx xxxxb |
ROM_DATA_L | 8Eh | フラッシュROMデータレジスタ上位バイト | xxxx xxxxb | |
ROM_DATA | 8Eh | ROM_DATA_LとROM_DATA_Hで16ビットのSFR | xxxxh | |
ROM_STATUS | 86h | フラッシュROMステータスレジスタ(読み取り専用) | 1000 0000b | |
ROM_CTRL | 86h | フラッシュROM制御レジスタ(書き込み専用) | 0000 0000b | |
ROM_ADDR_H | 85h | フラッシュROMアドレスレジスタ上位バイト | xxxx xxxxb | |
ROM_ADDR_L | 84h | フラッシュROMアドレスレジスタ下位バイト | xxxx xxxxb | |
ROM_ADDR | 84h | ROM_ADDR_LとROM_ADDR_H formで16ビットのSFR | xxxxh | |
ポート設定レジスタ | XBUS_SPEED | FDh | 外部バス速度設定レジスタ | 1111 1111b |
XBUS_AUX | FDh | 外部バス補助設定レジスタ | 0000 0000b | |
PIN_FUNC | CEh | ピン機能選択レジスタ | 0000 0000b | |
P4_CFG | C7h | P4ポート設定レジスタ | 0000 0000b | |
P5_IN | C7h | P5ポート入力レジスタ(読み取り専用) | 0000 0000b | |
PORT_CFG | C6h | ポート設定レジスタ | 0000 1111b | |
P0_PU | C5h | P0ポートプルアップ許可レジスタ(En_P0_Pullup=0) | 0000 0000b | |
P0ポートプルアップ許可レジスタ(En_P0_Pullup=1) | 1111 1111b | |||
P0_DIR | C4h | P0ポート入出力制御レジスタ | 0000 0000b | |
P4_PU | C3h | P4ポートプルアップ許可レジスタ | 1111 1111b | |
P4_DIR | C2h | P4ポート入出力制御レジスタ | 0000 0000b | |
P4_IN | C1h | P4ポート入力レジスタ(読み取り専用) | 1111 1111b | |
P4_OUT | C0h | P4ポート出力レジスタ | 0000 0000b | |
P3_PU | BFh | P3ポート入出力制御レジスタ | 1111 1111b | |
P3_DIR | BEh | P3ポートプルアップ許可レジスタ | 0000 0000b | |
P2_PU | BDh | P2ポートプルアップ許可レジスタ | 1111 1111b | |
P2_DIR | BCh | P2ポート入出力制御レジスタ | 0000 0000b | |
P1_PU | BBh | P1ポートプルアップ許可レジスタ | 1111 1111b | |
P1_DIR | BAh | P1ポート入出力制御レジスタ | 0000 0000b | |
P1_IE | B9h | P1ポート入力許可レジスタ | 1111 1111b | |
P3 | B0h | P3ポート入出力レジスタ | 1111 1111b | |
P2 | A0h | P2ポート入出力レジスタ | 1111 1111b | |
P1 | 90h | P1ポート入出力レジスタ | 1111 1111b | |
P0 | 80h | P0ポート入出力レジスタ | 1111 1111b | |
Timer/Counter0, 1レジスタ | TH1 | 8Dh | Timer1カウント上位バイト | xxxx xxxxb |
TH0 | 8Ch | Timer0カウント上位バイト | xxxx xxxxb | |
TL1 | 8Bh3 | Timer1カウント下位バイト | xxxx xxxxb | |
TL0 | 8Ah | Timer0カウント下位バイト | xxxx xxxxb | |
TMOD | 89h | Timer0/1モードレジスタ | 0000 0000b | |
TCON | 88h | Timer0/1制御レジスタ | 0000 0000b | |
UART0レジスタ | SBUF | 99h | UART0データレジスタ | xxxx xxxxb |
SCON | 98h | UART0制御レジスタ | 0000 0000b | |
Timer/Counter2レジスタ | TH2 | CDh | Timer2カウンタ上位バイト | 0000 0000b |
TL2 | CCh | Timer2カウンタ下位バイト | 0000 0000b | |
T2COUNT | CCh | TL2とTH2で16ビットSFR | 0000h | |
T2CAP1H | CDh | Timer2取得1データ上位バイト(読み取り専用) | xxxx xxxxb | |
T2CAP1L | CCh | Timer2取得1データ下位バイト(読み取り専用) | xxxx xxxxb | |
T2CAP1 | CCh | T2CAP1LとT2CAP1Hで16ビットSFR | xxxxh | |
RCAP2H | CBh | Countリロード/取得2データレジスタ上位バイト | 0000 0000b | |
RCAP2L | CAh | Countリロード/取得2データレジスタ下位バイト | 0000 0000b | |
RCAP2 | CAh | RCAP2LとRCAP2Hで16ビットSFR | 0000h | |
T2MOD | C9h | Timer2モードレジスタ | 0000 0000b | |
T2CON | C8h | Timer2制御レジスタ | 0000 0000b | |
Timer/Counter3レジスタ | T3_FIFO_H | AFh | Timer3 FIFO上位バイト | xxxx xxxxb |
T3_FIFO_L | AEh | Timer3 FIFO下位バイト | xxxx xxxxb | |
T3_FIFO | AEh | T3_FIFO_LとT3_FIFO_Hで16ビットSFR | xxxxh | |
T3_DMA_AH | ADh | DMAカレントバッファアドレス上位バイト | 0000 xxxxb | |
T3_DMA_AL | ACh | DMAカレントバッファアドレス下位バイト | xxxx xxx0b | |
T3_DMA | ACh | T3_DMA_ALとT3_DMA_AHで16ビットSFR | 0xxxh | |
T3_DMA_CN | ABh | DMA残量カウントレジスタ | 0000 0000b | |
T3_CTRL | AAh | Timer3制御レジスタ | 0000 0010b | |
T3_STAT | A9h | Timer3ステータスレジスタ | 0000 0000b | |
T3_END_H | A7h | Timer3最終カウント上位バイト | xxxx xxxxb | |
T3_END_L | A6h | Timer3最終カウント下位バイト | xxxx xxxxb | |
T3_END | A6h | T3_END_LとT3_END_Hで16ビットSFR | xxxxh | |
T3_COUNT_H | A5h | Timer3カレントカウント上位バイト(読み取り専用) | 0000 0000b | |
T3_COUNT_L | A4h | Timer3カレントカウント下位バイト(読み取り専用) | 0000 0000b | |
T3_COUNT | A4h | T3_COUNT_LとT3_COUNT_Hで16ビットSFR | 0000h | |
T3_CK_SE_H | A5h | Timer3クロック分周器設定上位バイト | 0000 0000b | |
T3_CK_SE_L | A4h | Timer3クロック分周器設定下位バイト | 0010 0000b | |
T3_CK_SE | A4h | T3_CK_SE_LとT3_CK_SE_Hで16ビットSFR | 0020h | |
T3_SETUP | A3h | Timer3設定レジスタ | 0000 0100b | |
PWM1, PWM2レジスタ | PWM_CYCLE | 9Fh | PWM周期レジスタ | xxxx xxxxb |
PWM_CK_SE | 9Eh | PWMクロック分周設定レジスタ | 0000 0000b | |
PWM_CTRL | 9Dh | PWM制御レジスタ | 0000 0010b | |
PWM_DATA | 9Ch | PWM1データレジスタ | xxxx xxxxb | |
PWM_DATA2 | 9Bh | PWM2データレジスタ | xxxx xxxxb | |
SPI0レジスタ | SPI0_SETUP | FCh | SPI0設定レジスタ | 0000 0000b |
SPI0_S_PRE | FBh | SPI0スレーブモード プリセットデータレジスタ | 0010 0000b | |
SPI0_CK_SE | FBh | SPI0分周クロック設定レジスタ | 0010 0000b | |
SPI0_CTRL | FAh | SPI0制御レジスタ | 0000 0010b | |
SPI0_DATA | F9h | SPI0データトランシーバーレジスタ | xxxx xxxxb | |
SPI0_STAT | F8h | SPI0ステータスレジスタ | 0000 1000b | |
SPI1レジスタ | SPI1_CK_SE | B7h | SPI1分周クロック設定レジスタ | 0010 0000b |
SPI1_CTRL | B6h | SPI1制御レジスタ | 0000 0010b | |
SPI1_DATA | B5h | SPI1データトランシーバーレジスタ | xxxx xxxxb | |
SPI1_STAT | B4h | SPI1ステータスレジスタ | 0000 1000b | |
UART1レジスタ | SER1_DLL | 9Ah | UART1ボーレート分周ラッチ下位バイト | xxxx xxxxb |
SER1_FIFO | 9Ah | UART1データFIFO読み書きレジスタ | xxxx xxxxb | |
SER1_DIV | 97h | UART1プリスケーラ除数レジスタ | 0xxx xxxxb | |
SER1_ADDR | 97h | UART1バスアドレスプリロードレジスタ | 1111 1111b | |
SER1_MSR | 96h | UART1モデムステータスレジスタ(読み取り専用) | 1111 0000b | |
SER1_LSR | 95h | UART1回線ステータスレジスタ(読み取り専用) | 0110 0000b | |
SER1_MCR | 94h | UART1モデム制御レジスタ | 0000 0000b | |
SER1_LCR | 93h | UART1回線制御レジスタ | 0000 0000b | |
SER1_IIR | 92h | UART1割り込み識別レジスタ(読み取り専用) | 0000 0001b | |
SER1_FCR | 92h | FIFO制御レジスタ(書き込み専用) | 0000 0000b | |
SER1_DLM | 91h | UART1ボーレート分周ラッチ上位バイト | 1000 0000b | |
SER1_IER | 91h | UART1割り込み許可レジスタ | 0000 0000b | |
ADCレジスタ | ADC_EX_SW | F7h | ADC拡張アナログスイッチ制御レジスタ | 0000 0000b |
ADC_SETUP | F6h | ADC設定レジスタ | 0000 1000b | |
ADC_FIFO_H | F5h | ADCのFIFO上位バイト(読み取り専用) | 0000 0xxxb | |
ADC_FIFO_L | F4h | ADCのFIFO下位バイト(読み取り専用) | xxxx xxxxb | |
ADC_FIFO | F4h | ADC_FIFO_LとADC_FIFO_Hで16ビットSFR | 0xxxh | |
ADC_CHANN | F3h | ADCチャネルセレクトレジスタ | 0000 0000b | |
ADC_CTRL | F2h | ADC制御レジスタ | 0000 0000b | |
ADC_STAT | F1h | ADCステータスレジスタ | 0000 0100b | |
ADC_CK_SE | EFh | ADC分周クロック設定レジスタ | 0001 0000b | |
ADC_DMA_CN | EEh | DMA残量レジスタ | 0000 0000b | |
ADC_DMA_AH | EDh | DMAカレントバッファアドレス上位バイト | 0000 xxxxb | |
ADC_DMA_AL | ECh | DMAカレントバッファアドレス下位バイト | xxxx xxx0b | |
ADC_DMA | ECh | ADC_DMA_ALとADC_DMA_AHで16ビットSFR | 0xxxh | |
USBレジスタ | USB_DMA_AH | E7h | DMAカレントバッファアドレス上位バイト(読み取り専用) | 000x xxxxb |
USB_DMA_AL | E6h | DMAカレントバッファアドレス下位バイト(読み取り専用) | xxxx xxx0b | |
USB_DMA | E6h | USB_DMA_ALとUSB_DMA_AHで16ビットSFR | xxxxh | |
UHUB1_CTRL | E5h | USBホストHUB1ポート制御レジスタ | 1100 x000b | |
UHUB0_CTRL | E4h | USBホストHUB0ポート制御レジスタ | 0100 x000b | |
UDEV_CTRL | E4h | USBデバイスポート制御レジスタ | 0100 x000b | |
USB_DEV_AD | E3h | USBデバイスアドレスレジスタ | 0000 0000b | |
USB_CTRL | E2h | USB制御レジスタ | 0000 0110b | |
USB_INT_EN | E1h | USB割り込み許可レジスタ | 0000 0000b | |
UEP4_T_LEN | DFh | エンドポイント4送信サイズレジスタ | 0xxx xxxxb | |
UEP4_CTRL | DEh | エンドポイント4制御レジスタ | 0000 0000b | |
UEP0_T_LEN | DDh | エンドポイント0送信サイズレジスタ | 0xxx xxxxb | |
UEP0_CTRL | DCh | エンドポイント0制御レジスタ | 0000 0000b | |
USB_HUB_ST | DBh | SBホストHUBポートステータスレジスタ(読み取り専用) | 0000 0000b | |
USB_MIS_ST | DAh | SB関連ステータスレジスタ(読み取り専用) | xx10 1000b | |
USB_INT_ST | D9h | USB割り込みステータスレジスタ(読み取り専用) | 00xx xxxxb | |
USB_INT_FG | D8h | USB割り込みフラグレジスタ | 0010 0000b | |
UEP3_T_LEN | D7h | エンドポイント3送信サイズレジスタ | 0xxx xxxxb | |
UH_TX_LEN | D7h | USBホスト送信サイズレジスタ | 0xxx xxxxb | |
UEP3_CTRL | D6h | エンドポイント3制御レジスタ | 0000 0000b | |
UH_TX_CTRL | D6h | USBホストエンドポイント送信制御レジスタ | 0000 0000b | |
UEP2_T_LEN | D5h | エンドポイント2送信サイズレジスタ | 0000 0000b | |
UH_EP_PID | D5h | USBホストトークン設定レジスタ | 0000 0000b | |
UEP2_CTRL | D4h | エンドポイント2制御レジスタ | 0000 0000b | |
UH_RX_CTRL | D4h | USBホスト受信エンドポイント制御レジスタ | 0000 0000b | |
UEP1_T_LEN | D3h | エンドポイント1送信サイズレジスタ | 0xxx xxxxb | |
UEP1_CTRL | D2h | エンドポイント1制御レジスタ | 0000 0000b | |
UH_SETUP | D2h | USBホスト補助設定レジスタ | 0000 0000b | |
USB_RX_LEN | D1h | USB受信サイズレジスタ(読み取り専用) | 0xxx xxxxb | |
USB xSFRレジスタ | UEP4_1_MOD | 2446h | エンドポイント1, 4モード制御レジスタ | 0000 0000b |
UEP2_3_MOD | 2447h | エンドポイント2, 3モード制御レジスタ | 0000 0000b | |
UH_EP_MOD | 2447h | USBホストエンドポイントモード制御レジスタ | 0000 0000b | |
UEP0_DMA_H | 2448h | エンドポイント0, 4バッファ開始アドレス上位バイト | 000x xxxxb | |
UEP0_DMA_L | 2449h | エンドポイント0, 4バッファ開始アドレス下位バイト | xxxx xxx0b | |
UEP0_DMA | 2448h | UEP0_DMA_LとUEP0_DMA_Hで16ビットSFR | xxxxh | |
UEP1_DMA_H | 244Ah | エンドポイント1バッファ開始アドレス上位バイト | 000x xxxxb | |
UEP1_DMA_L | 244Bh | エンドポイント1バッファ開始アドレス下位バイト | xxxx xxx0b | |
UEP1_DMA | 244Ah | UEP1_DMA_LとUEP1_DMA_Hで16ビットSFR | xxxxh | |
UEP2_DMA_H | 244Ch | エンドポイント2バッファ開始アドレス上位バイト | 000x xxxxb | |
UEP2_DMA_L | 244Dh | エンドポイント2バッファ開始アドレス下位バイト | xxxx xxx0b | |
UEP2_DMA | 244Ch | UEP2_DMA_LとUEP2_DMA_Hで16ビットSFR | xxxxh | |
UH_RX_DMA_H | 244Ch | USBホスト受信開始アドレス上位バイト | 000x xxxxb | |
UH_RX_DMA_L | 244Dh | USBホスト受信開始アドレス下位バイト | xxxx xxx0b | |
UH_RX_DMA | 244Ch | UH_RX_DMA_LとUH_RX_DMA_Hで16ビットSFR | xxxxh | |
UEP3_DMA_H | 244Eh | エンドポイント3バッファ開始アドレス上位バイト | 000x xxxxb | |
UEP3_DMA_L | 244Fh | エンドポイント3バッファ開始アドレス下位バイト | xxxx xxx0b | |
UEP3_DMA | 244Eh | UEP3_DMA_LとUEP3_DMA_Hで16ビットSFR | xxxxh | |
UH_TX_DMA_H | 244Eh | USBホスト送信バッファ開始アドレス上位バイト | 000x xxxxb | |
UH_TX_DMA_L | 244Fh | USBホスト送信バッファ開始アドレス下位バイト | xxxx xxx0b | |
UH_TX_DMA | 244Eh | UH_TX_DMA_LとUH_TX_DMA_Hで16ビットSFR | xxxxh | |
pU* | 254*h | bXIR_XSFRを1に設定した後、この名前を使って上記のxSFRをpdata型でアドレス指定することで、xdata型でアドレス指定するよりも高速になります。 | ||
LEDコントロールカードxSFRレジスタ | LED_STAT | 2880h | LEDステータスレジスタ | 010x 0000b |
LED_CTRL | 2881h | LED制御レジスタ | 0000 0010b | |
LED_FIFO_CN | 2882h | FIFOカウントステータスレジスタ(読み取り専用) | 0000 0000b | |
LED_DATA | 2882h | LEDデータレジスタ(書き込み専用) | xxxx xxxxb | |
LED_CK_SE | 2883h | LEDクロック分周器設定レジスタ | 0001 0000b | |
LED_DMA_AH | 2884h | DMAカレントバッファアドレス上位バイト | 000x xxxxb | |
LED_DMA_AL | 2885h | DMAカレントバッファアドレス下位バイト | xxxx xxx0b | |
LED_DMA | 2884h | LED_DMA_ALとLED_DMA_AHで16ビットSFR | xxxxh | |
LED_DMA_CN | 2886h | LED DMA残量レジスタ | xxxx xxxxb | |
LED_DMA_XH | 2888h | DMAカレント補助バッファアドレス上位バイト | 000x xxxxb | |
LED_DMA_XL | 2889h | DMAカレント補助バッファアドレス下位バイト | xxxx xxx0b | |
LED_DMA_X | 2888h | LED_DMA_XLとLED_DMA_XHで16ビットSFR | xxxxh | |
pLED_* | 298*h | bXIR_XSFRを1に設定した後、この名前を使って上記のxSFRをpdata型でアドレス指定することで、xdata型でアドレス指定するよりも高速になります。 |
5.3 汎用8051レジスタ
表 5.3.1 汎用8051レジスタ一覧
名前 | アドレス | 概要 | リセット値 |
---|---|---|---|
B | F0h | Bレジスタ | 00h |
A, ACC | E0h | アキュムレータ | 00h |
PSW | D0h | プログラムステータスレジスタ | 00h |
GLOBAL_CFG | B1h | グローバルコンフィグレーションレジスタ(ブートローダ状態) | E0h |
グローバルコンフィグレーションレジスタ(アプリケーション状態) | C0h | ||
CHIP_ID | A1h | チップID(読み取り専用) | 59h |
SAFE_MOD | A1h | セーフモード制御レジスタ(書き込み専用) | 00h |
PCON | 87h | 電源制御レジスタ(パワーオンリセット状態) | 10h |
DPH | 83h | データアドレスポインタ上位8ビット | 00h |
DPL | 82h | データアドレスポインタ下位8ビット | 00h |
DPTR | 82h | DPLとDPHは16ビットSFR | 0000h |
SP | 81h | スタックポインタ | 07h |
Bレジスタ (B):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | B | RW | 算術演算レジスタ。主に掛け算や割り算に使われます。ビット単位でのアクセス可能 | 00h |
Aアキュムレータ(A, ACC):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | A/ACC | RW | 算術アキュムレータ。ビット単位でのアクセス可能 | 00h |
プログラム状態レジスタ(PSW):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
7 | CY | RW | キャリーフラグ: 算術演算や論理演算を行う際に、最上位ビットのキャリーまたは借用を記録するために使用します。 8ビット加算時には最上位ビットがセットされ、それ以外の場合はクリアされます。 8ビット減算時に借用の場合はビットがセットされ、それ以外の場合はクリアされます。 ロジック命令は、ビットをビットにしたり、クリアにしたりすることができます。 | 0 |
6 | AC | RW | 補助キャリーフラグ: 記録・減算時、下位4ビットに上位4ビットからのキャリーまたは借用があり、ACがセットされ、それ以外の場合はクリアされる。 | 0 |
5 | F0 | RW | ユニバーサルフラグビットでビット単位でのアクセス可能。0: ユーザーが自分で定義することができ、ソフトウェアによってクリアまたは設定することができます | 0 |
4 | RS1 | RW | レジスタバンク選択(HIGHで選択) | 0 |
3 | RS0 | RW | レジスタバンク選択(LOWで選択) | 0 |
2 | OV | RW | オーバーフローフラグ: 足し算・引き算時に演算結果が8桁の2進数を超えた場合に、OVは1に設定されます。そうでなければクリアして0 | 0 |
1 | F1 | RW | ユニバーサルフラグでビット単位でのアクセス可能。1: ユーザーが自分で定義することができ、ソフトウェアによってクリアまたは設定することができます | 0 |
0 | P | R0 | パリティフラグ: 命令実行後、アキュムレータAに1のパリティを記録する。P1は奇数のとき1でPは偶数のとき1 | 0 |
プロセッサの状態はステータスレジスタPSWに格納され、PSWはビット単位のアクセスをサポートしています。ステータスワードにはキャリーフラグが含まれています。BCDコード処理のための補助キャリーフラグ。パリティフラグを指定します。オーバーフローフラグを指定します。そしてRS0, RS1を使用してワーキングレジスタのバンク選択を行います。ワーキングレジスタセットが配置されている領域は、直接または間接的にアクセスすることができます。
表 5.3.2 RS1とRS0のワーキングレジスタグループ選択テーブル
RS1 | RS0 | ワーキングレジスタセット |
---|---|---|
0 | 0 | グループ0 (00h-07h) |
0 | 1 | グループ1 (08h-0Fh) |
1 | 0 | グループ2 (10h-17h) |
1 | 1 | グループ3 (18h-1Fh) |
表 5.3.3 フラグビットに影響を与える操作(Xはフラグビットが操作結果に関係していることを示す)
オペレーション | CY | OV | AC |
---|---|---|---|
ADD | X | X | X |
ADDC | X | X | X |
SUBB | X | X | X |
MUL | 0 | X | |
DIV | 0 | X | |
DA A | X | ||
RRC A | X | ||
RLC A | X | ||
CJNE | X | ||
SETB C | 1 | ||
CLR C | 0 | ||
CPL C | X | ||
MOV C, bit | X | ||
ANL C, bit | X | ||
ANL C,/bit | X | ||
ORL C, bit | X | ||
ORL C,/bit | X |
データアドレスポインタ(DPTR):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | DPL | RW | データポインタ下位バイト | 00h |
[7:0] | DPH | RW | データポインタ上位バイト | 00h |
DPLとDPHはxSFR, xBUS, xRAMデータメモリまたはプログラムメモリにアクセスするための16ビットデータポインターDPTRを形成します。実際のDPTRは、DPTR0及びDPTR1の物理的な16ビットデータポインタに対応する、XBUS_AUX内のDPSによって動的に選択されます。
スタックポインタ(SP):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | SP | RW | スタックポインタ。主にプログラムの呼び出しや割り込み呼び出し、スタックへのデータの入出力に使用されます。 | 07h |
スタック固有の機能: エンドポイントを保護し、サイトを保護し、先入れ先出し順に管理します。スタックが追加されると、SPポインタが自動的に1インクリメントされ、データまたはブレークポイント情報が保存されます。スタックを取得する、SPポインタはデータユニットを指し、SPポインタは自動的に1だけデクリメントされます。リセット後のSPの初期値は07hで、対応するデフォルトのスタック保存は08hから始まります。
5.4 特殊レジスタ
グローバル構成レジスタ(GLOBAL_CFG)、セーフモードでのみ書き込み可能。
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:6] | Reserved | RO | 11に固定 | 11b |
5 | bBOOT_LOAD | RO | ブートローダステータスビットは、ISPブートローダの状態とアプリケーションの状態を区別するために使用します。 電源投入時に設定され、ソフトウェアがリセットされると 0 にクリアされます。 ISPブートローダを搭載したチップの場合、本ビットが1の場合、ソフトウェアがリセットされていないことを示します。通常は、電源投入後に実行されたISPブートローダの状態です。このビットは0で、ソフトウェアがリセットされたことを示します。通常はアプリケーション状態 | 1 |
4 | bSW_RESET | RW | ソフトウェアリセット制御ビット: 1に設定するとソフトウェアリセットが行われます。ハードウェアオートゼロ | 0 |
3 | bCODE_WE | RW | フラッシュROM書き込み許可ビット。このビットは書き込み禁止の場合は0です。フラッシュROM書き込みや消去可能な場合は1 | 0 |
2 | bDATA_WE | RW | フラッシュROMのデータフラッシュ領域書き込み許可ビットです。このビットは書き込み禁止の場合は0です。データフラッシュ領域の書き込みや消去可能な場合は1 | 0 |
1 | bXIR_XSFR | RW | MOVX_@R0/R1命令アクセス範囲制御ビット: 本ビットは0で全てのxdata領域xRAM/xBUS/xSFRへのアクセスを許可します。 本ビットは1でxSFRへのアクセスを許可します、xRAM/xBUSへのアクセスはできません。 | 0 |
0 | bWDOG_EN | RW | ウォッチドッグリセット許可ビット: 本ビットは0でウォッチドッグはタイマーとしてしか使われていません。このビットは1で、タイマーがオーバーフローしたときにウォッチドッグリセットを許可します。 | 0 |
チップID(CHIP_ID):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | CHIP_ID | RO | 識別チップ固定値59h | 59h |
セーフモード制御レジスタ(SAFE_MOD):
ビット | 名前 | アドレス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | SAFE_MOD | WO | セーフモードに入るか終了するために使用します。 | 00h |
SFR の中には、セーフモードでしかデータを書き込めず、非セキュアモードでは常に読み取り専用となるものがあります。セーフモードに入るための手順:
- 55hをレジスタに書き込む。
- そして、レジスタにAAhを書き込みます。
- その後、約13~23回のシステム主周波数サイクルがセーフモードとなり、有効期間中に1つ以上のセキュリティクラスSFRまたは通常SFRを書き換えることができる。
- 上記の有効期間後に自動的にセーフモードを終了させます。
- または、このレジスタに任意の値を書き込むことで、セーフモードを早期に終了させることができます。