微機原理第9章-計數器和定時器_第1頁
微機原理第9章-計數器和定時器_第2頁
微機原理第9章-計數器和定時器_第3頁
微機原理第9章-計數器和定時器_第4頁
微機原理第9章-計數器和定時器_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

定時與計數技術及應用定時/計數器——8253本章內容了解定時/計數技術的應用情況掌握8253的連接與編程學習目的熟習8253的工作方式9.1概述定時計數技術在計算機中具有極為重要的作用。微機控制系統中,常要按一定的采樣周期對處理對象進行采樣或定時檢測某些參數等,用計數器對外部事件計數,即記錄外設提供的脈沖個數。在實時操作系統和多任務操作系統中,可以利用定時器產生的定時中斷進行進程調度。

定時器和計數器都由數字電路中的計數電路構成。前者記錄高精度晶振脈沖信號,因此可以輸出準確的時間間隔,稱為定時器,而當記錄外設提供的具有一定隨機性的脈沖信號時,它主要反映脈沖的個數,稱為計數器。

定時的方法有3種:軟件定時、不可編程的硬件定時和可編程的定時。一、定時和計數1.軟件定時

根據CPU執行每條指令需要一定的時間,重復執行一些指令就會占用一段固定的時間,通過適當地選取指令和循環次數便很容易實現定時功能,這種方法不需要增加硬件,可通過編程來控制和改變定時時間,靈活方便,節省費用。缺點是CPU重復執行的這段程序的本身并沒有什么具體目的,僅為延時,從而降低了CPU利用率。2.不可編程的硬件定時

這種方法采用數字電路中的分頻器將系統時鐘進行適當的分頻產生需要的定時信號;也可以采用單穩電路或簡易定時電路(如常用的555定時器)由外接RC電路控制定時時間。但是,這種定時電路在硬件接好后,定時范圍不易由程序來改變和控制,使用不甚方便,而且定時精度也不高。3.可編程的定時

在微機系統中,常采用軟件、硬件相結合的方法,用可編程定時計數器芯片構成一個方便靈活的定時計數電路。這種電路不僅定時值和定時范圍可用程序確定和改變,而且具有多種工作方式,可以輸出多種控制信號,它由微處理器的時鐘信號提供時間基準,故計時也精確穩定。如Intel8253。

二、8253的基本功能和內部結構(1)3個獨立的16位計數器,最大計數范圍為0~65535;(2)每個計數器均可以按二進制或二—十進制計數;(3)計數器速率可達2MHz;(4)可編程6種不同的工作方式;(5)所有輸入和輸出都與TTL兼容。

8253具有較好的通用性和使用靈活性,幾乎適合于任何一種微處理器組成的系統。

1.8253PIT的基本功能2.8253的內部結構

8253的內部結構如圖9.1所示,由數據總線緩沖器、控制寄存器、讀/寫控制邏輯和計數器等部分組成。

圖9.18253的內部結構示意圖(1)數據總線緩沖器

該緩沖器為8位雙向三態的緩沖器,可直接掛在數據總線上。CPU通過8位數據總線D0~D7傳送如下信息:

①向控制寄存器寫入控制字。②向某計數器寫入計數初值。③CPU通過緩沖器讀取計數器的當前計數值(2)讀/寫控制邏輯

決定三個計數器和控制字寄存器中哪一個能進行工作,并控制內部總線上數據傳送的方向。

①CS片選信號,低電平有效(此時CPU才能對8253進行讀寫操作),由地址總線經I/O端口譯碼電路產生。

②RD讀信號,低電平有效,此時表示CPU正在讀取所選定的計數器通道中的內容。

③WR寫信號,低電平有效,此時表示CPU正在將計數初值寫入所選中的計數通道中或將控制字寫入控制寄存器中。④A1A0端口選擇信號,8253內部有3個計數器通道和一個控制寄存器端口。當A1A0=00,01,10時表示分別選中計數器通道0,1,2,當A1A0=11時選中控制寄存器端口。(3)控制寄存器

接收從CPU來的控制字,并由控制字的D7、D6位的編碼決定該控制字寫入哪個計數器的控制寄存器,控制寄存器只能寫入,不能讀出。

(4)計數器當8253用作計數器時,加在CLK引腳上脈沖的間隔可以是不相等的;當它用作定時器時,則在CLK引腳應輸入精確的時鐘脈沖,8253所能實現的定時時間,取決于計數脈沖的頻率和計數器的初值,即:定時時間=時鐘脈沖周期Tc×預置的計數初值n。

對8253來講,外部輸入到CLK引腳上的時鐘脈沖頻率不能大于2MHZ,否則需分頻后才能送到CLK端。

圖9.2計數器內部邏輯圖控制單元初值寄存器減1計數器輸出鎖存器內部總線CLKGATEOUT控制單元初值寄存器減1計數器輸出鎖存器內部總線CLK三、8253的引腳信號圖9.38253PIT管腳圖計

0計

1計

2數

線控

線電

8253是一片具有3個獨立通道的16位計數器/定時器芯片,使用單一+5V電源,24引腳雙列直插式封裝,如圖9.3所示1.與CPU的接口信號(1)D0~D7——三態雙向數據線。與CPU數據總線相連, 用于傳遞CPU與8253之間的數據信息、控 制信息和狀態信息;(2)CS——片選信號(ChipSelect),輸入,低電平有效;(3)WR——寫信號,輸入,低電平有效,用于控制CPU對 8253的寫操作,可與A1,A0信號配合以決定 是寫入控制字還是計數初值;(4)RD——讀信號,輸入,低電平有效。用于控制CPU 對8253的讀操作,可與A1,A0信號配合讀取 某個計數器的當前計數值;(5)A0,A1-——地址輸入線。用于8253內部尋址的4個 端口,即3個計數器和一個控制字寄存 器。一般與CPU低位的地址線相連

。A1A0寄存器選擇和操作000000001011110000×100001111×100110011××01010101××寫入計數器0寫入計數器1寫入計數器2寫入控制字寄存器讀計數器0讀計數器1讀計數器2無操作

禁止使用無操作CSRDWR表9.18253讀/寫操作邏輯表

2.與外部設備的接口信號(1)CLK0(CLK1,CLK2)——時鐘脈沖輸入端,用于輸入定時脈沖或計數脈沖信號。CLK可以是系統時鐘脈沖,也可以是由其他脈沖源提供。8253規定加在CLK引腳的輸入時鐘周期不得小于380ns;(2)GATE0(GATE1,GATE2)——門控輸入端,用于外部控制計數器的啟動或停止計數的操作。當GATE為高電平時,允許計數器工作,當GATE為低電平時,禁止計數器工作;(3)OUT0(OUT1,OUT2-)-——計數輸出端。在不同工作方式中,當計數器計數到0時,OUT引腳上必輸出相應的信號。

9.28253的工作方式8253是一種面向微機系統的專用接口芯片,它的每一個計數器都可以按照控制字的規定有6種不同的工作方式,

每種工作方式中都有以下三種情況:*

正常計數的波形圖;*

正在計數過程中改變門控信號GATE后對整個計

數工作的影響;*

正在計數的過程中改變計數值對整個計數工作的

影響。方式0——計數結束中斷方式(InterruptonTerminalCount)方式0的工作時序如圖9.4(a)(b)(c)所示。圖9.4(a)方式0正常計數CW=10LSB=3WRCLKGATEOUT322210FFCW=10LSB=3WRCLKGATEOUT322210FF圖9.4(b)方式0時GATE信號的作用圖9.4(c)方式0時計數過程中改變計數值注意8253寫計數值是由CPU的WR信號控制的,在WR信號的上升沿,計數值被送入對應計數器的計數值寄存器,在WR信號上升沿之后的下一個CLK脈沖才開始計數。如果設置計數初值N,輸出OUT是在寫入命令執行后,第N+1個CLK脈沖之后,才變為高電平的。后面的方式1、2、4、5也有同樣的特點。2.方式1——可編程的單穩態觸發器(ProgrammableOneShort)方式1的工作波形如圖9.5(a)、(b)、(c)所示。

圖9.5(a)方式1正常計數LSB=3WRCLKGATEOUT3210FF32CW=12LSB=3WRCLKGATEOUT3210FF32CW=12圖9.5(b)方式1時GATE信號的作用LSB=3WRCLK321321CW=120GATEOUT圖9.5(c)方式1時計數過程中改變計數值LSB=2WRCLKGATEOUT4210FF3FECW=12LSB=4LSB=2WRCLKGATEOUT4210FF3FECW=12LSB=43.方式2——比率發生器、分頻器(RateGenerator)方式2用門控信號達到同步計數的目的,波形圖如圖9.6(a)、(b)、(c)、(d)所示。圖9.6(a)方式2正常計數圖9.6(b)方式2時GATE信號的作用4CW=14LSB=5WRCLKGATEOUT3214534CW=14LSB=4LSB=5WRCLKGATEOUT321453圖9.6(c)方式2時計數過程中改變計數值4.方式3——方波發生器(SquareWaveGenerator)方式3的工作過程同方式2,只是輸出的脈寬不同,波形如圖9.7(a)、(b)、(c)、(d)所示。圖9.7(a)方式3計數值為偶數時的波形圖9.7(b)方式3計數值為奇數時的波形圖9.7(c)方式3GATE信號的作用圖9.7(d)方式3計數過程中改變計數值5.方式4——軟件觸發選通方式(SoftwareTriggeredStrobe)用方式4工作時,GATE門控信號只是用來允許或不允許定時操作的,定時的執行過程由裝入的初值決定,波形圖如圖9.8(a)、(b)、(c)所示。圖9.8(a)方式4正常計數圖9.8(b)方式4GATE信號的作用圖9.8(c)方式4計數過程中改變計數值6.方式5——硬件觸發選通方式(HardwareTriggeredStrobe)方式5為硬件觸發選通方式,完全由GATE端引入的觸發信號控制定時和計數,波形圖如圖9.9(a)、(b)、(c)所示。圖9.9(a)方式5正常計數OUTLSB=3WRCLKGATECW=1A3210FF3圖9.9(b)方式5時GATE信號的作用圖9.9(c)方式5時計數過程中改變計數值9.38253的控制字與初始化編程1.8253的控制字8253的控制字有4個主要功能:*

