8051マイクロコントローラーのタイマーとカウンターとそのアプリケーション

問題を排除するために楽器を試してください





多くの マイクロコントローラアプリケーション パルス列の周波数やコンピュータアクション間の正確な内部時間遅延の生成などの外部イベントのカウントが必要です。これらのタスクは両方ともソフトウェア技術で実装できますが、カウント用のソフトウェアループとタイミングでは正確な結果が得られず、より重要な機能は実行されません。これらの問題を回避するには、マイクロコントローラーのタイマーとカウンターが、単純で低コストのアプリケーションに適したオプションです。これらのタイマーとカウンターは、 8051マイクロコントローラーの割り込み

には2つの16ビットタイマーとカウンターがあります 8051マイクロコントローラー :タイマ0とタイマ1。どちらのタイマも16ビットレジスタで構成されており、下位バイトはTLに格納され、上位バイトはTHに格納されます。タイマーは、カウンターとしてだけでなく、カウンターへのクロックパルスのソースに依存するタイミング操作にも使用できます。




タイマーとカウンター

タイマーとカウンター

8051マイクロメータのカウンタとタイマーには、TMOD(タイマーモードレジスタ)とTCON(タイマー制御レジスタ)の2つの特殊機能レジスタが含まれています。これらはアクティブ化と設定に使用されます。 タイマーとカウンター



タイマーモード制御(TMOD): TMODは、タイマーまたはカウンターとタイマーのモードを選択するために使用される8ビットレジスタです。下位4ビットはタイマ0またはカウンタ0の制御動作に使用され、残りの4ビットはタイマ1またはカウンタ1の制御動作に使用されます。このレジスタはSFRレジスタに存在し、SFRレジスタのアドレスは89番目です。

タイマーモード制御(TMOD)

タイマーモード制御(TMOD)

ゲート: ゲートビットが「0」に設定されている場合、同じ方法で「ソフトウェア」タイマーを開始および停止できます。ゲートが「1」に設定されている場合、ハードウェアタイマーを実行できます。

C / T: C / Tビットが「1」の場合、それはカウンタモードとして機能しており、C +を設定した場合も同様です。
= / Tビットは「0」で、タイマーモードとして機能しています。


モード選択ビット: M1とM0はモード選択ビットであり、タイマー動作を選択するために使用されます。タイマーを操作するための4つのモードがあります。

モード0: これは13ビットモードであり、タイマー動作が「8192」パルスで完了することを意味します。

モード1: これは16ビットモードです。つまり、タイマー動作は「65535」の最大クロックパルスで完了します。

モード2: このモードは8ビットの自動リロードモードです。つまり、タイマー動作は「256」クロックパルスのみで完了します。

モード3: このモードはスプリットタイマーモードです。つまり、T0の値をロードし、T1を自動的に開始します。

モード選択ビット

モード選択ビット

モード選択8051のタイマーとカウンターの値

タイマーとカウンターのモード選択値

タイマーとカウンターのモード選択値

タイマー制御レジスター(TCON):TCONは、マイクロコントローラーのカウンターとタイマーの動作を制御するために使用される別のレジスターです。これは8ビットレジスタであり、上位4ビットがタイマーとカウンタを担当し、下位ビットが割り込みを担当します。

タイマ制御レジスタ(TCON)

タイマ制御レジスタ(TCON)

TF1: TF1は「timer1」フラグビットを表します。 timer1で時間遅延を計算するときはいつでも、TH1とTL1は自動的に「FFFF」である最大値に達します。

例:while(TF1 == 1)

TF1 = 1の場合は常に、フラグビットをクリアしてタイマーを停止します。

TR1: TR1は、timer1のスタートビットまたはストップビットを表します。このタイマーの開始は、ソフトウェア命令またはハードウェア方式を介して行うことができます。

例:gate = 0(ソフトウェア命令によるタイマー1の開始)
TR1 = 1(開始タイマー)

