### 4-5　シリアルインターフェイス

ビジュアルメモリ用カスタムチップは、2チャネルの同期式シリアルインターフェイスを内蔵しています。これは、データ長8ビットの同期式シリアルインターフェイスで、ポート1を使用しています。これにより、ビジュアルメモリ同士を接続した通信が可能になります。なお、Dreamcast接続時には、自動的にDreamcast専用インターフェイスによる通信となります。

シリアル通信を確実に処理するための注意やテクニックについては「付録編」の「第21章　シリアル通信での注意事項」を参照してください。

Dreamcast専用インターフェイス（Mapleバスモード）もポート1を使用しますので、同期式シリアル通信との排他使用になります。 同期式シリアルインターフェイスを使用する場合は、アプリケーションにてDreamcast専用インターフェイスの使用を禁止にしてください。

シリアルインターフェイスのおもな機能は、次のとおりです。

- 2チャネル同期式シリアルインターフェイス
- 転送クロック選択機能
- シリアルインターフェイスSIO0の転送クロック極性切り換え機能
- LSB/MSB先頭切り換え機能
- 動作モード切り換え機能
- オーバーラン検出機能
- 転送ビット長制御機能

####

4-5-1　機能

##### ■2チャネル同期式シリアルインターフェイス

シリアルインターフェイスは2系統用意され、P10〜12を入出力端子とするSIO0系、P13〜15を入出力端子とするSIO1系があります。

通常ビジュアルメモリでは、SIO0をマスター、SIO1をスレーブとして使用します。

##### ■転送クロック選択機能

次に示す3種類の中から選択できます。また、SIO0系のみ転送クロックの極性を選択できます。

- 内部クロック
- 外部クロック
- ソフトウェアクロック

##### ■シリアルインターフェイスSIO0の転送クロック極性切り換え機能

シリアルインターフェイスSIO0の転送クロックSCK0の極性を切り換えることができます。

1. 動作停止時、SCK0＝‘1’；データ出力保持
2. 動作停止時、SCK0＝‘0’；データ出力はSBUF0のビット0

##### ■LSB/MSB先頭切り換え機能

シリアルインターフェイスのデータ通信で、LBSから転送するか、MSBから転送するかを切り替えることができます。

この切り替えは、チャネルごとに設定できます。

##### ■オーバーラン検出機能

8ビットを超えるクロックを受けた場合にエラーが発生します。

##### ■転送ビット長制御機能

8ビット転送で動作を停止するか、8ビット転送後も転送を継続するかを選択します。

##### ■割り込みの発生

割り込み要求許可ビットがセットされている場合、8進カウンタのオーバーフローによってSIO0，SIO1割り込み要求が発生します。

シリアルインターフェイスを制御するには、次に示す特殊機能レジスタを操作する必要があります。

SCON0，SCON1，SBR，SBUF0，SBUF1，P1，P1DDR，P1FCR

シリアルインターフェイスで通信を行なう場合は、下記の点に注意してください。

1. ビジュアルメモリ同士が接続されていない状態で、シリアル通信の関する設定を行わないでください。また、通信が終了した場合は必ず（3）の設定を行なってください。
   シリアル通信の設定を行う場合は、ポート7の状態をチェックし、他のビジュアルメモリが接続されていることを確認してから行ってください。
2. ビジュアルメモリ同士の接続が確認できた後、シリアル通信に関する設定を行なってください。
   ビジュアルメモリ同士が接続されたかどうかは、ポート7で確認できます。

| P70 | P72 | P73
ビジュアルメモリと接続した場合 | L | L | H
ビジュアルメモリと未接続の場合 | L | L | L

1. 通信を終了する場合や、ビジュアルメモリ同士が未接続の場合は、以下の設定を行なってください。
   SCON0＝00H
   SCON1＝00H
   P1FCR＝0BFH
   P1DDR＝0A4H
   ビジュアルメモリ同士が接続されていない状態で、シリアル通信の設定を行なうと正常に動作しない場合があります。

####

4-5-2　回路構成

シリアルインターフェイスは、図53と図54のように構成されています。

##### ■シフトレジスタ　……　(1)

8ビットのシフトレジスタ（SBUF0，1）で構成され、指定されたクロックで動作します。

##### ■8進カウンタ　……　(2)

シフトクロックをカウントし、転送終了を検出します。

##### ■ボーレートジェネレータ　……　(3)

