4-3 タイマー1(T1) |
ビジュアルメモリ用カスタムチップが内蔵しているタイマー1(T1)は、次に示す4つの機能を持った16ビットタイマーです。
・モード0: 8ビットリロードタイマー×2チャネル
・モード1: 8ビットリロードタイマー+8ビットパルスジェネレータ
・モード2: 16ビットリロードタイマー
・モード3: ビット長可変パルスジェネレータ(9〜16ビット)
サイクルクロックをクロックとしたタイマーです。2つの独立した8ビットリロードタイマー(T1H,T1L)として動作します。
T1Hは、サイクルクロックによって8ビットリロードタイマーとして動作します。T1Lは8ビットパルスジェネレータとして動作します。パルス信号は、P17/パルス信号出力端子から出力されます。
T1LのオーバーフローをT1Hのクロックとして使用し、16ビットリロードタイマーとして動作します。T1Lの入力クロックはサイクルクロックです。T1Lのオーバーフローが発生するたびに、T1LR,T1HRのリロードデータがT1L,T1Hにリロードされます。
T1Lのクロックは、サイクルクロックかサイクルクロックの1/2の信号のいずれかが使用できます。
T1L,T1Hを使用して9〜16ビットのパルス信号を発生します。パルス信号は、P17/パルス信号出力端子から出力されます。
T1Lのクロックは、サイクルクロックかサイクルクロックの1/2の信号のいずれかが使用できます。
割り込み要求許可ビットがセットされている場合、レジスタT1H,T1Lのオーバーフローによって、それぞれT1H,T1L割り込み要求が発生します。
タイマー1(T1)を制御するには、次に示す特殊機能レジスタを操作する必要があります。
T1H,T1HR,T1HC,T1L,T1LR,T1LC,T1CNT,P1
タイマー1(T1)は、図36のように構成されています。
サイクルクロックまたはサイクルクロックの1/2周期の信号をクロックとする8ビットリロードタイマーです。T1LのオーバーフローでT1LRの値がリロードされ、T1LRUN(T1CNTのビット6)に‘0’にリセットしタイマーを停止させると、T1LRのデータがT1Lに転送されます。
8ビットのタイマー1下位比較データレジスタ(T1LC)と、8ビットデータ比較回路で構成され、T1LとT1LCのデータを比較します。
サイクルクロックまたはT1Lのオーバーフローをクロックとする8ビットリロードタイマーです。T1HのオーバーフローでT1HRの値がリロードされます。また、T1HRUN(T1CNTのビット7)をリセットしタイマーを停止させた場合もリロードされます。
8ビットのタイマー1上位比較データレジスタ(T1HC)と、8ビットデータ比較回路で構成され、T1HとT1HCのデータを比較します。
T1の各モード設定や割り込み制御を行います。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1CNT | 118H | R/W | T1HRUN | T1LRUN | T1LONG | ELDT1C | T1HOVF | T1HIE | T1LOVF | T1LIE |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ビット名 | 機能 |
T1HRUN(ビット7) | T1Hカウント制御 |
0:カウントストップ/データリロード 1:カウントスタート |
|
T1LRUN(ビット6) | T1Lカウント制御 |
0:カウントストップ/データリロード 1:カウントスタート |
|
T1L0NG(ビット5) | タイマー1ビット長選択 0:8ビット 1:16ビット |
ELDT1C(ビット4) | パルスジェネレータ用データ更新許可制御 |
0:禁止 1:許可 |
|
T1H0VF(ビット3) | T1Hオーバーフローフラグ |
0:オーバーフローなし 1:オーバーフローあり |
|
T1HIE(ビット2) | T1H割り込み要求許可制御 |
0:割り込み要求禁止 1:割り込み要求許可 |
|
T1L0VF(ビット1) | T1Lオーバーフローフラグ |
0:オーバーフローなし 1:オーバーフローあり |
|
T1LIE(ビット0) | T1L割り込み要求許可制御 |
0:割り込み要求禁止 1:割り込み要求許可 |
タイマー1上位(T1H)のカウントを開始または停止させます。
‘1’をセットすると、T1Hにクロックが入力されカウントが始まります。
‘0’にリセットすると、T1Hへのクロックが停止すると同時にリロードレジスタ(T1HR)の値がT1Hに転送されます。
タイマー1下位(T1L)のカウントを開始または停止させます。
‘1’をセットすると、T1Lにクロックが入力されカウントが始まります。
‘0’にリセットすると、T1Lへのクロックが停止すると同時にリロードレジスタ(T1LR)の値がT1Lに転送されます。
T1のビット長を、16ビットまたは8ビットに切り替えます。
‘1’をセットすると、タイマー1は16ビットタイマーとして動作します。モード0,1で使用する場合は、‘1’をセットしてください。
‘0’にリセットすると、タイマー1は8ビットタイマーとして動作します。モード2,3で使用する場合は、‘0’にリセットしてください。
パルス信号を発生させるための比較データレジスタ(T1HC,T1LC)の値を比較回路に転送するかしないかを指定します。
‘1’をセットすると、値を比較回路に転送し、新しいパルスジェネレータ用データに更新します。
‘0’にリセットすると、データは更新されず、同じパルスジェネレータ用データを出力します。
8ビットカウンタを2つ同時に更新したい場合は、このフラグをリセットし、それぞれのカウンタの値を設定してから、再度このフラグをセットします。こうすることで、2つの8ビットカウンタを同時に更新することが可能です。
T1Hのオーバーフローが発生した場合にセットされ、発生しない場合変化しません。
このフラグは、T1H割り込み処理ルーチンなどでフラグをリセットする必要があります。
T1Hのオーバーフローによる割り込み要求を許可または禁止します。
‘1’をセットすると、T1Hのオーバーフローによって発生した割り込みを受け付け、割り込みベクトル002BHがCALLされます。
‘0’にリセットすると、割り込みを受け付けず、割り込み処理ルーチンへのCALLも行なわれません。
T1Lのオーバーフローが発生した場合にセットされ、発生しない場合変化しません。
このフラグは、T1のビット長に関係なく、T1Lでオーバーフローが発生するとセットされます。
また、このフラグはT1Lの割り込み処理ルーチンなどでフラグをリセットする必要があります。
T1Lのオーバーフローによる割り込み要求を許可または禁止します。
‘1’をセットすると、T1Lのオーバーフローによって発生した割り込みを受け付け、割り込みベクトル002BHがCALLされます。
![]()
Ttc=1/2Tcyc : T1HRUN=0, T1LRUN=1, T1LONG=1 Ttcは、クロックの周期 |
タイマー1下位レジスタは、8ビットのタイマーです。サイクルクロックまたはサイクルクロックの1/2周期の信号をクロックとします。
T1LのオーバーフローによってT1LRの値が転送され、T1Lオーバーフローフラグがセットされます。
なお、モード1,3では、パルス信号を発生させるために使用されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1L | 11BH | R | T1L7 | T1L6 | T1L5 | T1L4 | T1L3 | T1L2 | T1L1 | T1L0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
タイマー1下位リロードレジスタは、タイマー1下位(T1L)のリロードレジスタです。
T1Lのオーバーフローごと、およびT1LRUN=0のときにリロードレジスタの値がT1Lにリロードされます。
なお、モード1,3では、パルス信号を発生させるために使用されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1LR | 11BH | W | T1LR7 | T1LR6 | T1LR5 | T1LR4 | T1LR3 | T1LR2 | T1LR1 | T1LR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
T1L,T1LRは同一アドレスです。T1Lは読み出し専用で、T1LRは書き込み専用です。
![]() 書き込み専用レジスタに対してビット操作命令や、INC命令、DEC命令、DBNZ命令を使用すると、指定したビット以外のビットがセットされるので注意してください。 T1LRには次の命令を使用してください。 MOV,MOV @,ST,ST @,POP |
タイマー1下位(T1L)の比較データレジスタです。
ELDT1C(T1CNTのビット4)をセットすると、T1LONG=0のときには次のT1Lオーバーフローで、T1LONG=1のときには次のT1Hオーバーフローで、このレジスタの値がパルスジェネレータ制御回路(比較回路)に転送されます。
T1LRUN=0の場合は、このレジスタの値が常にパルスジェネレータ制御回路に転送されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1LC | 11AH | R/W | T1LC7 | T1LC6 | T1LC5 | T1LC4 | T1LC3 | T1LC2 | T1LC1 | T1LC0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
タイマー1上位レジスタは、8ビットのタイマーです。
サイクルクロック、またはT1Lのオーバーフロー(T1LOVF)をクロックとして動作し、T1Hのオーバーフローによって、T1Hオーバーフローフラグがセットされます。
なお、モード3では、パルス信号を発生させるために使用されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1H | 11DH | R | T1H7 | T1H6 | T1H5 | T1H4 | T1H3 | T1H2 | T1H1 | T1H0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
タイマー1上位(T1H)のリロードレジスタです。
T1Hのオーバーフローごと、およびT1HRUN=0のときにリロードデータをT1Hにリロードします。
なお、モード3では、パルス信号を発生させるために使用されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1HR | 11DH | W | T1HR7 | T1HR6 | T1HR5 | T1HR4 | T1HR3 | T1HR2 | T1HR1 | T1HR0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
T1H、T1HRは同一アドレスです。T1Hは読み出し専用で、T1HRは書き込み専用です。
![]() 書き込み専用レジスタに対してビット操作命令や、INC命令、DEC命令、DBNZ命令を使用すると、指定したビット以外のビットがセットされるので注意してください。 T1LRには次の命令を使用してください。 MOV,MOV @,ST,ST @,POP |
タイマー1上位(T1H)の比較データレジスタです。
ELDT1C(T1CNTのビット4)をセットすると、T1LONG=0のときには次のT1Lオーバーフローで、T1LONG=1のときには次のT1Hオーバーフローで、このレジスタの値がパルスジェネレータ制御回路(比較回路)に転送されます。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
T1HC | 11CH | R/W | T1HC7 | T1HC6 | T1HC5 | T1HC4 | T1HC3 | T1HC2 | T1HC1 | T1HC0 |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
モード | クロック周期 | T1LONG | P17FCR | P17DDR | P17 |
0 | Tcyc | 0 | 0 | X | X |
1 | Tcyc | 0 | 1 | 1 | 0 |
2 | Tcyc,1/2Tcyc | 1 | 0 | X | X |
3 | Tcyc,1/2Tcyc | 1 | 1 | 1 | 0 |
モード0の場合、タイマー1は2チャネルの8ビットリロードタイマーとして機能します。タイマー値とリロードレジスタ(T1LR)設定値の関係は、次のとおりです。
T1HOVFがセット(1)されるまでの時間(10進) = (256-T1HR設定値)×Tcyc T1LOVFがセット(1)されるまでの時間(10進) = (256-T1LR設定値)×Tcyc |
Tcyc:サイクルクロックの周期
カウンタ制御ビット(T1HRUN,T1LRUN)をセットすると、カウント動作を開始しします。リセットするとカウント動作を停止して、リロードレジスタ(T1HR,T1LR)の内容がカウンタ(T1H,T1L)に転送されます。
タイマー1(T1H,T1L)がオーバーフローすると、オーバーフローフラグ(T1HOVF,T1LOVF)がセットされ、リロードレジスタ(T1HR,T1LR)の内容がカウンタ(T1H,T1L)に転送されます。
また、オーバーフローフラグ(T1HOVF,T1LOVF)と割り込み要求許可フラグ(T1HIE,T1LIE)が、ともにセットされていれば、割り込み制御回路に割り込み要求を知らせます。
▽ 8ビットリロードタイマー×2チャネルの回路構成(図37)
タイマー1の上位8ビットは、8ビットリロードタイマーとして動作します。タイマー値とリロードレジスタ(T1HR)設定値の関係は、次のようになります。
T1HOVFがセット(1)されるまでの時間(10進) = (256-T1HR設定値)×Tcyc |
Tcyc:サイクルロックの周期
T1HOVFがセットされるごとに、リロードレジスタの値がカウンタT1Hに転送されます。また、T1Hカウント制御ビット(T1HRUN)をリセットするまでタイマー動作を継続します。操作方法は、モード0と同一です。
▽ モード1:8ビットリロードタイマー(T1H)ブロック図(図39)
比較回路は、リロードされた値からサイクルクロックによってカウントアップされるT1Lの値と、比較データレジスタT1LCの値を比較します。一致しない間(T1L≠T1LC)は‘0’を出力します。一致(T1L=T1LC)すると‘1’を出力し、T1Lのオーバーフローが発生するまで継続されます。
パルス信号の周期は、リロードレジスタT1LRによって決定されます。カウンタ値とパルス出力波形の関係は、図40のとおりです。
比較データレジスタT1LCと、リロードレジスタT1LRの値によってパルス出力波形が決定されます。なお、比較データレジスタT1LCを書き換えてから、そのデータにしたがったパルス出力が得られるまで、パルス信号の周期の遅れがあります。
T1Lがオーバーフローするたびに、T1Lオーバーフローフラグ(T1LOVF)がセットされます。
パルス出力信号における関係式は、次のとおりです。
パルス出力信号の’L’レベルパルス幅(10進) = (T1LC設定値−T1LR設定値)×Tcyc パルス出力信号の周期(10進) = (256-T1LR設定値)×Tcyc |
Tcyc:サイクルクロックの周期
![]() ・必ずT1LC≧T1LRを満たすようにしてください。 |
▽ モード1:8ビットパルスジェネレータブロック図(図41)
16ビットリロードタイマーとしてタイマーを動作開始させるには、T1LRUNとT1LONGを同時にセットします。これらのビットをセットするには、MOV命令を使用してください。
T1Lのクロック(Ttc)には、サイクルクロック周期(Tcyc)とサイクルクロック周期の1/2(1/2Tcyc)のいずれかを選ぶことができます。次のように設定してください。
|
タイマー値とリロードレジスタ(T1HR,T1LR)設定値の関係は、次のようになります。
![]() タイマー/カウンタ0(T0)とは異なりますので注意してください。 |
|
Ttc:T1Lのクロック周期(Tcyc or 1/2 Tcyc)
T1LOVFが発生するごとにリロードデータ(T1LR)がT1Lに、T1HOVFが発生するごとにリロードデータ(T1HR)がT1Hに転送されます。カウント制御ビットをリセットするまでカウントを継続します。操作方法はモード0と同一です。
タイマー1(T1)のデータを読み出す場合は、次の手順にしたがってください。
T1L LD T1L ; T1Lのデータ(1)を読みます。 ↓ ST 020H T1H LD T1H ; T1Hのデータを読みます。 ↓ ST 021H T1L LD T1L ; もう一度、T1L(2)のデータを読みます。 ↓ BP T1L,7,DES ; T1L(2)のビット7が‘0’で、 BN 020H,7,DES ; T1L(1)のビット7が‘1’であるときは ST 020H T1H LD T1H ; T1H(2)を読みます。 ST 021H DES: − next program
▽ モード2:16ビットリロードタイマーブロック図(図43)
モード3においてタイマー1(T1L,T1H)は、ビット長可変パルスジェネレータとして機能します。可変範囲は9〜16ビットでT1HRによって設定します。
パルスジェネレータを動作させる場合は、タイマー1のビット長として16ビットを選択(T1LONG=1)し、T1Lのカウント制御ビット(T1LRUN)をセットします。16ビット長が選択されていた場合には、制御ビットT1LRUNで16ビットすべてのスタート/ストップの制御が行なえます。タイマー1制御レジスタ(T1CNT)のビットを同時にセットするためには、MOV命令を使用してください。
パルスジェネレータのクロック(Ttc)には、サイクルクロック(Tcyc)とサイクルクロックの1/2(1/2Tcyc)のいずれかを選ぶことができます。次のように設定してください。
|
T1Lがオーバーフローするたびに、T1Lオーバーフロー(T1LOVF)がセットされます。同様にT1Hがオーバーフローするたびに、T1Hオーバーフローフラグ(T1HOVF)がセットされます。カウントは、カウント制御ビットをリセットするまで継続します。
タイマー値とリロードレジスタ(T1HR,T1LR)設定値の関係は、次のようになります。
T1HOVFがセット(1)されるまでの時間(10進) = (256-T1HR設定値)×(256-T1LR設定値)×Ttc T1LOVFがセット(1)されるまでの時間(10進) = (256-T1LR設定値)×Ttc |
Ttc:T1のクロック周期(Tcyc or 1/2 Tcyc)
モード3でP17/パルス信号出力端子から出力される信号例を図45に示します。
出力信号は、小区間が最大256回繰り返される大区間Pが繰り返されます。
小区間Tの繰り返し回数は、T1HRで設定できます。小区間Tでの‘L’レベル幅は、モード1と同様にT1LCで設定でき、このときの最小単位はTtcになります。また、大区間P内の総‘L’レベル幅ΣTLは、T1LC,T1HCで設定できます。なおT1HRの値によって、T1HCの取得できるデータは限られます。
出力波形とT1HC,T1LCの関係の詳細は「付録編」「第17章 ビット長可変パルスジェネレータ」を参照してください。
パルスジェネレータビット長とT1LR,T1HRの値、およびT1LC,T1HCの値の関係を表7に示します。なおT1LRは、すべて00Hに設定します。
パルス | パルスビット長の設定(2進) | 'L'レベルパルス幅の設定(2進) | ||
ビット長 | T1HRの値 | T1HLの値 | T1LCの値 (上位ビット) | T1HCの値 (下位ビット) |
16 | 0000 0000 | 0000 0000 | XXXX XXXX | XXXX XXXX |
15 | 1000 0000 | 0000 0000 | XXXX XXXX | XXXX XXX0 |
14 | 1100 0000 | 0000 0000 | XXXX XXXX | XXXX XX00 |
13 | 1110 0000 | 0000 0000 | XXXX XXXX | XXXX X000 |
12 | 1111 0000 | 0000 0000 | XXXX XXXX | XXXX 0000 |
11 | 1111 1000 | 0000 0000 | XXXX XXXX | XXX0 0000 |
10 | 1111 1100 | 0000 0000 | XXXX XXXX | XX00 0000 |
9 | 1111 1110 | 0000 0000 | XXXX XXXX | X000 0000 |
たとえば、ビット長を16ビットにした場合、大区間Pは、小区間Tが256回繰り返すことになり、
小区間Tは、Ttc(サイクルクロックの1/2または1/1)の256倍であるので、
になります。
大区間Pにおける総‘L’レベル付加パルス幅ΣTL+は、T1HCで設定します。
小区間Tでの‘L’レベル幅はT1LCで設定できるので、大区間Pでの総‘L’レベル区間幅ΣTLは、
になります。
T1LC=03H、T1HC=0B4Hの場合は、
‘L’レベル比RLは、
となります。また、T1LC=0FFH,T1HC=0FFHの場合は、
‘L’レベル比RLは、
となります。
パルスのビット長と設定できるパルス幅の関係を次に示します。
![]() T1HC、T1LCは10進数です。[T1HC]は有効ビット値です。 |
ビット長 [BIT] |
T1LC | T1HC | ΣTL | TP[Ttc] | 精度 | |||
min. | max. | min. | max | min. | max | |||
16 | 0 | 255 | 0 | 255 | 0 | 65535 | 65535 | 1/65535 |
15 | 0 | 255 | 0 | 127 | 0 | 32767 | 32767 | 1/32767 |
14 | 0 | 255 | 0 | 63 | 0 | 16383 | 16383 | 1/16383 |
13 | 0 | 255 | 0 | 31 | 0 | 8191 | 8191 | 1/8191 |
12 | 0 | 255 | 0 | 15 | 0 | 4095 | 4095 | 1/4095 |
11 | 0 | 255 | 0 | 7 | 0 | 2047 | 2047 | 1/2047 |
10 | 0 | 255 | 0 | 3 | 0 | 1023 | 1023 | 1/1023 |
9 | 0 | 255 | 0 | 1 | 0 | 511 | 511 | 1/511 |
![]() T1HCは、表7で示される有効ビットでの値を示しています。たとえば、11ビット長の場合では、ビット7からビット5が有効なので、最大値が7となっています。 |
・T1HRの値 1100 0000B
・T1LRの値 0000 0000B
・パルスジェネレータ14ビットの設定値
小区間Tには次の2種類のパルスが出力され、大区間P内に(1)のパルスが(64-T1HC)個、(2)のパルスがT1HC個出力されます。
出力波形とT1HC,T1LCの関係の詳細は「付録編」「第17章 ビット長可変パルスジェネレータ」を参照してください。
![]()
|
[←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1999