5. 特殊機能レジスタSFR

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 特殊機能レジスタ表

SFR_Table

備考: (1)赤の文字はビット単位でアドレス指定できることを意味 (2)カラーボックスの対応は以下の通り

説明
レジスタアドレス
SPI0関連レジスタ
ADC関連レジスタ
USB関連レジスタ
Timer/Counter2関連レジスタ
ポート設定関連レジスタ
SPI1関連レジスタ
PWM1, PWM2関連レジスタ
UART1関連レジスタ
Timer/Counter0, 1関連レジスタ
フラッシュROM関連レジスタ

5.2 SFRの種類とリセット値

機能名前アドレス説明リセット値
システム設定レジスタBF0hBレジスタ0000 0000b
ACCE0hアキュムレータ0000 0000b
PSWD0hプログラムステータスレジスタ0000 0000b
GLOBAL_CFGB1hグローバルコンフィグレーションレジスタ(ブートローダ状態)1110 0000b
グローバルコンフィグレーションレジスタ(アプリケーション状態)1100 0000b
CHIP_IDA1hチップID(読み取り専用)0101 1001b
SAFE_MODA1hセーフモード制御レジスタ(書き込み専用)0000 0000b
DPH83hデータアドレスポインタ上位8ビット0000 0000b
DPL82hデータアドレスポインタ下位8ビット0000 0000b
DPTR82hDPLとDPHで16ビットのSFRを指定0000h
SP81hスタックポインタ0000 0111b
クロックとスリープ、電源制御レジスタWDOG_COUNTFFhウォッチドッグカウントレジスタ0000 0000b
RESET_KEEPFEhリセット保持レジスタ(パワーオンリセット状態)0000 0000b
WAKE_CTRLEBhスリープウェイク制御レジスタ0000 0000b
SLEEP_CTRLEAhスリープ制御レジスタ0000 0000b
CLOCK_CFGB3hシステムクロック設定レジスタ1001 1000b
PLL_CFGB2hPLLクロック設定レジスタ1101 1000b
PCON87h電源制御レジスタ(パワーオンリセット状態)0001 0000b
割り込み制御レジスタIP_EXE9h拡張割り込み優先制御レジスタ0000 0000b
IE_EXE8h拡張割り込みイネーブルレジスタ0000 0000b
GPIO_IECFhGPIO割り込みイネーブルレジスタ0000 0000b
IPB8h割り込み優先制御レジスタ0000 0000b
IEA8h割り込みイネーブルレジスタ0000 0000b
フラッシュROMレジスタROM_DATA_H8FhフラッシュROMデータレジスタ上位バイトxxxx xxxxb
ROM_DATA_L8EhフラッシュROMデータレジスタ上位バイトxxxx xxxxb
ROM_DATA8EhROM_DATA_LとROM_DATA_Hで16ビットのSFRxxxxh
ROM_STATUS86hフラッシュROMステータスレジスタ(読み取り専用)1000 0000b
ROM_CTRL86hフラッシュROM制御レジスタ(書き込み専用)0000 0000b
ROM_ADDR_H85hフラッシュROMアドレスレジスタ上位バイトxxxx xxxxb
ROM_ADDR_L84hフラッシュROMアドレスレジスタ下位バイトxxxx xxxxb
ROM_ADDR84hROM_ADDR_LとROM_ADDR_H formで16ビットのSFRxxxxh
ポート設定レジスタXBUS_SPEEDFDh外部バス速度設定レジスタ1111 1111b
XBUS_AUXFDh外部バス補助設定レジスタ0000 0000b
PIN_FUNCCEhピン機能選択レジスタ0000 0000b
P4_CFGC7hP4ポート設定レジスタ0000 0000b
P5_INC7hP5ポート入力レジスタ(読み取り専用)0000 0000b
PORT_CFGC6hポート設定レジスタ0000 1111b
P0_PUC5hP0ポートプルアップイネーブルレジスタ(En_P0_Pullup=0)0000 0000b
P0ポートプルアップイネーブルレジスタ(En_P0_Pullup=1)1111 1111b
P0_DIRC4hP0ポート入出力制御レジスタ0000 0000b
P4_PUC3hP4ポートプルアップイネーブルレジスタ1111 1111b
P4_DIRC2hP4ポート入出力制御レジスタ0000 0000b
P4_INC1hP4ポート入力レジスタ(読み取り専用)1111 1111b
P4_OUTC0hP4ポート出力レジスタ0000 0000b
P3_PUBFhP3ポート入出力制御レジスタ1111 1111b
P3_DIRBEhP3ポートプルアップイネーブルレジスタ0000 0000b
P2_PUBDhP2ポートプルアップイネーブルレジスタ1111 1111b
P2_DIRBChP2ポート入出力制御レジスタ0000 0000b
P1_PUBBhP1ポートプルアップイネーブルレジスタ1111 1111b
P1_DIRBAhP1ポート入出力制御レジスタ0000 0000b
P1_IEB9hP1ポート入力イネーブルレジスタ1111 1111b
P3B0hP3ポート入出力レジスタ1111 1111b
P2A0hP2ポート入出力レジスタ1111 1111b
P190hP1ポート入出力レジスタ1111 1111b
P080hP0ポート入出力レジスタ1111 1111b
Timer/Counter0, 1レジスタTH18DhTimer1カウント上位バイトxxxx xxxxb
TH08ChTimer0カウント上位バイトxxxx xxxxb
TL18Bh3Timer1カウント下位バイトxxxx xxxxb
TL08AhTimer0カウント下位バイトxxxx xxxxb
TMOD89hTimer0/1モードレジスタ0000 0000b
TCON88hTimer0/1制御レジスタ0000 0000b
UART0レジスタSBUF99hUART0データレジスタxxxx xxxxb
SCON98hUART0制御レジスタ0000 0000b
Timer/Counter2レジスタTH2CDhTimer2カウンタ上位バイト0000 0000b
TL2CChTimer2カウンタ下位バイト0000 0000b
T2COUNTCChTL2とTH2で16ビットSFR0000h
T2CAP1HCDhTimer2取得1データ上位バイト(読み取り専用)xxxx xxxxb
T2CAP1LCChTimer2取得1データ下位バイト(読み取り専用)xxxx xxxxb
T2CAP1CChT2CAP1LとT2CAP1Hで16ビットSFRxxxxh
RCAP2HCBhCountリロード/取得2データレジスタ上位バイト0000 0000b
RCAP2LCAhCountリロード/取得2データレジスタ下位バイト0000 0000b
RCAP2CAhRCAP2LとRCAP2Hで16ビットSFR0000h
T2MODC9hTimer2モードレジスタ0000 0000b
T2CONC8hTimer2制御レジスタ0000 0000b
Timer/Counter3レジスタT3_FIFO_HAFhTimer3 FIFO上位バイトxxxx xxxxb
T3_FIFO_LAEhTimer3 FIFO下位バイトxxxx xxxxb
T3_FIFOAEhT3_FIFO_LとT3_FIFO_Hで16ビットSFRxxxxh
T3_DMA_AHADhDMAカレントバッファアドレス上位バイト0000 xxxxb
T3_DMA_ALAChDMAカレントバッファアドレス下位バイトxxxx xxx0b
T3_DMAAChT3_DMA_ALとT3_DMA_AHで16ビットSFR0xxxh
T3_DMA_CNABhDMA残量カウントレジスタ0000 0000b
T3_CTRLAAhTimer3制御レジスタ0000 0010b
T3_STATA9hTimer3ステータスレジスタ0000 0000b
T3_END_HA7hTimer3最終カウント上位バイトxxxx xxxxb
T3_END_LA6hTimer3最終カウント下位バイトxxxx xxxxb
T3_ENDA6hT3_END_LとT3_END_Hで16ビットSFRxxxxh
T3_COUNT_HA5hTimer3カレントカウント上位バイト(読み取り専用)0000 0000b
T3_COUNT_LA4hTimer3カレントカウント下位バイト(読み取り専用)0000 0000b
T3_COUNTA4hT3_COUNT_LとT3_COUNT_Hで16ビットSFR0000h
T3_CK_SE_HA5hTimer3クロック分周器設定上位バイト0000 0000b
T3_CK_SE_LA4hTimer3クロック分周器設定下位バイト0010 0000b
T3_CK_SEA4hT3_CK_SE_LとT3_CK_SE_Hで16ビットSFR0020h
T3_SETUPA3hTimer3設定レジスタ0000 0100b
PWM1, PWM2レジスタPWM_CYCLE9FhPWM周期レジスタxxxx xxxxb
PWM_CK_SE9EhPWMクロック分周設定レジスタ0000 0000b
PWM_CTRL9DhPWM制御レジスタ0000 0010b
PWM_DATA9ChPWM1データレジスタxxxx xxxxb
PWM_DATA29BhPWM2データレジスタxxxx xxxxb
SPI0レジスタSPI0_SETUPFChSPI0設定レジスタ0000 0000b
SPI0_S_PREFBhSPI0スレーブモード プリセットデータレジスタ0010 0000b
SPI0_CK_SEFBhSPI0分周クロック設定レジスタ0010 0000b
SPI0_CTRLFAhSPI0制御レジスタ0000 0010b
SPI0_DATAF9hSPI0データトランシーバーレジスタxxxx xxxxb
SPI0_STATF8hSPI0ステータスレジスタ0000 1000b
SPI1レジスタSPI1_CK_SEB7hSPI1分周クロック設定レジスタ0010 0000b
SPI1_CTRLB6hSPI1制御レジスタ0000 0010b
SPI1_DATAB5hSPI1データトランシーバーレジスタxxxx xxxxb
SPI1_STATB4hSPI1ステータスレジスタ0000 1000b
UART1レジスタSER1_DLL9AhUART1ボーレート分周ラッチ下位バイトxxxx xxxxb
SER1_FIFO9AhUART1データFIFO読み書きレジスタxxxx xxxxb
SER1_DIV97hUART1プリスケーラ除数レジスタ0xxx xxxxb
SER1_ADDR97hUART1バスアドレスプリロードレジスタ1111 1111b
SER1_MSR96hUART1モデムステータスレジスタ(読み取り専用)1111 0000b
SER1_LSR95hUART1回線ステータスレジスタ(読み取り専用)0110 0000b
SER1_MCR94hUART1モデム制御レジスタ0000 0000b
SER1_LCR93hUART1回線制御レジスタ0000 0000b
SER1_IIR92hUART1割り込み識別レジスタ(読み取り専用)0000 0001b
SER1_FCR92hFIFO制御レジスタ(書き込み専用)0000 0000b
SER1_DLM91hUART1ボーレート分周ラッチ上位バイト1000 0000b
SER1_IER91hUART1割り込みイネーブルレジスタ0000 0000b
ADCレジスタADC_EX_SWF7hADC拡張アナログスイッチ制御レジスタ0000 0000b
ADC_SETUPF6hADC設定レジスタ0000 1000b
ADC_FIFO_HF5hADCのFIFO上位バイト(読み取り専用)0000 0xxxb
ADC_FIFO_LF4hADCのFIFO下位バイト(読み取り専用)xxxx xxxxb
ADC_FIFOF4hADC_FIFO_LとADC_FIFO_Hで16ビットSFR0xxxh
ADC_CHANNF3hADCチャネルセレクトレジスタ0000 0000b
ADC_CTRLF2hADC制御レジスタ0000 0000b
ADC_STATF1hADCステータスレジスタ0000 0100b
ADC_CK_SEEFhADC分周クロック設定レジスタ0001 0000b
ADC_DMA_CNEEhDMA残量レジスタ0000 0000b
ADC_DMA_AHEDhDMAカレントバッファアドレス上位バイト0000 xxxxb
ADC_DMA_ALEChDMAカレントバッファアドレス下位バイトxxxx xxx0b
ADC_DMAEChADC_DMA_ALとADC_DMA_AHで16ビットSFR0xxxh
USBレジスタUSB_DMA_AHE7hDMAカレントバッファアドレス上位バイト(読み取り専用)000x xxxxb
USB_DMA_ALE6hDMAカレントバッファアドレス下位バイト(読み取り専用)xxxx xxx0b
USB_DMAE6hUSB_DMA_ALとUSB_DMA_AHで16ビットSFRxxxxh
UHUB1_CTRLE5hUSBホストHUB1ポート制御レジスタ1100 x000b
UHUB0_CTRLE4hUSBホストHUB0ポート制御レジスタ0100 x000b
UDEV_CTRLE4hUSBデバイスポート制御レジスタ0100 x000b
USB_DEV_ADE3hUSBデバイスアドレスレジスタ0000 0000b
USB_CTRLE2hUSB制御レジスタ0000 0110b
USB_INT_ENE1hUSB割り込みイネーブルレジスタ0000 0000b
UEP4_T_LENDFhエンドポイント4送信サイズレジスタ0xxx xxxxb
UEP4_CTRLDEhエンドポイント4制御レジスタ0000 0000b
UEP0_T_LENDDhエンドポイント0送信サイズレジスタ0xxx xxxxb
UEP0_CTRLDChエンドポイント0制御レジスタ0000 0000b
USB_HUB_STDBhSBホストHUBポートステータスレジスタ(読み取り専用)0000 0000b
USB_MIS_STDAhSB関連ステータスレジスタ(読み取り専用)xx10 1000b
USB_INT_STD9hUSB割り込みステータスレジスタ(読み取り専用)00xx xxxxb
USB_INT_FGD8hUSB割り込みフラグレジスタ0010 0000b
UEP3_T_LEND7hエンドポイント3送信サイズレジスタ0xxx xxxxb
UH_TX_LEND7hUSBホスト送信サイズレジスタ0xxx xxxxb
UEP3_CTRLD6hエンドポイント3制御レジスタ0000 0000b
UH_TX_CTRLD6hUSBホストエンドポイント送信制御レジスタ0000 0000b
UEP2_T_LEND5hエンドポイント2送信サイズレジスタ0000 0000b
UH_EP_PIDD5hUSBホストトークン設定レジスタ0000 0000b
UEP2_CTRLD4hエンドポイント2制御レジスタ0000 0000b
UH_RX_CTRLD4hUSBホスト受信エンドポイント制御レジスタ0000 0000b
UEP1_T_LEND3hエンドポイント1送信サイズレジスタ0xxx xxxxb
UEP1_CTRLD2hエンドポイント1制御レジスタ0000 0000b
UH_SETUPD2hUSBホスト補助設定レジスタ0000 0000b
USB_RX_LEND1hUSB受信サイズレジスタ(読み取り専用)0xxx xxxxb
USB xSFRレジスタUEP4_1_MOD2446hエンドポイント1, 4モード制御レジスタ0000 0000b
UEP2_3_MOD2447hエンドポイント2, 3モード制御レジスタ0000 0000b
UH_EP_MOD2447hUSBホストエンドポイントモード制御レジスタ0000 0000b
UEP0_DMA_H2448hエンドポイント0, 4バッファ開始アドレス上位バイト000x xxxxb
UEP0_DMA_L2449hエンドポイント0, 4バッファ開始アドレス下位バイトxxxx xxx0b
UEP0_DMA2448hUEP0_DMA_LとUEP0_DMA_Hで16ビットSFRxxxxh
UEP1_DMA_H244Ahエンドポイント1バッファ開始アドレス上位バイト000x xxxxb
UEP1_DMA_L244Bhエンドポイント1バッファ開始アドレス下位バイトxxxx xxx0b
UEP1_DMA244AhUEP1_DMA_LとUEP1_DMA_Hで16ビットSFRxxxxh
UEP2_DMA_H244Chエンドポイント2バッファ開始アドレス上位バイト000x xxxxb
UEP2_DMA_L244Dhエンドポイント2バッファ開始アドレス下位バイトxxxx xxx0b
UEP2_DMA244ChUEP2_DMA_LとUEP2_DMA_Hで16ビットSFRxxxxh
UH_RX_DMA_H244ChUSBホスト受信開始アドレス上位バイト000x xxxxb
UH_RX_DMA_L244DhUSBホスト受信開始アドレス下位バイトxxxx xxx0b
UH_RX_DMA244ChUH_RX_DMA_LとUH_RX_DMA_Hで16ビットSFRxxxxh
UEP3_DMA_H244Ehエンドポイント3バッファ開始アドレス上位バイト000x xxxxb
UEP3_DMA_L244Fhエンドポイント3バッファ開始アドレス下位バイトxxxx xxx0b
UEP3_DMA244EhUEP3_DMA_LとUEP3_DMA_Hで16ビットSFRxxxxh
UH_TX_DMA_H244EhUSBホスト送信バッファ開始アドレス上位バイト000x xxxxb
UH_TX_DMA_L244FhUSBホスト送信バッファ開始アドレス下位バイトxxxx xxx0b
UH_TX_DMA244EhUH_TX_DMA_LとUH_TX_DMA_Hで16ビットSFRxxxxh
pU*254*hbXIR_XSFRを1に設定した後、この名前を使って上記のxSFRをpdata型でアドレス指定することで、xdata型でアドレス指定するよりも高速になります。
LEDコントロールカードxSFRレジスタLED_STAT2880hLEDステータスレジスタ010x 0000b
LED_CTRL2881hLED制御レジスタ0000 0010b
LED_FIFO_CN2882hFIFOカウントステータスレジスタ(読み取り専用)0000 0000b
LED_DATA2882hLEDデータレジスタ(書き込み専用)xxxx xxxxb
LED_CK_SE2883hLEDクロック分周器設定レジスタ0001 0000b
LED_DMA_AH2884hDMAカレントバッファアドレス上位バイト000x xxxxb
LED_DMA_AL2885hDMAカレントバッファアドレス下位バイトxxxx xxx0b
LED_DMA2884hLED_DMA_ALとLED_DMA_AHで16ビットSFRxxxxh
LED_DMA_CN2886hLED DMA残量レジスタxxxx xxxxb
LED_DMA_XH2888hDMAカレント補助バッファアドレス上位バイト000x xxxxb
LED_DMA_XL2889hDMAカレント補助バッファアドレス下位バイトxxxx xxx0b
LED_DMA_X2888hLED_DMA_XLとLED_DMA_XHで16ビットSFRxxxxh
pLED_*298*hbXIR_XSFRを1に設定した後、この名前を使って上記のxSFRをpdata型でアドレス指定することで、xdata型でアドレス指定するよりも高速になります。

5.3 汎用8051レジスタ

表 5.3.1 汎用8051レジスタ一覧

名前アドレス概要リセット値
BF0hBレジスタ00h
A, ACCE0hアキュムレータ00h
PSWD0hプログラムステータスレジスタ 00h
GLOBAL_CFGB1hグローバルコンフィグレーションレジスタ(ブートローダ状態) E0h
グローバルコンフィグレーションレジスタ(アプリケーション状態)C0h
CHIP_IDA1hチップID(読み取り専用)59h
SAFE_MODA1hセーフモード制御レジスタ(書き込み専用)00h
PCON87h電源制御レジスタ(パワーオンリセット状態)10h
DPH83hデータアドレスポインタ上位8ビット00h
DPL82hデータアドレスポインタ下位8ビット00h
DPTR82hDPLとDPHは16ビットSFR0000h
SP81hスタックポインタ07h

Bレジスタ (B):

ビット名前アクセス概要リセット値
[7:0]BRW算術演算レジスタ。主に掛け算や割り算に使われます。ビット単位でのアクセス可能00h

Aアキュムレータ(A, ACC):

ビット名前アドレス概要リセット値
[7:0]A/ACCRW算術アキュムレータ。ビット単位でのアクセス可能00h

プログラム状態レジスタ(PSW):

ビット名前アドレス概要リセット値
7CYRW

キャリーフラグ: 算術演算や論理演算を行う際に、最上位ビットのキャリーまたは借用を記録するために使用します。

8ビット加算時には最上位ビットがセットされ、それ以外の場合はクリアされます。

8ビット減算時に借用の場合はビットがセットされ、それ以外の場合はクリアされます。

ロジック命令は、ビットをビットにしたり、クリアにしたりすることができます。

0
6ACRW補助キャリーフラグ: 記録・減算時、下位4ビットに上位4ビットからのキャリーまたは借用があり、ACがセットされ、それ以外の場合はクリアされる。0
5F0RWユニバーサルフラグビットでビット単位でのアクセス可能。0: ユーザーが自分で定義することができ、ソフトウェアによってクリアまたは設定することができます0
4RS1RWレジスタバンク選択(HIGHで選択)0
3RS0RWレジスタバンク選択(LOWで選択)0
2OVRWオーバーフローフラグ: 足し算・引き算時に演算結果が8桁の2進数を超えた場合に、OVは1に設定されます。そうでなければクリアして00
1F1RWユニバーサルフラグでビット単位でのアクセス可能。1: ユーザーが自分で定義することができ、ソフトウェアによってクリアまたは設定することができます0
0PR0パリティフラグ: 命令実行後、アキュムレータAに1のパリティを記録する。P1は奇数のとき1でPは偶数のとき10