データ設定用の8ビットレジスタ（SBR）と8ビットリロードカウンタで構成されています。転送クロックに「内部クロック」を選択すると、ここで作成されたクロックでデータ転送が行われます。このボーレートジェネレータは、SIO0系、SIO1系の両方で使用されます。

「内部クロック」につていは「4.5.6　シリアル転送クロック」を参照してください。

##### ■極性切り換え回路

シリアル転送前後の転送クロックの極性を制御します。

▽ シリアルインターフェイス（SIO0）ブロック図(図53)

▽ シリアルインターフェイス（SIO1）ブロック図(図54)

####

4-5-3　関連レジスタ

#### SIO0制御レジスタ（SCON0）

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
SCON0 | 130H | R/W | SCON07 | SCON06 | − | SCON04 | SCON03 | SCON02 | SCON01 | SCON00
リセット時 | 0 | 0 | H | 0 | 0 | 0 | 0 | 0

ビット名 | 機能
SC0N07（ビット7） | 極性制御
0：動作停止時，SCK0='1'データ出力保持 1：動作停止時，SCK0='0'データ出力はSBUF0 のビット0
SC0N06（ビット6） | オーバーランフラグ
0：オーバーランフラグなし 1：オーバーランフラグあり
SC0N04（ビット4） | 転送ビット長制御
0：8ビット転送 1：連続転送
SC0N03（ビット3） | 転送制御
0：転送停止 1：転送開始
SC0N02（ビット2） | LSB/MSB先頭選択
0：LSB先頭 1：MSB先頭
SC0N01（ビット1） | シリアル転送終了フラグ
0：転送中 1：転送終了
SC0N00（ビット0） | 割り込み要求許可
0：割り込み要求禁止 1：割り込み要求許可

##### ■SCON07（ビット7）：SCK0 極性制御

SIO0で使用される転送クロックSCK0の極性を制御します。

‘1’をセットすると、SIO0の動作が停止したときにSCK0は‘0’になり、出力にはSBUF0のビット0が出力されます。

‘0’にリセットすると、SIO0の動作が停止したときにSCK0は‘1’になり、出力には転送された最後のデータが保持されます。

##### ■SCON06（ビット6）：オーバーランフラグ

SIO0のシリアル転送のエラーを検出します。

8ビットのデータ転送が終了した（SCON01が‘1’になった）あとで転送クロックを受けた（立ち下がりを検出した）場合にセットされます。

また、連続転送を実行する場合は、8ビットごとにオーバーランフラグがセットされます。

このフラグは自動的にリセットされません。アプリケーション側でリセットしてください。

##### ■SCON04（ビット4）：転送ビット長制御

SIO0の転送データのビット長を、8ビットの連続または8ビットに切り替えます。

連続（1）/8ビット（0）を選択します。

‘1’をセットすると、2バイト以上のデータを8ビット単位で連続して転送することができます。

‘0’にリセットすると、8ビットのデータを転送（1バイトだけ）することができます。

データ転送が終了しても、このフラグはリセットされません。アプリケーション側でリセットしてください。

##### ■SCON03（ビット3）：SIO0動作制御

SIO0の転送を開始または中止します。

‘1’をセットすると、SIO0の8ビットのシリアル転送を開始します。8ビット分の転送を終えるとフラグがリセットされます。

‘0’にリセットすると、SIO0の転送動作を中止します。

##### ■SCON02（ビット2）：LSB/MSB先頭選択

転送時のデータの先頭を、MSBからにするかLSBからにするかを選択します。

‘1’をセットすると、MSBから転送を開始します。

‘0’にリセットすると、LSBから転送されます。

このフラグは、送受信に共通です。送信と受信でMSB先頭かLSB先頭かを合わせる必要がありますので注意してください。

##### ■SCON01（ビット1）：SIO0転送終了フラグ

シリアル転送の終了を検出します。

8ビットぶんのシリアル転送が終了するとセットされます。

また、このフラグがセットされているときに、転送クロックの立ち下がりが検出されると、オーバーランフラグがセットされます。

このフラグは自動的にリセットされません。アプリケーション側でリセットしてください。

##### ■SCON00（ビット0）：SIO0割り込み要求許可制御

SIO0の転送終了による割り込み要求を許可または禁止します。

‘1’をセットすると、SIO0の転送終了によって割り込みベクトル0033HがCALLされます。

‘0’にリセットすると、割り込み要求は発生しません。

