タイマー
概観
検出・制御には、カウント機能やタイミング機能が多用されています。これらのタイミング/カウントの機能を実現するには、ソフトウェアタイミング、デジタル回路のハードウェアタイミング、およびプログラム可能なタイミング/カウンターの 3つの主な方法があります。
-
ソフトウェアタイミング
ソフトウェアタイミングは周期的なプログラムであり、このプログラムセグメントの実行に必要な時間が遅延時間です。 -
デジタル回路ハードウェアタイミング
この種類のハードウェアタイミングは、555タイミングチップを使用するなど、小規模な集積回路デバイスを使用して、CPU時間を占有しないタイミング回路を形成しますが、この回路のタイミングは回路内のコンポーネントパラメーターに依存します。ハードウェア回路を接続した後、タイミング時間を変更するには、回路内の電子部品を変更する必要があり、非常に使い勝手が悪い。 -
プログラマブルタイマー/カウンター
プログラマブルタイマー/カウンターは、マイクロコンピューターシステムの設計とアプリケーションを容易にするために開発されました。これは、ハードウェアタイミングだけでなく、ソフトウェアを通じてタイミング時間を簡単に決定および変更できます。ソフトウェアプログラミングは、タイミングとカウントの要件。
###構造
タイマー/カウンターT0は、特殊機能レジスタTH0、TL0、
タイマ/カウンタT1は、特殊機能レジスタTH1およびTL1で構成されています。
タイマーとカウンターの2つの動作モード、4つの動作モード(モード0、モード1、モード2、モード3)があります。
- カウンターモードは、2つのピンT0(P3.4)とT1(P3.5)に追加される外部パルスをカウントすることです。
- タイマー動作モードは、12のオンチップ周波数分割後のマイクロコントローラーのクロック発振器信号の内部パルス信号をカウントすることです。
### 4つの作業方法
M1M0 | ウェイ | 特徴 |
---|---|---|
0 0 | 0 | 13ビットタイマー/カウンター |
0 1 | 1 | 16ビットタイマー/カウンター |
1 0 | 2 | 時定数が自動的に読み込まれる8ビットタイマー/カウンター |
1 1 | 3 | T0を2つの8ビット独立カウンターに分割し、モード3をT1に設定すると動作を停止します |
###外部入力カウント信号の要件
-
タイマ/カウンタがカウンタモードで動作するとき、カウントパルスは外部入力ピンT0またはT1から来ます。
-
入力信号が負の遷移を生成すると、カウンターの値が1つ増加します。
-
各マシンサイクルのS5P2の間に、外部入力ピンT0またはT1がサンプリングされます。
###タイマー/カウンターのプログラミングとアプリケーション
手順
(1)動作モードを決定します。つまり、制御ワードをモード制御レジスタTMO Dに書き込みます。
(2)タイマ/カウンタの初期値を計算し、TLとTHに初期値を書き込む。
(3)必要に応じて、割り込み制御レジスタIEに初期値を設定し、タイマ割り込みをオープンするかどうかを決定します。
(4)動作制御レジスタTCONにTRxを設定して、タイマ/タイマを起動します。
練習
\ 2. AT89S51マイクロコントローラーにはプログラム可能なタイマー/カウンターがいくつありますか?彼らはどんな種類の作業モードを持つことができますか?作業方法は何ですか?選択と設定の方法は?それぞれの特徴は何ですか?
タイマー/カウンターの4つの動作モードは、次の表に示すように、TMODのM1 M0 2ビットによって決定されます。
M1M0 | ウェイ | 特徴 |
---|---|---|
0 0 | 0 | 13ビットタイマー/カウンター |
0 1 | 1 | 16ビットタイマー/カウンター |
1 0 | 2 | 時定数が自動的に読み込まれる8ビットタイマー/カウンター |
1 1 | 3 | T0を2つの8ビット独立カウンターに分割し、モード3をT1に設定すると動作を停止します |
7。AT89S51 MCUの水晶周波数は6MHzですが、タイマー値を0.1msと10msにする必要があり、タイマー0がモード0、モード1、モード2で動作する場合、タイマーの初期値はどうなりますか?
****回答:****(1)0.1ミリ秒
方法0:
0.1×10-3 =(213-X)×12 /(6×106)
つまり、X = 8142 = 1111111001110B
T0 01110Bの下位5ビット= 0EH
T0の上位8ビット:11111110B = FEH
方法1:0.1×10-3 =(216-X)×12 /(6×106)
つまり、X = 65486 = FFCEH
方法2:0.1×10-3 =(28-X)×12 /(6×106)
つまり、X = 206 = CEH
(2)10ms
方法0:10×10-3 =(213-X)×12 /(6×106)
つまり、X = 3192 = 110001111000B
T0下位5桁11000B = 18H
T0の上位8ビット:01100011B = 63H
方法1:10×10-3 =(216-X)×12 /(6×106)
つまり、X = 60536 = EC78H
方法2:この場合、最長のタイミングは512μsであり、一度に10msでタイミングを達成できず、0.1msのタイミングサイクルを100回使用できます。
11。タイマー/カウンターを外部割り込みソースとして初期化するにはどうすればよいですか?プログラムを通じて説明する例としてT0を取り上げます。
*回答:*初期化手順:
```
MOV TMOD、#06H
MOV TL0, #0FFH
MOV TH0, #0FEH
SETB TR0
SETB EA
SETB ET0
```
14。MCUクロックの発振周波数は6MHzであり、T0タイマーを使用してP1.1ピンに連続矩形波を出力することがわかっています。
図9-23質問15の波形
****解決策:****最初にタイミング定数を計算します。
100us 方式0 Tc=FE0EH; 方式1 Tc=FFCEH; 方式2 Tc=CEH
150us 方式0 Tc=FD15H; 方式1 Tc=FFB5H; 方式2 Tc=B5H
****メソッド1 ****:メソッド1のタイマー割り込みを使用します。
フローチャート:
ORG 0000H
LJMP START
ORG 000BH
LJMP TINT0
ORG 0100H
START: MOV TMOD, #01H
MOV TL0, #0CEH
MOV TH0, #0FFH
SETB TR0
SETB EA
SETB ET0
SETB 20H.0
SETB P1.1
SJMP $
TINT0: JNB 20H.0, NEXT
MOV TL0, #0B5H
MOV TH0, #0FFH
CLR P1.1
CPL 20H.0
SJMP LAST
NEXT: MOV TL0, #0CEH
MOV TH0, #0FFH
SETB P1.1
CPL 20H.0
LAST:RETI
****メソッド2 ****:メソッド2タイマー割り込みと遅延プログラムを使用
フローチャート:
ORG 0000H
LJMP START
ORG 000BH
LJMP TINT0
ORG 0100H
START: MOV TMOD, #02H
MOV TL0, #0CEH
MOV TH0, #0CEH
SETB TR0
SETB EA
SETB ET0
SETB 20H.0
SETB P1.1
SJMP $
TINT0: JNB 20H.0, NEXT
CLR TR0
CLR P1.1
LCALL DELAY
CPL 20H.0
SETB TR0
SJMP LAST
NEXT: SETB P1.1
CPL 20H.0
LAST: RETI
DELAY: MOV R7, #8
DELAY1: DJNZ R7, DELAY1
RET