4-2 タイマー/カウンタ0(T0) |
ビジュアルメモリ用カスタムチップに内蔵しているタイマー/カウンタ0(T0)は、次に示す4つの機能を持った16ビットタイマー/カウンタです。また、タイマー0のプリスケーラは、8ビットプリスケーラです。
タイマー/カウンタ0(T0)を制御するには、次に示す特殊機能レジスタを操作する必要があります。
T0H,T0HR,T0L,T0LR,T0CNT,T0PRR,ISL,I23CR
8ビットプリスケーラからのクロックによって、2つの独立した8ビットリロードタイマー(T0H,T0L)が動作します。
T0Hは、プリスケーラからのクロックによって8ビットリロードタイマーとして動作します。T0Lは、P72/INT2/T0IN端子、P73/INT3/T0IN端子からの外部入力信号を検出してカウントします。
8ビットプリスケーラからのクロックによって16ビットリロードタイマー(T0H+T0L)が動作します。
T0LのオーバーフローをT0Hのクロックとして使用し、16ビットリロードカウンタとして動作します。T0Lは、P72/INT2/T0IN端子、P73/INT3/T0IN端子からの外部入力信号をカウントします。
割り込み要求許可ビットがセットされている場合、レジスタT0HまたはT0Lのオーバーフローによって、T0HまたはT0L割り込み要求が発生します。
タイマー/カウンタ0(T0)は、図26のように構成されています。
プリスケーラは、8ビットのプログラマブルカウンタです。
システムが動作している間、常にカウントが行なわれます。
サイクルクロックは、命令実行時またはHALTモード時に1サイクルごとに発生する信号です。
プリスケーラ出力、または外部端子の信号(他のビジュアルメモリ)をクロックとする8ビットリロードタイマー/カウンタです。
モード0,1ではT0Lのオーバーフローで、モード2,3ではT0Hのオーバーフローで、T0LR(リロードレジスタ)の内容がそれぞれのカウンタにリロードされます。また、T0LRUN(T0CNTのビット6)をリセットしてカウントを中止させた場合にもリロードされます。
プリスケーラ出力、またはT0Lのオーバーフローをクロックとする8ビットリロードタイマーです。
T0Hのオーバーフローでタイマー0の上位リロードレジスタ(T0HR)から内容がリロードされます。T0HRUN(T0CNTのビット7)をリセットしてカウントを中止させた場合にもリロードされます。
T0のモード0〜3設定や割り込み制御を行います。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0CNT | 14EH | R/W | P0HRUN | P0LRUN | P0LONG | P0LEXT | P0HOVF | T0HIE | T0LOVF | T0LIE |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ビット名 | 機能 |
P0HRUN(ビット7) | T0Hカウント制御 |
0:カウントストップ/データリロード 1:カウントスタート |
|
P0LRUN(ビット6) | T0Lカウント制御 |
0:カウントストップ/データリロード 1:カウントスタート |
|
P0L0NG(ビット5) | タイマー/カウンタ0ビット長選択 |
0:8ビット 1:16ビット |
|
P0LEXT(ビット4) | T0L入力ロック選択 |
0:プリスケーラ出力 1:外部端子入力信号 外部端子の場合、入力信号レジスタ(ISL)で端子を指定 |
|
P0H0VF(ビット3) | T0Hオーバーフローフラグ |
0:オーバーフローフラグなし 1:オーバーフローフラグあり |
|
T0HIE(ビット2) | T0H割り込み要求許可 |
0:割り込み要求禁止 1:割り込み要求許可 |
|
T0L0VF(ビット1) | T0Lオーバーフローフラグ |
0:オーバーフローフラグなし 1:オーバーフローフラグあり |
|
T0LIE(ビット0) | T0L割り込み要求許可 |
0:割り込み要求禁止 1:割り込み要求許可 |
タイマー/カウンタ0の上位(T0H)に対して、カウントアップのスタート/ストップを制御します。カウントをスタートさせる場合は1をセットすることで、T0Hへのクロック供給がはじまります。カウントをストップさせる場合は、0にリセットすることで、クロックの供給が停止されると同時に、リロードデータ(T0HR)がT0Hに転送されます。
タイマー/カウンタ0の下位(T0L)に対して、カウントアップのスタート/ストップを制御します。カウントをスタートさせる場合は1をセットすることで、T0Lへのクロック供給がはじまります。カウントをストップさせる場合は0にリセットすることで、クロックの供給が停止されると同時に、リロードデータ(T0LR)がT0Lに転送されます。
T0のビット長を指定します。16ビットカウンタにする場合は1を、8ビットカウンタにする場合は0を指定します。
モード0または1で使用する場合は‘0’を、モード2または3で使用する場合は‘1’を指定します。
モード | T0LONG | T0LEXT |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 1 | 0 |
3 | 1 | 1 |
T0Lへ共有するクロックを指定します。クロックは、外部端子入力信号(他のビジュアルメモリを接続した場合)とプリスケーラからの出力のどちらかを選べます。
1をセットすると外部端子入力信号が供給され、0にリセットするとプリスケーラ出力が供給されます。
外部端子信号(1)の場合、ポートP72(INT2/T0IN端子)かP73(INT3/T0IN端子)のどちらかを信号をT0Lのクロックとして供給できます。P72とP73の切り替えは、入力信号選択レジスタ(ISL)によって行ないます。
T0Hのオーバーフローが発生した場合にセットされ、発生しない場合変化しません。
このフラグは、アプリケーションのT0Hの割り込み処理ルーチンなどでリセットする必要があります。
T0Hのオーバーフローによる割り込み要求を許可または禁止します。
‘1’をセットすると、T0Hのオーバーフローによって割り込みベクトル0023HがCALLされます。‘0’にリセットすると、割り込み要求は発生しません。
T0Lのオーバーフローが発生した場合にセットされ、発生しない場合変化しません。
このフラグは、アプリケーションのT0Lの割り込み処理ルーチンなどでリセットする必要があります。
16ビットカウンタとして利用している場合は、T0Lでオーバーフローが発生してもこのフラグはセットされません。T0Hでオーバーフローが発生した場合にT0HOVFと同時にセットされます。
T0Lのオーバーフローによる割り込み要求を許可または禁止します。
‘1’をセットすると、T0Lのオーバーフローによって割り込みベクトル0013HがCALLされます。‘0’にリセットすると、割り込み要求は発生しません。
![]()
|
このレジスタでは、P73(INT3/T0IN端子)に接続されているノイズ除去フィルタの時定数選択、外部信号入力端子の選択に使用します。
![]() このレジスタは、アプリケーションから操作しないでください。 |
シンボル | アドレス | R/W | ビット7 | ビット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 | ||
1 0 X |
1 1 0 |
タイマー/カウンタT0プリスケーラ サイクルクロック 水晶発振 |
|
ISL3(ビット3) | 使用不可 | ||
0:FBST/16 固定 1:使用不可 |
|||
ISL2(ビット2) ISL1(ビット1) |
ノイズ除去フィルタ時定数選択 | ||
ISL2 | ISL1 | ||
1 0 X |
1 1 0 |
16Tcyc 64Tcyc 1Tcyc |
|
ISL0(ビット0) | T0のクロック入力端子選択 | ||
0:P72/INT2/T0IN端子 1:P73/INT3/T0IN端子 |
ベースタイマーの入力クロックを選択します。
ISL5 | ISL4 | ベースタイマーの入力クロック |
0 | 0 | 水晶発振固定 |
このビットは使用不可能です。
ノイズ除去フィルタの時定数を選択します。
ISL2 | ISL1 | 時定数 |
0 | 0 | 1Tcyc |
次の表は、各時定数の信号、ノイズの範囲を示したものです。
時定数 | ノイズ*1 | ノイズ/信号*2 | 信号*3 |
1Tcyc | < 1Tcyc | 1Tcyc - 2Tcyc | 2Tcyc < |
![]()
|
T0の外部信号入力端子、P73(INT3/T0IN端子)またはP72(INT2/T0IN端子)を選択します。
‘0’にリセットするとP72(INT2/T0IN端子)がT0のクロックとして供給されます。
‘1’をセットするとP73(INT3/T0IN端子)がT0のクロックとして供給されます。
タイマー0プリスケーラデータレジスタは、タイマー/カウンタ0のクロック周期の設定を行います。8ビットのプログラマブルカウンタにより、256とおりの設定が可能です。
8ビットプリスケーラはサイクルクロックそのものがクロックとして入力されます。T0PRR(111H)に任意のデータを設定することによって、タイマー/カウンタ0のクロック周期TPRを設定できます。
8ビットプリスケーラ :TPR = 1×Tcyc×(256−[T0PRR]) (10進) |
s Tcyc:サイクルクロックの周期
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0PRR | 111H | R/W | T0PRR7 | T0PRR6 | T0PRR5 | TOPRR4 | T0PRR3 | T0PRR2 | T0PRR1 | T0PRR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8ビットのタイマー/カウンタです。
プリスケーラからの出力もしくは、P72(INT2/T0IN端子)またはP73(INT3/T0IN端子)の外部信号をクロックとして入力するかを選択できます。
クロックによりカウントアップし、オーバーフローするとオーバーフローフラグがセットされ割り込みが発生します。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0L | 112H | R | T0L7 | T0L6 | T0L5 | T0L4 | T0L3 | T0L2 | T0L1 | T0L0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
タイマー/カウンタ0の下位(T0L)にリロードされるデータをセットします。
8ビットで使用しているときは、このリロードレジスタの内容がT0Lにリロードされます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0LR | 113H | R/W | T0LR7 | T0LR6 | T0LR5 | T0LR4 | T0LR3 | T0LR2 | T0LR1 | T0LR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8ビットのタイマー/カウンタです。
プリスケーラからの出力もしくは、T0Lのオーバーフロー(T0LOVF)により、カウントアップされます。
オーバーフローするとオーバーフローフラグ(T0HOVF)がセットされ割り込みが発生します。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0H | 114H | R | T0H7 | T0H6 | T0H5 | T0H4 | T0H3 | T0H2 | T0H1 | T0H0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
タイマー/カウンタ0の上位(T0L)にリロードされるデータをセットします。
T0Hのオーバーフローおよび、カウントをストップした(T0HRUN=0)ときに、このレジスタの内容がT0Hにリロードされます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T0HR | 115H | R/W | T0HR 7 | T0HR6 | T0HR5 | T0HR4 | T0HR3 | T0HR2 | T0HR1 | T0HR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
外部入力信号の検出、割り込みを設定します。
ISL0 | I23CR7 | I23CR6 | I23CR3 | I23CR2 | 外部信号カウント条件 |
1 | 0 | 1 | − | − | P73/INT3/T0IN端子 立ち下がり カウント |
1 | 1 | 0 | − | − | P73/INT3/T0IN端子 立ち上がり カウント |
1 | 1 | 1 | − | − | P73/INT3/T0IN端子 両エッジ カウント |
0 | − | − | 0 | 1 | P72/INT2/T0IN端子 立ち下がり カウント |
0 | − | − | 1 | 0 | P72/INT2/T0IN端子 立ち上がり カウント |
0 | − | − | 1 | 1 | P72/INT2/T0IN端子 両エッジ カウント |
− | 0 | 0 | 0 | 0 | カウントしない |
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
I23CR | 15EH | R/W | I23CR7 | I23CR6 | I23CR5 | I23CR4 | I23CR3 | I23CR2 | I23CR1 | I23CR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
入力信号選択レジスタのISL0フラグと組み合せて、カウントの条件を指定します。組み合せは、次の表のとおりです。
ビット名 | 機能 |
I23CR7(ビット7) | INT3立ち上がりエッジ検出制御 |
0:検出しない 1:検出する |
|
I23CR6(ビット6) | INT3立ち下がりエッジ検出制御 |
0:検出しない 1:検出する |
|
I23CR5(ビット5) | INT3割り込み要因 |
0:割り込み要因なし 1:割り込み要因あり |
|
I23CR4(ビット4) | INT3割り込み要求許可制御 |
0:割り込み要求禁止 1:割り込み要求許可 |
|
I23CR3(ビット3) | INT2立ち上がりエッジ検出制御 |
0:検出しない 1:検出する |
|
I23CR2(ビット2) | INT2立ち下がりエッジ検出制御 |
0:検出しない 1:検出する |
|
I23CR1(ビット1) | INT2割り込み要因 |
0:割り込み要因なし 1:割り込み要因あり |
|
I23CR0(ビット0) | INT2割り込み要求許可制御 |
0:割り込み要求禁止 1:割り込み要求許可 |
P73(INT3/T0IN端子)の割り込み信号で、立ち上がりエッジ割り込みを検出するかどうかを指定します。
‘1’をセットすると、P73からの割り込み信号INT3の立ち上がりエッジ割り込みを検出します。INT3の割り込みが発生すると、I23CR5が1にセットされ、割り込み要求が許可(I23CR4=1)されていれば、割り込みベクトルで指定された、割り込み処理ルーチンがCALLされます。
‘0’にリセットすると、割り込み信号の立ち上がりエッジを検出しません。
P73(INT3/T0IN端子)の割り込み信号で、立ち下がりエッジ割り込みを検出するかどうかを指定します。
‘1’をセットすると、P73からの割り込み信号INT3の立ち下がりエッジ割り込みを検出します。INT3の割り込みが発生すると、I23CR5が1にセットされ、割り込み要求が許可(I23CR4=1)されていれば、割り込みベクトルで指定された、割り込み処理ルーチンがCALLされます。
‘0’にリセットすると、割り込み信号の立ち下がりエッジを検出しません。
P73(INT3/T0IN端子)のエッジ割り込みを検出した場合、このフラグがセットされます。
このフラグは、アプリケーションの割り込み処理ルーチンでフラグをリセットしてください。
INT3割り込みを許可または禁止します。
‘1’をセットすると、I23CR5フラグがセットされたときにINT3の割り込みベクトルがCALLされます。
‘0’にリセットすると、割り込みが発生しても割り込み処理ルーチンへのCALLは行われません。
P72(INT2/T0IN端子)の割り込み信号で、立ち上がりエッジ割り込みを検出するかどうかを指定します。
‘1’をセットすると、P72からの割り込み信号INT2の立ち上がりエッジ割り込みを検出します。INT2の割り込みが発生すると、I23CR1が1にセットされ、割り込み要求が許可(I23CR4=0)されていれば、割り込みベクトルがCALLされます。
P72(INT2/T0IN端子)の割り込み信号で、立ち下がりエッジ割り込みを検出するかどうかを指定します。
‘1’をセットすると、P72からの割り込み信号INT2の立ち下がりエッジ割り込みを検出します。INT2の割り込みが発生すると、I23CR1が1にセットされ、割り込み要求が許可(I23CR4=0)されていれば、割り込みベクトルがCALLされます。
P72(INT2/T0IN端子)のエッジ割り込みを検出した場合、このフラグがセットされます。
このフラグは、アプリケーションの割り込み処理ルーチンでフラグをリセットしてください。
INT2割り込みを許可または禁止します。
‘1’をセットすると、I23CR1フラグがセットされたときにINT2の割り込みベクトルがCALLされます。
‘0’にリセットすると、割り込みが発生しても割り込み処理ルーチンへのCALLは行われません。
![]()
|
モード | T0LONG | T0LEXT |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 1 | 0 |
3 | 1 | 1 |
モード0の場合、タイマー0は2チャネルの8ビットリロードタイマーとして機能します。タイマー値とリロードレジスタ(T0LR)設定値の関係は、次のようになっています。
T0HOVFがセット(1)されるまでの時間(10進) = (256-T0HR設定値)×TPR T0LOVFがセット(1)されるまでの時間(10進) = (256-T0LR設定値)×TPR |
TPR:プリスケーラからのクロックの周期
カウント制御ビット(T0HRUN,T0LRUN)をセットすると、カウントを開始します。リセットすると、カウントを停止し、リロードレジスタ(T0HR,T0LR)の内容がカウンタ(T0H,T0L)に転送されます。
タイマー/カウンタ0(T0H、T0L)がオーバーフローすると、オーバーフローフラグ(T0HOVF,T0LOVF)がセットされ、リロードレジスタ(T0HR、T0LR)の内容がカウンタ(T0H,T0L)に転送されます。
また、オーバーフローフラグ(T0HOVF,T0LOVF)と、割り込み要求許可フラグ(T0HIE,T0LIE)が、ともにセットされていれば、割り込み制御回路に割り込み要求を知らせます。
▽ モード0:8ビットリロードタイマー×2チャネルの回路構成(図27)
タイマー0の上位8ビット(T0H)は、8ビットリロードタイマーとして動作します。タイマー値とリロードレジスタ(T0HR)設定値の関係は、次のようになります。
T0HOVFがセット(1)されるまでの時間(10進) = (256-T0HR設定値)×TPR |
TPR:プリスケーラからのクロックの周期
T0HOVFがセットされるごとに、リロードレジスタの値がカウンタT0Hに転送されます。 また、T0Hカウント制御ビット(T0HRUN)をリセットするまでタイマー動作を継続します。操作方法は、モード0と同じです。
▽ モード1:8ビットリロードタイマー(T0H)ブロック図(図29)
タイマー0の下位8ビット(T0L)は、外部端子から入力される信号をカウントアップします。
外部信号は、ノイズ除去フィルタによってフィルタリングされます。詳細は「4.2 タイマー/カウンタ0(T0)」の「入力信号選択レジスタ(ISL)」を参照してください。
計数値とリロードレジスタ(T0LR)設定値の関係は、次のようになります。
T0LOVFが’セット(1)されるまでの計数値(10進) = 256−(T0LR設定値) |
T0Lオーバーフローフラグ(T0LOVF)がセットされると、リロードレジスタ(T0LR)の値がカウンタ(T0L)に転送されます。また、T0Lカウント制御ビット(T0LRUN)をリセットするまでタイマー動作を継続します。
▽ モード1:8ビットリロードカウンタ(T0L)ブロック図(図30)
モード2は、T0HとT0Lをシリーズに接続し、16ビットのタイマーとして使用します。
タイマーをスタートさせる場合は、T0HとT0Lのカウント制御ビット(T0HRUN,T0LRUN)を同時にセットします。
タイマー値とリロードレジスタ(T0HR,T0LR)設定値の関係は、次のようになります。
T0HOVFがセット(1)されるまでの時間(10進) s= (65536-256×(T0HR設定値)−(T0LR設定値))×TPR |
TPR:プリスケーラからのクロックの周期
T0LOVFとT0HOVFは同時にセットされ、T0HOVFが発生するごとにリロードレジスタ(T0LR,T0HR)の値が、T0L,T0Hに同時に転送されます。カウント制御ビットをリセットするまでタイマー動作を継続します。操作方法は、モード0と同じです。
タイマー0(T0)のデータを読み出す場合は、次の手順で読み出してください。
T0L LD T0L ; T0Lのデータ(1)を読みます。 ↓ ST 020H T0H LD T0H ; T0Hのデータを読みます。 ↓ ST 021H T0L LD T0L ; もう一度T0L(2)のデータを読みます。 ↓ BP T0L,7,DES ; T0L(2)のビット7が‘0’で、 BN 020H,7,DES ; T0L(1)のビット7が‘1’であるときは ST 020H T0H LD T0H ; T0H(2)を読みます。 ST 021H DES: − next program
▽ モード2:16ビットリロードタイマーブロック図(図32)
モード3は、T0HとT0Lをカスケードに接続して16ビットのカウンタとして使用します。クロックはP72(INT2/T0IN端子)またはP73(INT3/T0IN端子)から入力される外部信号です。外部入力端子の選択は、SFRのISLレジスタで行います。なおP73(INT3/T0IN端子)にはノイズ除去フィルタが接続されています。
カウンタをスタートさせる場合は、T0HとT0Lのカウンタ制御ビット(T0HRUN,T0LRUN)を同時にセットします。
計数値とリロードレジスタ(T0HR,T0LR)設定値の関係は、次のようになります。
T0HOVFがセット(1)されるまでの計数値 s= 65536-256×(T0HR設定値)−(T0LR設定値) |
T0LOVFとT0HOVFは同時にセットされ、T0HOVFが発生するごとにリロードデータ(T0LR,T0HR)がT0L,T0Hに同時に転送されます。カウント制御ビットをリセットするまでカウントを継続します。操作方法は、モード0と同じです。
タイマー0(T0)のデータを読み出す場合は、次の手順で読み出してください。
T0L LD T0L ; T0Lのデータ(1)を読みます。 ↓ ST 020H T0H LD T0H ; T0Hのデータを読みます。 ↓ ST 021H T0L LD T0L ; もう一度T0L(2)のデータを読みます。 ↓ BP T0L,7,DES ; T0L(2)のビット7が‘0’で、 BN 020H,7,DES ; T0L(1)のビット7が‘1’であるときは ST 020H T0H LD T0H ; T0H(2)を読みます。 ST 021H DES: − next program
▽ モード3:16ビットリロードカウンタブロック図(図34)
[←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1999