プロセッサの状態はステータスレジスタPSWに格納され、PSWはビット単位のアクセスをサポートしています。ステータスワードにはキャリーフラグが含まれています。BCDコード処理のための補助キャリーフラグ。パリティフラグを指定します。オーバーフローフラグを指定します。そしてRS0, RS1を使用してワーキングレジスタのバンク選択を行います。ワーキングレジスタセットが配置されている領域は、直接または間接的にアクセスすることができます。

表 5.3.2 RS1とRS0のワーキングレジスタグループ選択テーブル

RS1RS0ワーキングレジスタセット
00グループ0 (00h-07h)
01グループ1 (08h-0Fh)
10グループ2 (10h-17h)
11グループ3 (18h-1Fh)

表 5.3.3 フラグビットに影響を与える操作(Xはフラグビットが操作結果に関係していることを示す)

オペレーションCYOVAC
ADDXXX
ADDCXXX
SUBBXXX
MUL0X
DIV0X
DA AX
RRC AX
RLC AX
CJNEX
SETB C1
CLR C0
CPL CX
MOV C, bitX
ANL C, bitX
ANL C,/bitX
ORL C, bitX
ORL C,/bitX

データアドレスポインタ(DPTR):

ビット名前アドレス概要リセット値
[7:0]DPLRWデータポインタ下位バイト00h
[7:0]DPHRWデータポインタ上位バイト00h

