8254 インターフェース一般実験(組立・インターフェース技術コース)


序文

北京交通大学の学部生向けの必修コース - 8254 アセンブリおよびインターフェース技術のルーチン実験。


1. 実験目的

1. 8254とマイコンインターフェースの接続方法を習得し、8254の基本動作原理とプログラミング方法を理解します。
2. 8254 タイマー/カウンターのさまざまな動作モードの特性を理解し、実験波形を観察することで 8254 のいくつかの動作モードの類似点と相違点を直感的に理解します。

2. 実験内容

実験1

8254 カウンタ 0 を動作モード 0 に設定し、カウンタの初期値を N (N<0FH) に設定します。実験台上のシングルパルスをCLK0に接続し、手動でシングルパルスを1つずつ入力し、L0とオシロスコープを使ってOUT0のレベル変化を観察します(N+1パルス入力後、OUT0がハイレベルになり、L0が点灯します)

アイデア:
1. まず、8254 を初期化する必要があります。コマンド ポート 283H にモード コマンド 00010000 を入力してカウンタ 0 を選択し、下位バイトのみ、動作モード 0、バイナリ カウント 2 を書き込み、その後、初期カウント値 3 をカウンタ 0
(この数字は任意です)
実験現象:
電球: 電球 L0 は最初は消灯状態ですが、手動で 4 (N+1) パルス与えると電球は明るく点灯し続けます。留まるために。
オシロスコープ: オシロスコープは最初は低レベルですが、手動で 4 (N+1) パルスを与えると、オシロスコープは高レベルになり、変化しなくなります。
結果分析:
モード 0 は、最初のパルスが手動で与えられたときにのみ初期値レジスタの値をデクリメント カウンタに入れ、2 番目のパルスが到着すると 1 ずつ減分し始めるため、電球とオシロスコープは N +1 パルスで表示されます。明るくなってハイレベルになる前に。また、モード 0 では、カウント完了後、出力信号は常にハイレベルになるため、電球とオシロスコープは一定の光とハイレベルの状態を維持します。
コードは以下のように表示されます。

code segment
start :
mov dx, 283h; 命令口地址
mov al, 00010000b; 计数器0;只写低字节;2方式;二进制
out dx, al; 初始化

mov dx, 280h; 选择计数器0
mov ax, 03h; 计数器初值是3
out dx, al

code ends
end start

実験2

それぞれ動作モード 2 と 3 で波形を表示するプログラムを作成します。モード 2 の出力周波数は 1000Hz、モード 3 の出力周波数は 2000Hz である必要があります。この実験では、8254 のタイマー/カウンタ 0 を使用します。GATE0 は K1 を介して +5V またはグランドに接続され、CLK0 は 1MHZ クロック パルスに接続され、OUT0 は出力波形を観察するためにオシロスコープに接続されています (図 1-2 を参照)。接続用)。
図1-2

方法 2:

  • アイデア:
    入力パルス周波数が 1MHZ であるため、オシロスコープの出力周波数を 1000HZ にするには、初期カウント値を 1MHZ / 1000HZ = 1000 として計算できます。そのため、最初に初期化し、カウンター 0 を選択し、最初に上位バイトを入力し、次に、下位ワード セクション (モード 2) が 2 進数でカウントし、最初のカウント値 1000 をカウンタに入力します。
  • 実験現象:
    1000HZの波形と値をオシロスコープで観察できる
  • コードは以下のように表示されます
code segment
start :
mov dx, 283h; 命令口地址
mov al, 00110100b; 计数器0;先低字节再高字节;2方式;二进制
out dx, al

mov dx, 280h; 选择计数器0
mov ax, 3e8h; 计数器初值1000
out dx, al; 先写低字节
mov al, ah;
out dx, al; 再写高字节
code ends
end start

方法 3:

  • アイデア: 方法 2 と同様ですが、最初のカウント値が 1MHZ / 2000HZ=500 である点が異なります。
  • コードは以下のように表示されます。
code segment
start :
mov dx, 283h; 命令口地址
mov al, 00110110b; 计数器0;先低字节再高字节;3方式;二进制
out dx, al; 初始化

mov dx, 280h; 选择计数器0
mov ax, 1f4h; 计数器初值500
out dx, al; 先写低字节
mov al, ah
out dx, al; 再写高字节
code ends
end start

実験3

タイマ 0 とタイマ 1 のカスケード モードを使用すると、発光ダイオードがそれぞれ 0.5 秒間周期的に点灯および消灯します。(接続については図 1-3 を参照)
図1-3

アイデア:
方法 2 と 3 の両方が自動リロード回数の初期値であることがわかっており、方法 3 の出力波形はほぼハイレベル:ローレベル = 1:1 であるため、ここではカウンタ 0 を選択してモードを使用します方法 3 を使用するには、2 とカウンタ 1 を接続し、カウンタ 0 の OUT 信号をカウンタ 1 の入力クロックとして使用します。カウンタ 0 に接続されているクロック信号は 1MHZ であるため、LED を 0.5 秒ずつ周期的にオン/オフするには、周期 1 秒、周波数 1/1 秒 = 1HZ の方形波を生成する必要があります。1HZの方形波を生成するには、カウンタ1とカウンタ0の初期カウント値の積が1MHZ / 1HZ = 1000000に等しくなる必要があります。ここでは、カウンタ0とカウンタ1の初期カウント値を次のように設定します。 1000 を指定して実験を実行すると、期待どおりの結果が得られます。

  • コードは以下のように表示されます。
code segment
assume cs : code
start :
mov dx, 283h; 命令口地址
mov al, 00110100b; 计数器0,先写低字节再写高字节,方式22进制
out dx, al

mov dx, 280h;  计数器0
mov al, 1000;   计数初值1000
out dx, al
mov al, ah
out dx, al;


mov dx, 283h; 命令口地址
mov al, 01110110b; 计数器1,先写低字节再写高字节,方式32进制
out dx, al

mov dx, 281h; 计数器1
mov al, 1000;   计数初值1000
out dx, al
mov al, ah
out dx, al;

code ends
end start

4. 実験的プログラミングのヒント

4 つの実験プログラム (それぞれ 0、2、3、カスケード モード) を作成し、それぞれ実行します。さまざまなモードの出力波形を観察する場合、テスト結果の原因を分析する必要があります。

5. 実験手順

1. 回路図に従って実験回路を正しく接続します (黒い太いワイヤーを接続する必要があります)。
2. 実験原理を正しく理解する。
3. 実験プログラムを作成し、コンピュータ上でデバッグし、実験結果を観察します。

6. 考える質問

観測される0モードとはどのような波形でしょうか?なぜこのような現象が起こるのでしょうか?

波形は次のとおりです。最初にローレベルが一定期間続き、その後ハイレベルに変化します。
理由: 初期カウント値を書き込むとカウンタがカウントを開始し、out 信号が Low レベルになり、減算カウンタの内容が 0 になるまで Low を維持し、減算カウンタの内容が 0 になるまで動作を停止し、out 信号が High レベルになって Low を維持します。 . レベルが高い。

おすすめ

転載: blog.csdn.net/weixin_63614711/article/details/131303138