マイコン-08-タイマーの原理

タイマー

概観

検出・制御には、カウント機能やタイミング機能が多用されています。これらのタイミング/カウントの機能を実現するには、ソフトウェアタイミング、デジタル回路のハードウェアタイミング、およびプログラム可能なタイミング/カウンターの 3つの主な方法があります。

  1. ソフトウェアタイミング
    ソフトウェアタイミングは周期的なプログラムであり、このプログラムセグメントの実行に必要な時間が遅延時間です。

  2. デジタル回路ハードウェアタイミング
    この種類のハードウェアタイミングは、555タイミングチップを使用するなど、小規模な集積回路デバイスを使用して、CPU時間を占有しないタイミング回路を形成しますが、この回路のタイミングは回路内のコンポーネントパラメーターに依存します。ハードウェア回路を接続した後、タイミング時間を変更するには、回路内の電子部品を変更する必要があり、非常に使い勝手が悪い。

  3. プログラマブルタイマー/カウンター
    プログラマブルタイマー/カウンターは、マイクロコンピューターシステムの設計とアプリケーションを容易にするために開発されました。これは、ハードウェアタイミングだけでなく、ソフトウェアを通じてタイミング時間を簡単に決定および変更できます。ソフトウェアプログラミングは、タイミングとカウントの要件。

###構造

タイマー/カウンター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 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 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ピンに連続矩形波を出力することがわかっています。

img

図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のタイマー割り込みを使用します。

フローチャート:

img

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タイマー割り込みと遅延プログラムを使用

フローチャート:

img

    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

225元記事公開 ウォンの賞賛140 ビューに25万+を

おすすめ

転載: blog.csdn.net/jankin6/article/details/105402846