選擇計數器;*

確定計數器數據的讀寫格式;*

確定計數器的工作方式;*

確定計數器計數的數制。

控制字的格式如圖9.10所示D7D6D5D4D3D2D1D0計數器

讀/寫格式

工作方式

數制0—二進制1—二―十進制(BCD)000

方式0001

方式110方式211方式3100

方式4101

方式500

計數器鎖存命令10

只讀/寫高8位01

只讀/寫低8位11

首先寫低8位

然后寫高8位00選擇計數器001選擇計數器110選擇計數器211非法選擇圖9.108253控制字格式注:圖中×可以是0,也可以是1,一般取0

2.8253的初始化編程

剛接通電源時,8253芯片通道都處于未定義狀態,在使用之前,必須用程序把它們初始化為所需的特定模式,這個過程稱為初始化編程。

(1)寫入控制字

用輸出指令向控制字寄存器寫入一個控制字,以選定計數器通道,規定該計數器的工作方式和計數格式。

(2)寫入計數初值

用輸出指令向選中的計數器端口地址中寫入一個計數初值,初值設置時要符合控制字中有關格式的規定。若是8位數,只要用一條輸出指令就可完成初值的設置。如果是16位數,則必須用兩條輸出指令來完成,而且規定先送低8位數據,后送高8位數據。注意,計數初值為0時,也要分成兩次寫入,因為在二進制計數時它表示65536,在BCD計數時它表示10000。

8253工作過程中,CPU可用輸入指令讀取任一通道的計數值。CPU讀到的是執行輸入指令瞬間計數器的當前值。但8253的計數器是16位,所以要分2次讀至CPU。因此,若不鎖存的話,在前后兩次執行輸入指令的過程中,計數值可能已經變化了。鎖存當前計數值有下面兩種方法:①利用GATE信號使計數過程暫停。②向8253寫入一個方式控制字,

令8253通道的鎖存器鎖存。例如,在某微機系統中,8253的3個計數器的端口地址分別為3F0H、3F2H和3F4H,控制字寄存器的端口地址為3F6H,要求8253的通道0工作于方式3,BCD計數,并已知對它寫入的計數初值n=1234(十進制數),則初始化程序為:

MOVAL,00110111B;控制字:選擇通道0,先讀/寫低字節,

后高字節,方式3,BCD計數MOVDX,3F6H;指向控制口OUTDX,AL;送控制字MOVAL,34H;計數值低字節,代表00110100BCDMOVDX,3F0H;指向計數器0端口OUTDX,AL;先寫入低字節MOVAL,12H;計數值高字節,代表0001010BCDOUTDX,AL;后寫入高字節例9.19.4應用舉例1.8253定時功能的應用

在計算機應用中,經常會遇到隔一定時間重復某一個動作的應用。

設某應用系統中,系統提供一個頻率為10kHz的時鐘信號,要求每隔100ms采集一次數據。在系統中,采用8253定時器的通道0來實現這一要求。將8253芯片的CLK0接到系統的10kHz時鐘上,OUT0輸出接到CPU的中斷請求線上,8253的端口地址為10H~13H,如圖9.11所示。中斷請求信號CPU總線OUT0圖9.118253用于定時中斷(1)選擇工作方式

由于系統每隔100ms定時中斷一次,則采樣頻率為10Hz,可選用方式2來實現。當8253定時器工作在方式2時,在寫入控制字與計數初值后,定時器就啟動工作,每到100ms時間,即計數器減到1時,輸出端OUT0輸出一個CLK周期的低電平,向CPU申請中斷,CPU在中斷服務程序中完成數據采集,同時按原設定值重新開始計數,實現了計數值的自動重裝。

(2)確定計數初值

已知

fCLK0=10kHz,則TCLK0=0.1ms,所以,計數初值

N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H

(3)初始化編程根據以上要求,可確定8253通道0的方式控制字為00110100B,即34H。

初始化程序段如下:

MOVAL,34H;通道0,16位計數,方式2,二進制計數OUT13H,AL;寫入方式控制字到控制字寄存器MOVAL,0E8H;計數初值低8位OUT10H,AL;寫入計數初值低8位到通道0MOVAL,03H;計數初值高8位OUT10H,AL;寫入計數初值高8位到通道0例9.22.8253計數功能的應用

通過PC機系統總線在外部擴展一個8253,利用其通道0記錄外部事件的發生次數,每輸入一個高脈沖表示事件發生1次。當事件發生100次后就向CPU提出中斷請求(邊沿觸發),假設8253片選信號的I/O地址范圍為200H~203H,如圖9.12。

外部事件產生A0A1A3~A9譯碼電路圖9.128253用于外部事件的計數

根據要求,可以選擇方式0來實現,計數初值N=100。8253初始化程序段如下:

MOVDX,203H;設置方式控制字地址MOVAL,10H;設定通道0為工作方式0,二進制計數,只寫入

;低字節計數值OUTDX,AL

MOVDX,20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論