DPLとDPHはxSFR, xBUS, xRAMデータメモリまたはプログラムメモリにアクセスするための16ビットデータポインターDPTRを形成します。実際のDPTRは、DPTR0及びDPTR1の物理的な16ビットデータポインタに対応する、XBUS_AUX内のDPSによって動的に選択されます。

スタックポインタ(SP):

ビット名前アドレス概要リセット値
[7:0]SPRWスタックポインタ。主にプログラムの呼び出しや割り込み呼び出し、スタックへのデータの入出力に使用されます。07h

スタック固有の機能: エンドポイントを保護し、サイトを保護し、先入れ先出し順に管理します。スタックが追加されると、SPポインタが自動的に1インクリメントされ、データまたはブレークポイント情報が保存されます。スタックを取得する、SPポインタはデータユニットを指し、SPポインタは自動的に1だけデクリメントされます。リセット後のSPの初期値は07hで、対応するデフォルトのスタック保存は08hから始まります。

5.4 特殊レジスタ

グローバル構成レジスタ(GLOBAL_CFG)、セーフモードでのみ書き込み可能。

ビット名前アドレス概要リセット値
[7:6]ReservedRO11に固定11b
5bBOOT_LOADRO

ブートローダステータスビットは、ISPブートローダの状態とアプリケーションの状態を区別するために使用します。 電源投入時に設定され、ソフトウェアがリセットされると 0 にクリアされます。