TF0: TF0は「timer0」フラグビットを表します。 timer1で時間遅延を計算するときはいつでも、TH0とTL0は自動的に「FFFF」である最大値に達します。

例:while(TF0 == 1)
TF0 = 1の場合は常に、フラグビットをクリアしてタイマーを停止します。

TR0: TR0は、「timer0」スタートビットまたはストップビットを表します。このタイマーの開始は、ソフトウェア命令またはハードウェア方式を介して行うことができます。

例:gate = 0(ソフトウェア命令によるタイマー1の開始)
TR0 = 1(開始タイマー)

8051マイクロコントローラーの時間遅延計算

8051マイクロコントローラーは11.0592MHzの周波数で動作します。

周波数11.0592MHz = 12パルス

1クロックパルス= 11.0592MHz / 12

F = 0.921 MHz

時間遅延= 1 / F

T = 1 / 0.92MHz

T = 1.080506 us(「1」サイクルの場合)

1000us = 1MS

1000ms = 1秒

遅延プログラムを計算する手順

1.まず、「Timer0」と「Timer1」のTMODレジスタ値をさまざまなモードでロードする必要があります。たとえば、timer1をmode1で操作する場合は、「TMOD = 0x10」として構成する必要があります。

2.タイマーをモード1で動作させるときは常に、タイマーは65535の最大パルスを取ります。次に、計算された時間遅延パルスを最大パルスから減算し、その後16進値に変換する必要があります。この値は、timer1の上位ビットと下位ビットにロードする必要があります。このタイマー動作は、 マイクロコントローラに埋め込まれたC

例:500usの時間遅延

500us / 1.080806us

461パルス

P = 65535-461

P = 65074

16進数で変換された65074 = FE32

TH1 = 0xFE

TL1 = 0x32

3.タイマー1「TR1 = 1」を開始します

4.フラグビット「while(TF1 == 1)」を監視します

5.フラグビット「TF1 = 0」をクリアします

6.タイマー「TR1 = 0」をクリートします

プログラム例:

プログラム-1

プログラム-1

プログラム-2

プログラム-2

プログラム-3

プログラム-3

8051のカウンター

C / Tビットをハイに保つことでカウンタを使用できます。つまり、TMODレジスタのロジック「1」です。理解を深めるために、タイマー1をカウンターとして使用するプログラムを1つ挙げました。ここでは、LEDは8051ポート2に接続され、スイッチはtimer1ピンP3.5に接続されているため、スイッチが押されると、値がカウントされます。それ以外の場合は、入力としてこのカウンターピンに外部接続されたセンサーがこのカウント操作を実行します。

カウンタープログラム

カウンタープログラム

8051でのタイマーとカウンターのアプリケーション

8051のデジタルカウンター

8051のデジタルカウンターは、上記のようにマイクロコントローラーをプログラミングし、センサーシステムを接続することで実現されます。このオブジェクトカウンターは、近くの障害物を検出し、 マイクロコントローラのピン 06.オブジェクトがセンサーを通過すると、マイクロコントローラーはIRセンサーから割り込み信号を取得し、7セグメントディスプレイに表示されるカウントをインクリメントします。

8051のデジタルカウンター

8051のデジタルカウンター

8051マイクロコントローラを使用した時間遅延回路

次の図は、LEDを効果的に切り替えるためにタイマー操作を実装する方法を示しています。 LEDのセットの時間遅延動作は、上記の方法でマイクロコントローラーにプログラムされます。ここでは、LEDのセットが共通の供給システムでポート2に接続されています。時間遅延に基づいてこの回路がオンになったとき マイクロコントローラのプログラム 適切に、これらのLEDはオンになります。

時間遅延回路

時間遅延回路

これはすべて、基本的なプログラミングおよびアプリケーション回路を備えた8051マイクロコントローラータイマーとカウンターに関するものです。この記事の情報が、概念をよりよく理解するのに十分なデータを提供したことを願っています。さらに、8051とその回路のプログラミングに関する技術的な疑問がある場合は、以下にコメントしてお問い合わせください。

写真クレジット: