### 4-4　ベースタイマー

ビジュアルメモリ用カスタムチップが内蔵しているベースタイマーは、次に示す4つの機能を持った、14ビットのバイナリアップカウンタです。

ビジュアルメモリの時計機能は、0.5秒ごとに発生するベースタイマー割り込みをカウントすることで実現しています。また、ポート3割り込みはレベル割り込みになっており、ユーザーがボタンを押し続けている間、割り込みがかかり続けます。 他のタイマーを用いて頻繁に割り込みを発生させたり、ポート3のレベル割り込みを受け付けると、内蔵時計が遅れる場合があります。 また、ベースタイマー割り込みを利用する場合は、GHEAD.ASM内のラベルtimer_ex_exit直後でユーザー側ハンドラをCALLするようにしてください。ユーザー側ハンドラは、その処理時間を最小限にし、0.5秒ごとにかかる割り込みを確実に処理できるように設計してください。

時計を遅らせることのないように、アプリケーションの設計段階から注意をしてください。

- 時計用タイマー
- 14ビットのバイナリアップカウンタ
- 早送りモード（6ビットベースタイマー使用時）

####

4-4-1　機能

##### ■時計用タイマー

ベースタイマーのカウントクロックに32.768kHzの水晶発振を使用した場合、0.5秒間隔の時計ができます。ベースタイマーのカウントクロックは、水晶発振です。

##### ■14ビットのバイナリアップカウンタ

8ビットのバイナリアップカウンタと6ビットのバイナリアップカウンタを併用することで、14ビットのバイナリアップカウンタとして使用できます。これらのカウンタはアプリケーションからクリアできます。

##### ■早送りモード（6ビットベースタイマー使用時）

ベースタイマーを6ビットで使用すると、カウントクロックに32.768kHzの水晶発振を使用した場合に、約2ミリ秒間隔の時計ができます。ビット長の切り換えは、ベースタイマー制御レジスタ（BTCR）で指定します。

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

割り込み要求許可ビットがセットされている場合、ベースタイマーからの割り込み要求が発生すると、割り込みベクトル001BHがCALLされます。ベースタイマーからの割り込み要求には「ベースタイマー割り込み0」と「ベースタイマー割り込み1」の2種類があります。

ベースタイマーを制御するには、次に示す特殊機能レジスタを操作する必要があります。

BTCR，P1，タイマー0関係，割り込み関係

####

4-4-2　回路構成

ベースタイマーは、図51のように構成されています。

##### ■8ビットバイナリアップカウンタ　……　(1)

入力信号選択レジスタ（ISL）で選択された信号を入力とするアップカウンタです。

4KHz/2KHzのブザー出力信号を発生します。このカウンタがオーバーフローすると、ベースタイマー割り込み1の要因を発生しします。また、このオーバーフローは、6ビットバイナリカウンタのクロックになります。

##### ■6ビットバイナリアップカウンタ　……　(2)

特殊機能レジスタ（ISL）で選択された信号または、8ビットカウンタのオーバーフローを入力とする6ビットアップカウンタです。このカウンタがオーバーフローすると、ベースタイマー割り込み0、1の要因を発生します。入力クロックの切り換えは、ベースタイマー制御レジスタBCTRで行います。

##### ■ベースタイマー入力クロック源　……　(3)

ベースタイマーへ供給するクロックは、入力信号選択レジスタ（ISL）で水晶発振を指定します。他の発振回路を供給しないようにしてください。

▽ ベースタイマーブロック図(図51)

####

4-4-3　関連レジスタ

#### ベースタイマー制御レジスタ（BTCR）

シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
BTCR | 17FH | R/W | BTCR7 | BTCR6 | BTCR5 | BTCR4 | BTCR3 | BTCR2 | BTCR1 | BTCR0
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0

アプリケーションからBTCR7，BTCR6，BTCR0を操作しないでください。 上記以外のビットを操作する場合は、必ずビット操作命令を使用してください。

ビット名 | 機能
BTC7（ビット7） | ベースタイマー割り込み0周期制御
0：16384/fBST
BTC6（ビット6） | ベースタイマー動作制御
1：ベースタイマー動作開始
BTC5（ビット5） BTC4（ビット4） | ベースタイマー割り込み1周期制御
BTC7 | BTC5 | BTC4 |
X X 0 0 | 0 0 1 1 | 0 1 0 1 | 32/fBST 128/fBST 512/fBST 2048/fBST
BTC3（ビット3） | ベースタイマー割り込み1要因
0：割り込み要因なし 1：割り込み要因あり
BTC2（ビット2） | ベースタイマー割り込み1要求許可制御
0：割り込み要求禁止 1：割り込み要因許可
BTC1（ビット1） | ベースタイマー割り込み0要因
0：割り込み要因なし 1：割り込み要因あり
BTC0（ビット0） | ベースタイマー割り込み0要求許可制御
1：割り込み要因許可