転送終了フラグは、転送ビット長制御の設定に関わらず、8ビット（1バイト）転送終了時に‘1’になります。 なお、オーバーランフラグは、オーバーランを検知した場合にセットされるだけで、割り込みなどは発生しません。

#### SIO1制御レジスタ（SCON1）

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
SCON1 | 134H | R/W | − | SCON16 | − | SCON14 | SCON13 | SCON12 | SCON11 | SCON10
リセット時 | H | 0 | H | 0 | 0 | 0 | 0 | 0

ビット名 | 機能
SC0N16（ビット6） | オーバーランフラグ
0：オーバーランなし 1：オーバーランあり
SC0N14（ビット4） | 転送ビット長制御
0：8ビット転送 1：連続転送
SC0N13（ビット3） | 転送制御
0：転送停止 1：転送開始
SC0N12（ビット2） | LSB/MSB先頭選択
0：LSB先頭 1：MSB先頭
SC0N11（ビット1） | シリアル転送終了フラグ
0：転送中 1：転送終了
SC0N10（ビット0） | 割り込み要求許可
0：割り込み要求禁止 1：割り込み要求許可

##### ■SCON16（ビット6）：オーバーランフラグ

SIO1のシリアル転送のエラーを検出します。

8ビットのデータ転送が終了した（SCON11が‘1’になった）あとに転送クロックを受けた（立ち下がりを検出した）場合にセットされます。

連続転送中は、8ビット転送するごとにオーバーランフラグがセットされます。

このフラグは自動的にリセットされません。アプリケーション側でリセットする必要があります。

##### ■SCON14（ビット4）：転送ビット長制御

SIO1の転送データのビット長を、8ビットデータ連続転送か、8ビットのみの転送かを選択します。

‘1’をセットすると、2バイト以上のデータを8ビット単位で連続して転送することができます。

‘0’にリセットすると、8ビットぶんのデータを転送することができます。この場合、8ビットの転送が終了すると転送終了フラグ（SCON11）がセットされます。

データ転送が終了してもこのフラグはリセットされません。アプリケーション側でリセットしてください。

##### ■SCON13（ビット3）：SIO1動作制御

SIO1の転送を開始または中止します。

‘1’をセットすると、SIO1の8ビットのシリアル転送を開始します。転送が終了するとフラグは自動的にリセットされます。

‘0’にリセットすると、SIO1の動作を中止します。

##### ■SCON12（ビット2）：LSB/MSB先頭選択

転送時のデータの先頭を、MSBにするかLSBにするかを選択します。

‘1’をセットすると、MSBが先頭になります。

‘0’にリセットすると、LSBが先頭になります。

このフラグは、送受信に共通です。送信と受信でMSB先頭かLSB先頭かを合わせる必要がありますので注意してください。

##### ■SCON11（ビット1）：SIO1転送終了フラグ

シリアル転送の終了を検出します。

8ビットのシリアル転送が終了するとセットされます。

‘1’にセットされてかつ、転送クロックの立ち下がりが検出されると、オーバーランフラグがセットされます。

このフラグは自動的にリセットされません。アプリケーション側でリセットしてください。

##### ■SCON10（ビット0）：SIO1割り込み要求許可制御

SIO1の転送終了による割り込み要求を許可または禁止します。

‘1’をセットすると、SIO1の転送終了によって割り込みベクトル003BHがCALLされます。

‘0’にリセットすると、割り込み要求は発生しません。

転送終了フラグは、転送ビット長制御の設定に関わらず、8ビット（1バイト）転送終了時に‘1’になります。 なお、オーバーランフラグは、オーバーランを検知した場合にセットされるだけで、割り込みなどは発生しません。

#### ボーレートジェネレータレジスタ（SBR）

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
SBR | 132H | R/W | SBR7 | SBR6 | SBR5 | SBR4 | SBR3 | SBR2 | SBR1 | SBR0
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

転送クロックに内部クロックを使用する場合、その転送レートを設定します。この値は、SIO0，SIO1の両方に共通です。転送レートTSBRは、次に示す式で得られます。

▽ SIO0，SIO1の転送レート(図55)

#### シリアルバッファ0（SBUF0）

SIO0から転送するデータ（8ビットぶん）を格納します。

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
SBUF0 | 131H | R/W | SBUF07 | SBUF06 | SBUF05 | SBUF04 | SBUF03 | SBUF02 | SBUF01 | SBUF00
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

#### シリアルバッファ1（SBUF1）

