1. 程式人生 > >《微機原理與介面技術》第五章——定時器/計數器和8253A

《微機原理與介面技術》第五章——定時器/計數器和8253A

雖然寫這個部落格主要目的是為了給我自己做一個思路記憶錄,但是如果你恰好點了進來,那麼先對你說一聲歡迎。我並不是什麼大觸,只是一個菜菜的學生,如果您發現了什麼錯誤或者您對於某些地方有更好的意見,非常歡迎您的斧正!

第1節——定時器和計數器的概念

計數/Counter:統計某物件的數量(典型的計數物件是脈衝)

定時/Timer:定時的本質是計數。當計數物件出現的“時間間隔”固定且已知,則

                    

定時時間=計數數量×時間間隔

第2節——8253A的結構和工作原理

8253A的結構和基本特點

①有3個16位相互獨立的計數器:T0, T1, T2

②每個計數器都可以按照二進位制二—十進位制計數

③每個計數器可設定6種不同的工作方式

④每個計數器可以預置計數初值(時間常數)

⑤計數器的當前計數值可被CPU讀出

 

8053A的外部引腳【24腳,+5V】

功能引腳(面向CPU的訊號線)

功能引腳(面向I/0的訊號線)

①資料匯流排D0~D7

三態輸出/輸入線:資料、命令和狀態

⑥時鐘訊號CLK

計數的物件:每輸入1個脈衝便計數1次。

CLK 0、CLK 1、CLK 2

②片選線(CS)

低電平有效。由地址譯碼的結果控制

⑦門控訊號GATE

控制計數的啟動、暫停、禁止

具體功能和工作方式有關

GATE0、GATE1、GATE2

③ 讀訊號(RD)

低電平有效。對8253A暫存器進行讀操作

⑧計數器輸出OUT

輸出特定波形標識定時或計數完畢或計數過程

OUT0、OUT1、OUT2

④寫訊號(WR)

低電平有效。對8253A暫存器進行寫操作

 

⑤地址線A1A0

接到系統地址匯流排的A1A0

A1A0用於選擇8253A內部暫存器。

 

8253A內部有6個模組

①3個獨立的計數器

        結構完全相同,完成計數過程

②資料匯流排緩衝器

        與CPU資料匯流排D0~D7相連

             寫入命令字

             寫入計數初值

             讀出計數初值或當前值

③控制命令暫存器

         接收控制命令,選擇計數器及設定工作方式

④讀寫邏輯

         根據CPU讀/寫訊號地址訊號選擇資料傳輸方向和埠

計數器工作原理

通過控制命令結合GATE,以某種特定方式對CLK脈衝進行計數並在OUT端輸出相應波形。

計數初值C的確定

計數初值C決定了計數的次數或定時的長度

①單純的計數:直接設定

②作為定時用,把時間L轉成相應的計數C

假設時鐘週期為TCLK (或頻率fCLK)

C = L / TCLK = L * fCLK

例: 定時 5ms , 時鐘1.19318MHz,

則 C = L * fCLK = 5*10-3 * 1.19318 * 106 = 5965

 

8253A的埠選擇和操作

埠選擇:4個埠:T0,T1,T2,控制埠

CS

片選

RD

讀操作

WD

寫操作

A1

地址線

A0

地址線

選中的物件

操作

0

1

0

0

0

T0

寫入“計數初值”

0

1

0

0

1

T1

寫入“計數初值”

0

1

0

1

0

T2

寫入“計數初值”

0

1

0

1

1

控制暫存器

寫“工作方式控制字”

0

0

1

0

0

T0

讀“當前計數值”

0

0

1

0

1

T1

讀“當前計數值”

0

0

1

1

0

T2

讀“當前計數值”

0

0

1

1

1

三態

 

1

×

×

×

×

三態

 

0

1

1

×

×

三態

 

第3節——8253A的初始化和基本操作

●控制埠:工作方式控制字(選擇計數器並設定工作方式)

①選擇計數器:T0,T1或T2

②確定讀寫資料方式(8位或16位,位元組位置和順序)

③確定計數器的工作方式(方式0~5)

④確定計數的機制(二進位制碼或BCD碼)

●T0或T1或T2埠:設定計數初值

寫入計數初值:向選定的計數器寫入計數初值

工作方式控制字(CW)

①選擇計數器:T0,T1或T2

②確定讀寫資料方式(8位或16位,位元組位置和順序)

③確定計數器的工作方式(方式0~5)

④確定計數的機制(二進位制碼或BCD碼)

D7

D6

D5

D4

D3

D2

D1

D0

SC1

SC0

RW1

RW0

M2

M1

M0

BCD

計數器選擇

讀寫資料方式

工作方式

碼制

0 0 :T0

0 1 :T1

1 0 :T2

1 1 :不用

00:不用(鎖存

0 1 :低8位

1 0 :高8位

1 1 :先低後高

0 0 0 :方式0

0 0 1 :方式1

X 1 0 :方式2

X 1 1 :方式3

1 0 0 :方式4

1 0 1 :方式5

0 :二進位制

1 :BCD

課堂作業1

工作方式控制字  晶片地址304(即304~307且控制埠307

例: T1 ,方式0,二進位制,計數初值BYTEH:BYTEL。

MOV DX, 307H                ; 命令口,把16位資料307H送到DX暫存器

MOV AL, 01110000B      ;工作方式控制字,把控制字0111000B送到AL暫存器

OUT DX, AL                    ;把AL中的控制字寫入命令暫存器

MOV DX, 305H                ; T1資料口,把305H送到DX暫存器

MOV AL, BYTEL             ;計數初值低位元組

OUT DX, AL

MOV AL, BYTEH            ;計數初值高位元組

OUT DX, AL

●8253A的基本操作:

①獲取當前計數值:直接讀取或鎖存命令

②獲得工作狀態:獲得狀態字

③通過向控制埠寫特定的字完成

●鎖存命令:

 

課堂作業2

鎖存命令  晶片地址304(即304~307且控制埠307)

例:讀出T2當前計數值(16位),並裝入AX暫存器。

MOV DX, 307H              ;命令口            

MOV AL, 10000000B    ;T2的鎖存命令

OUT DX, AL                  ;寫入命令暫存器

MOV DX, 306H             ;T2資料口

IN AL, DX                     ;讀T2的當前計數值的低8位

MOV BL , AL

IN AL, DX                     ;讀T2的當前計數值的高8位

MOV AH, AL

MOV AL , BL

第4節——8253A的工作方式和應用 

●工作方式:方式0~方式5

●工作方式的主要差異:

①OUT訊號或波形

②計數的啟動方式(軟體啟動、硬體啟動(GATE))

③初值(/重新)裝入的生效方式

 

●方式0:計數結束中斷方式

基本特點:典型的事件計數用法

①寫入工作方式控制字(CW, Control Word)

         OUT開始變成高電平

②寫計數初值C初值暫存器

         下一個CLK週期把C裝入減1計數器

         GATE高電平時立即開始計數。

③計數期間OUT維持低電平。

④當減1計數器減到0時OUT變為電平。

⑤當重新寫入C後,立即開始新一輪計數

       OUT再次變成低電平

       計數期間,如果重寫計數寫計數值,立即重新開始計數。

GATE:高電平:允許/繼續計數 ;低電平:禁止計數

⑦OUT可作中斷請求訊號【特點:被響應後才變低】

例子:計數初值C=4

方式1 

同方式0很類似

①寫入控制字CW後,OUT變電平。

②寫入計數初值C

③GATE上跳時,C裝入減1計數器,開始計數,OUT變

④整個計數過程中OUT維持低電平,直到計數結束才變高。

       OUT負脈衝寬度 = 計數初值 * CLK週期

⑤如果計數過程中GATE出現上跳,則重新計數。

⑥計數過程中如果重寫初值,則要等當前計數結束且GATE再次出現上升沿後,才能開始新的計數

方式1的應用場合:

改變計數初值C可產生不同寬度的低電平,獲取可變寬脈衝訊號

實現脈寬調製

 

方式2:週期性負脈衝輸出,分頻器

若計數初值為N,則OUT輸出的頻率為CLK的1/N。又稱N分頻器

①寫入控制字CW,OUT變成高電平。

②寫入計數初值C

③若GATE為高電平時,下一個CLK週期把C寫入減1計數器,並開始計數。

④計數過程中OUT保持電平,直到倒數第2個CLK。

⑤減一計數到1時,OUT輸出1個負脈衝寬度為1個CLK週期

自動裝入C, OUT再次變成高電平,開始新一輪計數。

注意

      方式2中啟動動計數器的方法有兩種

      軟體啟動過程:裝入計數初值

      硬體啟動過程:GATE上升沿

方式2的應用場合:

      OUT正脈衝寬度 =(計數初值 - 1)x CLK週期

      OUT負脈衝寬度 = 1個CLK週期。

方式3:週期性方波輸出

①與方式2基本相同:自動裝入計數初值C,迴圈計數

②不同之處:OUT輸出佔空比為1:1或近似1:1的方波

       C為偶數時,OUT的高、低電平前後各一半

       C為奇數時:

                前(N+1) / 2個CLK:OUT高電平

                後(N -1) / 2個CLK:OUT低電平。

●特點:

減1計數器每次計數減2

②OUT輸出方波訊號

③計數器有軟體啟動和有硬體啟動兩種方式。

方式4:單次負脈衝輸出

計數過程和特點

軟體啟動計數:寫入計數初值C觸發計數器開始工作:

設定方式後,OUT為電平;

②寫入C後,在下一個CLK開始計數

③計數期間OUT保持電平

④計數結束輸出1個CLK脈衝,然後OUT恢復電平。

⑤GATE作用

     高電平:允許計數;

     低電平:停止(不是暫停)計數

     恢復高電平:重新開始新一輪的計數。

⑥重寫新的計數初值

     不影響當前計數過程,直到下一輪計數時才生效

方式5:單次負脈衝輸出

同方式4類似,單次負脈衝輸出,硬體觸發

       GATE上升沿觸發計數開始

①寫入C後,不立即計數,而要由GATE上升沿啟動計數。

②計數過程中OUT維持高電平

③計數到0後,OUT輸出1個CLK的負脈衝後恢復高電平。

④在計數過程中,如GATE出現上升沿,立即開始新一輪計數

6種工作方式的總結

●差異

①計數過程和計數結束時OUT電平的高低和持續時間(波形)

②單次計數或自動迴圈計數

③計數的啟動方式:軟體(寫計數初值)或硬體(GATE)

●方式0和方式 1

①輸出波形類似

②無自動重灌C的能力

③啟動計數的觸發訊號不一樣

       方式0:軟體(寫初值)

       方式1:硬體(GATE上沿)

●方式2 (N分頻器)和方式3 (方波發生器)

①計數初值自動重灌,迴圈計數

②OUT頻率:CLK的N分之一;

③方式2:計數時高電平,結束時1個CLK負脈衝

④方式3:前一半為高,後一半為低

●方式4 (單次負脈衝)和5方式(單次負脈衝)

①輸出波形相同:單次負脈衝

②無自動重灌能力

③啟動計數方式不同:方式4:軟體,方式5:硬體

●方式2 (N分頻)和方式4與5

①方式2:週期性負脈衝

②方式4與5:單次負脈衝