ISPブートローダを搭載したチップの場合、本ビットが1の場合、ソフトウェアがリセットされていないことを示します。通常は、電源投入後に実行されたISPブートローダの状態です。このビットは0で、ソフトウェアがリセットされたことを示します。通常はアプリケーション状態

1
4bSW_RESETRWソフトウェアリセット制御ビット: 1に設定するとソフトウェアリセットが行われます。ハードウェアオートゼロ0
3bCODE_WERWフラッシュROM書き込みイネーブルビット。このビットは書き込み禁止の場合は0です。フラッシュROM書き込みや消去可能な場合は10
2bDATA_WERWフラッシュROMのデータフラッシュ領域書き込みイネーブルビットです。このビットは書き込み禁止の場合は0です。データフラッシュ領域の書き込みや消去可能な場合は10
1bXIR_XSFRRW

MOVX_@R0/R1命令アクセス範囲制御ビット:

本ビットは0で全てのxdata領域xRAM/xBUS/xSFRへのアクセスを許可します。

本ビットは1でxSFRへのアクセスを許可します、xRAM/xBUSへのアクセスはできません。

0
0bWDOG_ENRWウォッチドッグリセットイネーブルビット: 本ビットは0でウォッチドッグはタイマーとしてしか使われていません。このビットは1で、タイマーがオーバーフローしたときにウォッチドッグリセットを許可します。0

チップID(CHIP_ID):

ビット名前アドレス概要リセット値
[7:0]CHIP_IDRO識別チップ固定値59h59h

セーフモード制御レジスタ(SAFE_MOD):

ビット名前アドレス概要リセット値
[7:0]SAFE_MODWOセーフモードに入るか終了するために使用します。00h

SFR の中には、セーフモードでしかデータを書き込めず、非セキュアモードでは常に読み取り専用となるものがあります。セーフモードに入るための手順:

  1. 55hをレジスタに書き込む。
  2. そして、レジスタにAAhを書き込みます。
  3. その後、約13~23回のシステム主周波数サイクルがセーフモードとなり、有効期間中に1つ以上のセキュリティクラスSFRまたは通常SFRを書き換えることができる。
  4. 上記の有効期間後に自動的にセーフモードを終了させます。
  5. または、このレジスタに任意の値を書き込むことで、セーフモードを早期に終了させることができます。