SIO1から転送するデータ（8ビットぶん）を格納します。

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
SBUF1 | 135H | R/W | SBUF17 | SBUF16 | SBUF15 | SBUF14 | SBUF13 | SBUF12 | SBUF11 | SBUF10
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

#### Dreamcast専用インターフェイス回路

ポート1は、前述の同期シリアルインターフェイスに加え、Dreamcast専用インターフェイスの入出力ポートとしても使用されます。Dreamcast専用インターフェイスと同期式シリアルインターフェイスは同時に使用できません。

####

4-5-4　シリアルインターフェイスの動作

シリアルインターフェイスは、通信制御ビット（SCON03，SCON13）または転送ビット長選択ビット（SCON04，SCON14）をセットすることでシリアル転送が開始されます。転送モードには、Mapleバスモードとノーマルモードがあり、アプリケーションからはノーマルモードのみ利用できます。

##### ■ノーマルモード

データ通信に2本のデータラインと1本のクロックラインを使用します。データラインに入力専用のSIと出力専用のSOを用います。このモードは一般的な転送方法で、特定の相手に対しての通信に適しています。

ビジュアルメモリ同士で通信する場合は、ノーマルモードを利用してください。

▽ ビジュアルメモリ同士の接続(図56)

転送モードは、ポート1に関する特殊機能レジスタを操作することで指定できます。SIO0系，SIO1系、それぞれ独立して設定できます。

##### ■シリアル転送のタイミング

シフトレジスタは、シリアルクロックSCK0，SCK1の立ち下がりに同期してシフトし、シフトレジスタのデータはSO0，SO1端子から出力されます。また、シリアルクロックの立ち上がりでSI0，SI1端子に入力されたデータがシフトレジスタに取り込まれます。

####

4-5-5　動作モードの設定

##### ■ノーマルモード

出力端子、または内部クロック使用の転送クロックに対応するポートラッチデータをリセットする必要があります。ノーマルモードで使用する端子は、次のとおりです。

▽ノーマルモードで使用する端子(表9)

| SIO0系 | SIO1系
入力端子 | P11/SI0/SB0 | P14/SI1/SB1
出力端子 | P10/SO0（P11/SI0/SB0） | P13/SO1（P14/SI1/SB1）
転送クロック | P12/SCK0 | P15/SCK1

転送を開始する1Tcyc前にはSCKnを‘1’にセットします。1Tcyc未満では正しいデータが出力されません。

▽SIO0系におけるポート1の設定（特殊機能レジスタ）(表10)

端子 | 機能 | 特殊機能レジスタ値
P11/SI0/SB0P10/SO0 | 受信送信 | P11DDRP10P10DDRP10FCR | ＝0＝0＝1＝1
P11/SI0/SB0P10/SO0 | 受信汎用入出力 | P11DDRP10FCR | ＝0＝0
P12/SCK0 | 内部クロック | P12P12DDRP12FCR | ＝0＝1＝1

- ソフトクロックは，プログラムでポート（P12）に’0’と’1’を交互に書き込み，その出力を転送クロックとします。

ソフトウェアクロックは、プログラムでポート（P12）に‘0’と‘1’を交互に書き込み、その出力を転送クロックとします。

▽SIO1系におけるポート1の設定（特殊機能レジスタ）(表11)

端子 | 機能 | 特殊機能レジスタ値
P14/SI11/SB1P13/SO1 | 受信汎用入出力 | P14DDRP13FCR | ＝0＝0

ソフトウェアクロックは、プログラムでポート（P15）に‘0’と‘1’を交互に書き込み、その出力を転送クロックとします。

▽ ノーマルモードの信号経路（SIO1系の例）(図57)

Pnを「出力」にする場合、PnDDRより先にPnFCRを‘1’にセットしてください。PnDDRを先に設定すると、PnDDR設定時にPnに‘0’が出力される場合があります。SIO0，SIO1共通です。

####

4-5-6　シリアル転送クロック

シリアル転送クロック（シフトクロック）は、SIO0系ではP12/SCK0端子、SIO1系ではP15/SCK1端子を使用します。応用回路の仕様によって、SIO0系、SIO1系のそれぞれについてシリアル転送クロックを、次の3種類から選択できます。また、SIO0系のみ転送クロックの極性を切り換えることができます。

- 内部クロック
- 外部クロック
- ソフトウェアクロック

#### 内部クロック

通常は内部クロックを利用し、シリアル通信を行ないます。

ビジュアルメモリ専用カスタムチップに内蔵しているシリアル転送専用のボーレートジェネレータ（SBR）で転送クロックを作成します。このクロックは、SIO0系，SIO1系の双方に共用されます。