##### ■BTCR7（ビット7）：ベースタイマー割り込み0周期制御　0：固定

ベースタイマーの割り込み0要因発生の周期を指定します。

‘0’をセットすると、16384/fBSTとなります。このとき、14ビットカウンタのオーバーフローで割り込み0要因が発生す間隔は、16384/fBSTとなります。

‘1’にリセットすると、64/fBSTとなります。早送りモードを使用する場合は、このフラグをセットします。

ベースタイマーは、ビジュアルメモリの時計機能で利用していますので、絶対にアプリケーションからこれらのレジスタを操作しないでください。

##### ■BTCR6（ビット6）：ベースタイマー動作制御　1：固定

ベースタイマーのカウント動作を開始または停止します。

‘1’をセットすると、カウント動作を開始します。

‘0’にリセットすると、カウント動作が停止し、14ビットカウンタがクリアされた状態になります。

ベースタイマーは、ビジュアルメモリの時計機能で利用していますので、絶対にアプリケーションからこれらのレジスタを操作しないでください。

##### ■BTCR5〜4（ビット5〜4）：ベースタイマー割り込み1周期制御

ベースタイマーの割り込み1要因発生の周期を選択します。

BTCR7 | BTCR5 | BTCR4 | ベースタイマー割り込み1周期
x | 0 | 0 | 32/fBST
x | 0 | 1 | 128/fBST
0 | 1 | 0 | 512/fBST
0 | 1 | 1 | 2048/fBST

s fBST：入力クロック周波数

##### ■BTCR3（ビット3）：ベースタイマー割り込み1要因フラグ

BTCR7，5，4で設定されたベースタイマー割り込み1要因発生の周期ごとにセットされ、発生しない場合変化しません。

このフラグは、割り込み処理ルーチンなどでリセットする必要があります。

##### ■BTCR2（ビット2）：ベースタイマー割り込み1要求許可制御

ベースタイマー割り込み1による割り込み要求を許可または禁止します。

‘1’をセットすると、ベースタイマー割り込み1要因の発生によって、割り込みベクトル001BHへの割り込み要求が発生します。

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

##### ■BTCR1（ビット1）：ベースタイマー割り込み0要因フラグ

BTCR7で設定されたベースタイマー割り込み0要因発生の周期ごとにセットされ、発生しない場合変化しません。

このフラグは、割り込み処理ルーチンなどでリセットする必要があります。

##### ■BTCR0（ビット0）：ベースタイマー割り込み0要求許可制御　0：固定

ベースタイマー割り込み0による割り込み要求を許可または禁止します。

‘1’をセットすると、ベースタイマー割り込み0要因の発生によって、割り込みベクトル001BHがCALLされます。

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

ベースタイマーは、ビジュアルメモリの時計機能で利用していますので、絶対にアプリケーションからこれらのレジスタを操作しないでください。

- BTCR7，5＝1（早送りモード）では、システムクロックとベースタイマーの両方を、同時に水晶発振にしないでください。
- ごくまれにBTCR5，4を変更した際に、BTCR3が‘1’になることがあります。BTCR5，4を変更する前にBTCR3の値を保持し、変更後にBTCR3の値をセットし直してください。

#### 入力信号選択レジスタ（ISL）

詳細は「4.2　タイマー/カウンタ0（T0）」の「入力信号選択レジスタ（ISL）」を参照してください。

シンボル | アドレス | R/W | ビット７ | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0
ISL | 15FH | R/W | − | − | ISL5 | ISL4 | ISL3 | ISL2 | ISL1 | ISL0
リセット時 | H | H | 0 | 0 | 0 | 0 | 0 | 0

ビット名 | 機能
ISL5（ビット5） ISL4（ビット4） | ベースタイマークロック選択
ISL5 | ISL4 |
X | 0 | 水晶発振固定
ISL3（ビット3） | 使用不可
0：fBST/16 固定
ISL2（ビット2） ISL1（ビット1） | ノイズ除去フィルタ時定数選択
ISL2 | ISL1 | 時定数
1 0 X | 1 1 0 | 16Tcyc 64Tcyc 1Tcyc
ISL0（ビット0） | T0のクロック入力端子選択
0：P72/INT2/T01INT端子 1：P73/INT3/T01INT端子

####

4-4-4　ベースタイマーの使い方

▽ 時計用タイマー(図52)

[←] | [INDEX] | [→]