シリアルインターフェイスを内部クロックで動作させる場合は、ボーレートジェネレータを動作させる必要があります。この場合、内部クロックで動作しているシリアルインターフェイスのクロック端子（P12/SCK0，P15/SCK1）からシリアル転送クロックが出力されます。

転送レートとボーレートジェネレータの設定値の関係は、次のとおりです。なお、設定値は、10進数です。

TSBR＝（256−［SBR設定値］）×2×Tcyc　（Tcycはサイクルクロックの周期）

▽ ボーレートジェネレータの構成図(図58)

Pnを「出力」にする場合、PnDDRより先にPnFCRを‘1’にセットしてください。PnDDRを先に設定すると、PnDDR設定時にPnに‘0’が出力される場合があります。SIO0，SIO1共通です。

#### 外部クロック

ビジュアルメモリ専用カスタムチップの外部から入力されるクロックでシリアル転送を行います。

#### ソフトウェアクロック

ポートP12/SCK0、P15/SCK1端子にプログラムで‘1’，‘0’を交互に出力し、シリアル転送のクロックとします。

▽ クロック作成例(図59)

これらの転送クロックを使う場合、あらかじめP12/SCK0，P15/SCK1端子の設定が必要になります。

▽ 転送クロックの設定(表12)

端子 | 機能 | 特殊機能レジスタ値
P12/SCK0 | 内部クロック | P12=0 P12DDR=1 P12FCR=1
外部クロック | P12DDR=0
ソフトウェアクロック | P12=0/1 P12DDR=1 P12FCR=0
P15/SCK1 | 内部クロック | P15=0 P15DDR=1 P15FCR=1
外部クロック | P15DDR=0
ソフトウェアクロック | P15=0/1 P15DDR=1 P15FCR=0

- シリアルデータ、シリアルクロックのパルス幅には、1/2サイクルタイム以上が必要です。
  水晶発振の使用時や外部クロック使用時は、特に注意が必要です。たとえば、32.768kHz水晶発振子を使用する場合は、サイクルクロックの周期が366μsになるので、183μs以上のパルス幅が必要です。
- シリアルクロックをポート1から出力する場合、ポート1レジスタは、次の手順で設定してください。設定の順序が異なりますと誤動作の原因になりますので注意してください。
  1. P1FCRの設定
  2. P1DDRの設定
  3. SCONnの設定（転送制御ビットの設定）

####

4-5-7　シリアル転送のタイミング

シリアル転送において、SIO0（SCON07＝0のとき），SIO1系では、動作する前後に転送クロックSCK0は‘H’レベルを出力します（SCK0＝1）。また、出力端子には最後に転送されたデータが保持されます（図60参照）。

一方、SCON07＝1のときのSIO0系において、動作する前後に転送クロックSCK0は‘L’レベルを出力します（SCK0＝0）。また、出力端子にはシリアルバッファ0（SBUF0）のビット0（SBUF00）が出力、保持されます（図61参照）。なお、SIO1系では、極性を切り換えはできません。

##### ■SIO0系

SCON07＝0 | 動作停止時，SCK0＝’1’， データ出力保持
SCON07＝1 | 動作停止時，SCK0＝’0’， データ出力はSBUF0のビット0

##### ■SIO1系

動作停止時，SCK1＝’1’， データ出力保持

▽ 転送クロックと出力データ（1）(図60)

▽ 転送クロックと出力データ（2）(図61)

####

4-5-8　LSB/MSB先頭切り換え機能

シリアル転送バッファの読み出し/書き込み時に、LSB→MSBの順にするか、MSB→LSBの順にするかを切り替えられます。

ビジュアルメモリでは、どちらを推奨するかは特に定めていません。 一般のコンピュータに採用されているRS-232C規格では、LSB→MSBの順に転送しています。

この機能を使って、シリアルデータをLSB先頭にするか、MSB先頭にするかを切り換えることができます。この切り換えは、シリアル転送制御レジスタ（SCON0，SCON1）で行います。

LSB/MSB先頭切り替えは、必ず転送を開始する前に行なってください。転送開始後に変更した場合は、以前の設定で転送されます。

▽ LSB先頭指定のシリアル転送バッファと内部バスの対応(図62)

▽ MSB先頭指定のシリアル転送バッファと内部バスの対応(図63)

図64と図65に、SIO0を使用したときのLSB先頭とMSB先頭のシリアル送受信のタイミングを示します。

▽ LSB先頭指定のシリアル転送バッファと内部バスの対応(図64)

▽ MSB先頭指定のシリアル転送バッファと内部バスの対応(図65)

####

4-5-9　オーバーラン検出機能

オーバーラン検出機能は、シリアル通信エラーを検出する機能です。

割り込み要因フラグ（SCON01，SCON11）がセットされている場合、転送クロックの立ち下がりでオーバーランフラグ（SCON06、SCON16）がセットされます。

正常通信時のタイミングとオーバーラン発生時のタイミングは、図66のとおりです。8ビット目のデータの転送クロックの立ち上がりで、割り込み要因フラグ（SCON01，SCON11）はセットされます。この状態で転送クロックの立ち下がりが検出されるとオーバーラン検出フラグがセットされます。

なお、オーバーランフラグは、オーバーランを検知した場合にセットされるだけで、割り込みなどは発生しません。

- オーバーランフラグの確認は、割り込み要因フラグが‘1’にセットされてから1/2転送クロック以上経過してから行なってください。
- 8ビットを超える転送モード（連続転送モード）に設定されている場合も、8ビット転送と同じタイミングでオーバーラン検出機能が働きます。

▽ LSB先頭指定のシリアル転送バッファと内部バスの対応(図66)

####

4-5-10　転送ビット長制御機能

8ビットを超えるシリアルデータを転送する場合、転送ビット長制御ビットSCON04またはSCON14をセットすることで、連続転送が可能です。

- SCON04，SCON14をセットすると、シリアル転送が開始されます。8ビットぶんの転送が終えても、このビットはリセットされません。
- 割り込み要因フラグは、8ビット転送と同じタイミング（8ビット転送終了時）でセットされます。
- オーバーラン検出ビットSCON06，SCON16は、8ビット転送を超えたとき点のシリアルクロックの立ち下がりでセットされます。タイミングは「4.5.9　オーバーラン検出機能」を参照してください。
- 転送ビット長を8ビットに設定した場合、転送制御ビットSCON03，SCON13をセットすると転送を開始します。8ビットぶんの転送が終了すると、転送制御ビットはリセットされます。これにより、割り込み要因フラグ（SCON01，SCON11）がセットされます。また、シリアル転送は自動的に停止します。
- 転送ビット長を「連続転送」に設定した場合、転送ビット長制御ビットSCON04，SCON14をセットすると転送を開始します。このビットをリセットするまで転送が続けられます。割り込み要因フラグは、8ビット転送後にセットされます。

####

4-5-11　プログラム例

#### SIO0シリアル転送 (1) （送信例）

##### ■転送条件

- 8ビット転送
- 転送データ：038H（8ビット）
- MSB先頭
- 立ち下がり出力
- ノーマルモード
- 内部クロック
- ボーレート：25.6ms
- システムクロック：32.768KHz水晶発振

ボーレートの計算式から、TSBR＝（256−［SBR］）×2×Tcyc

∴［SBR］＝256-TSBR/（2×Tcyc）

ここでTSBR＝25.6msであり、Tcyc＝366μsであるので、ボーレートジェネレータレジスタ（SBR）の設定値は次のようになります。

［SBR］＝256-25600/（2×366）

＝約221（10進）

→0DDH（16進）

▽ シリアル転送(1)のタイミング(図67)

▽ シリアル転送（送信側）のプログラム例(図68)

#### SIO1シリアル転送 (2) （受信例）

##### ■転送条件

- 16ビット転送
- LSB先頭
- 外部クロック
- SO1からはSB1と同じ出力データを出力する。
- 読み込んだデータの上位8ビットをRAMの＃031H番地に、下位8ビットを＃030H番地に格納する。

▽ シリアル転送(2)のタイミング(図69)

▽ シリアル転送（受信側）のプログラム例(図70)

- この例において、SELF0の次の命令の実行からSELF1の命令実行までの間に転送クロックの立ち上がり（B）があると、誤動作を生じます。転送レートは、サイクルクロックの周期に対して十分に長くとってください。
- 転送を開始する1Tcyc前にはSCKnを‘1’にします。1Tcyc未満では正しいデータが出力されません。
- Pnを「出力」にする場合、PnDDRより先にPnFCRを‘1’にセットしてください。PnDDRを先に設定すると、PnDDR設定時にPnに‘0’が出力される場合があります。SIO0，SIO1共通です。

[←] | [INDEX] | [→]