微型計算機原理與接口技術第8章_第1頁
微型計算機原理與接口技術第8章_第2頁
微型計算機原理與接口技術第8章_第3頁
微型計算機原理與接口技術第8章_第4頁
微型計算機原理與接口技術第8章_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第八章可編程計數/定時器8253/8254及其應用

定時/計數的基本概念在微機系統中,常常需要為CPU和外部設備提供時間基準以實現定時或延時控制。如定時中斷、定時檢測、定時掃描等,或對外部事件進行計數并將計數結果提供給CPU。實現定時或延時控制有三種方法:軟件定時、不可編程硬件定時器、可編程硬件定時器。軟件定時讓CPU執行一段程序段,由于執行每條指令都需要時間,因此執行一個程序段就需要一定的時間,通過改變指令執行的循環次數就可以控制定時時間。這種軟件定時方式計時不夠準確,尤其是當CPU內部有多個并行處理時更為明顯。同時,由于它占用了CPU,因而降低了CPU的利用率。不可編程的硬件定時器采用中小規模器件(如NE555),外接定時元件——電阻和電容。這種方式實現的定時電路簡單,通過改變電阻和電容可使定時在一定范圍內變化。但是,這種定時電路在連接好硬件后,定時值就不易用軟件來控制和改變,由此產生了可編程的硬件定時器電路。所謂可編程的硬件定時器電路就是其工作方式、定時值和定時范圍可以很方便地由軟件來確定和改變。通常,一個可編程定時/計數器的主要用途有:①以均勻分布的時間間隔中斷分時操作系統,以便切換程序。依所需時間間隔,設置計數器的時間常數,在一外部脈沖驅動下進行減1計數,計數值為0時,產生輸出信號,供系統使用。

②向I/O設備輸出精確的定時信號,該信號的周期由程序控制。③用作可編程波特率或速率發生器。產生精確的時間間隔,形成各種脈沖序列,靈活性強。④檢測外部事件發生的頻率或周期。⑤統計外部事件處理過程中某一事件發生的次數。⑥在定時或計數達到編程規定的值之后,產生輸出信號,向CPU申請中斷。如系統的日歷時鐘,動態存儲器的刷新,應用系統的定時中斷、定時查詢與檢測等。8.18253工作原理3個獨立的16位計數器通道每個計數器有6種工作方式按二進制或十進制(BCD碼)計數8254是8253的改進型8253/8254的內部結構D7~D0計數器0控制字寄存器計數器1計數器2內部數據總線數據總線緩沖器讀寫控制邏輯RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT28.1.18253的內部結構和引腳信號計數器結構示意圖預置寄存器GATECLKOUT減1計數器輸出鎖存器計數初值存于預置寄存器;在計數過程中,減法計數器的值不斷遞減,而預置寄存器中的預置不變。輸出鎖存器用于寫入鎖存命令,鎖定當前計數值計數器的3個引腳CLK時鐘輸入信號——在計數過程中,此引腳上每輸入一個時鐘信號(下降沿),計數器的計數值減1GATE門控輸入信號——控制計數器工作,可分成電平控制和上升沿控制兩種類型OUT計數器輸出信號——當一次計數過程結束(計數值減為0),OUT引腳上將產生一個輸出信號8253引腳圖8253的引腳功能8253的引腳如圖所示。計數器0、1、2和控制字寄存器的低2位地址由A1、A0確定,A1、A0的值依次為00~11。8253的4個端口的操作情況如表所示。8253的計數器0、1、2各有3個引腳。不同計數器的相同定義的引腳,其功能也是相同的。CLK:計數脈沖輸入端。計數器對該引腳的輸入脈沖進行計數。如果CLK信號是周期精確的時鐘脈沖,則具有定時作用。8253規定CLK端的輸入脈沖周期不能小于380ns。GATE:門控輸入端。這是控制計數器工作的一個外部信號。當GATE為低電平時,禁止計數器工作;當GATE為高電平時,允許計數器工作。GATE信號從計數開始到計數過程中都起作用。OUT:輸出信號端。當計數器計數到零時,在OUT引腳上輸出一個信號,該信號的波形取決于工作方式。(1)數據總線緩沖器。數據總線緩沖器是8253與CPU數據總線連接的8位雙向三態緩沖器。CPU用輸入/輸出指令對8253進行讀/寫操作的所有信息都是通過這8條總線傳送的。這些信息包括:CPU在初始化編程時寫入8253的控制字、CPU向8253某一計數器寫入的計數初值、CPU從8253某一計數讀取的計數值。(2)讀/寫控制邏輯。讀/寫邏輯是8253內部操作的控制部分。當片選信號有效,即=0時,讀/寫邏輯才能工作。該控制邏輯根據讀/寫命令及送來的地址信息,決定三個計數器和控制字寄存器中哪一個工作,并控制內部總線上數據傳送的方向。(3)計數器0、1、2。計數器0、1、2是3個16位減1計數器,它們互相獨立,內部結構和功能相同。每個計數器有3根信號線,它們是時鐘輸入CLK、門控輸入GATE和輸出OUT。計數器從CLK端接收時鐘脈沖或事件計數脈沖,在脈沖下降沿按照二進制或二—十進制從預置的初值開始進行減1計數。當計數值減到零時,從OUT端送出一個信號。計數器在開始計數和計數過程中,受到門控信號GATE的控制。在開始計數之前,必須由CPU用輸出指令預置計數器的初值。在計數過程中,CPU可以隨時用指令讀取計數器的當前值。8253控制字的格式(4)控制字寄存器。在8253初始化編程時,由CPU向控制字寄存器寫入控制字,以決定每個計數器的工作方式。此寄存器只能寫入而不能讀出。

控制字的功能是:選擇計數器,確定對計數器的讀/寫格式,選擇計數器的工作方式以及確定計數的數制。8253控制字的格式如圖所示。

SC1、SC0:計數器選擇位。這兩位表示這個控制字是對哪一個計數器設置的。00——計數器0;01——計數器1;10——計數器2;11——非法選擇。RW1、RW0:數據讀/寫格式選擇位。CPU在對計數器寫入初值和讀取它們的當前值時,有幾種不同的格式,由這兩位來決定。00——將計數器當前值鎖存于輸出鎖存器中,以便讀出;01——只讀/寫計數器的低8位,寫入時高8位自動設置為0;10——只讀/寫計數器的高8位,寫入時低8位自動設置為0;11——對16位計數器進行兩次讀/寫操作,低字節在前,高字節在后,兩次操作的地址相同。M2、M1、M0:計數器工作方式選擇位。8253的每個計數通道有6種不同的工作,工作方式由這3位決定。000——方式0;001——方式1;010——方式2;011——方式3;100——方式4;101——方式5。BCD:數制選擇。8253的每個計數器有兩種數制二進制和二—十進制,由這一位決定選擇哪一種。BCD=0表示采用二進制計數,寫入的初值范圍為0000H~FFFFH,其中0000H是最大值,代表65536;BCD=1表示采用二—十進制計數,寫入的初值范圍為0000~9999,其中0000是最大值,代表10000。

8.1.2初始化編程步驟和門控信號的功能8253加電后的工作方式不確定,8253必須初始化編程,才能正常工作

寫入控制字寫入計數初值

門控信號的功能例:置計數器0在工作方式3,按二進制計數,計數初值200H。解:確定方式控制字為36H,實現程序如下:MOV AL,36HMOV DX,CtrlPortOUT DX,AL ;方式方式控制字為36H送端口MOV DX,Port0MOV AL,00H ;計數初值的低8位OUT DX,ALMOV AL,02H ;計數初值的高8位OUT DX,AL8253初始化編程SC1SC0RW1RW0M2M1M0BCD000011118253有6種工作方式,由方式控制字確定熟悉每種工作方式的特點才能根據實際應用問題,選擇正確的工作方式每種工作方式的過程類似:⑴設定工作方式⑵設定計數初值〔⑶硬件啟動〕⑷計數初值進入減1計數器⑸每輸入一個時鐘計數器減1的計數過程⑹計數過程結束8.1.38253的工作方式(1)方式0——計數結束時產生中斷。當寫入方式0控制字CW后,計數器輸出端OUT立即變成低電平。當寫入計數初值N后,若GATE為高電平,計數器開始計數。在計數過程中,OUT端一直維持為低,直到計數0(結束)時,OUT端變為高,向CPU發出中斷請求。8253用作計數時,一般都工作在方式0。方式0的特點是:①計數器只計一遍數。當計數到0時,并不恢復計數初值,不開始重新計數,輸出端OUT由低變高且一直保持為高。只有當寫入一個新的計數初值后,OUT才變低,開始新的計數。②在計數過程中可改變計數值。如果計數器為8位(RW1RW0=01),在寫入新的8位計數值后,計數器將按新的計數值重新開始計數。如果計數器為16位(RW1RW0=11),在寫入第一個字節后,計數器停止計數,在寫入第二個字節后,計數器按照新的數值開始計數。③在計數過程中,可由門控信號GATE控制暫停。當GATE=0時,計數器暫停計數;當GATE變為1后,就接著計數。④方式0的OUT信號在計數到0時由低變高,可作為中斷請求信號。但由于在8253內部沒有中斷控制電路,因此在多中斷源系統中需外接中斷優先權排隊電路和中斷向量產生電路。方式0計數結束中斷①②⑤④⑥GATEOUTCLK

031244方式0WR①設定工作方式②設定計數初值④計數值送入計數器⑤計數過程⑥計數結束(MODE0)CLOCKWRn#OUTPUT(中斷)43210n=4WRm#OUTPUT(中斷)GATEm=5543210方式0:計數結束時發中斷(2)方式1——可程控的單脈沖。在設定工作方式1和寫入計數初值后,OUT輸出高電平,此時并不開始計數。當門控信號GATE變為高電平時,啟動計數,OUT輸出變低。在整個計數過程中,OUT都維持為低,直到計數到0時,輸出變為高。因此,輸出為一單脈沖,其低電平維持時間由裝入的計數初值來決定。方式1的特點是:①當計數到0后,計數器可再次由外部啟動,按原計數初值重新開始計數,輸出單脈沖,而不需要再次送一個計數初值。②在計數過程中,外部可發出門控脈沖,進行再觸發。這時不管原來計數到何值,計數器將重新開始計數,輸出端仍保持低電平。③在計數過程中改變計數初值不影響本次計數過程。若門控信號再次被觸發,則計數器才按新的計數值計數。比較方式0和方式1,有以下幾點不同:①方式0設置計數初值后立即計數;方式1設置計數初值后不立即計數,直到有外部觸發信號后才開始計數。②方式0在計數過程中能用門控信號暫停計數;方式1在計數過程中若有門控脈沖時不停止計數,而是使計數過程重新開始。③方式0在計數過程中改變計數初值時,原計數停止,立即按新的計數初值開始計數;方式1在計數過程中當改變計數初值時,現行計數不受影響,新計數初值在下次啟動計數后才起作用。④方式0在一次計數結束后,必須重新設置計數初值才能再次計數,即計數初值只能使用一次,方式1的計數初值在一次計數過程完成后繼續有效。

方式1可編程單拍脈沖①②⑤④⑥①設定工作方式②設定計數初值③③硬件啟動④計數值送入計數器⑤計數過程⑥計數結束GATEOUTCLK

031244方式1WRWRn#GATE(TRIGGER)43210OUTPUT34210(MODE1)CLOCKGATE(TRIGGER)OUTPUT234方式1:可編程單穩電路(3)方式2——分頻器。在這種方式下,CPU輸出控制字后,計數器輸出端為高電平。當寫入計數初值后,計數器立即對CLK端的輸入脈沖計數。在計數過程中輸出端始終保持為高,直到計數器減為1時,輸出變低。經過一個CLK周期,輸出恢復為高,同時按照原計數初值重新開始計數。如果計數值為N,則在CLK端每輸入N個脈沖后,就輸出一個脈沖。因此,這種方式可以作為分頻器或用于產生實時時鐘中斷。方式2的特點是:①不用重新設置計數初值,計數器能夠連續工作,輸出固定頻率的脈沖。

②計數過程可由門控信號GATE控制。當GATE為0時,暫停計數。當GATE變為1后,下一個CLK脈沖使計數器恢復初值,重新開始計數。③在計數過程中可以改變計數初值,這對正在進行的計數過程沒有影響。但當計數到1時輸出變低,過一個CLK周期輸出又變高,計數器將按新的計數值計數。所以對方式2改變計數初值時,在下一次計數有效。方式2頻率發生器(分頻器)03124GATEOUTCLK

4方式2031240312403124WRWRn#43210(3)OUTPUTGATE(RESET)OUTPUT(MODE2)CLOCKn=4n=3

0(4)3212100(3)3210(3)210(3)21方式2:可變頻率脈沖發生器0(4)方式3——方波發生器。在方式3時,當CPU設置控制字后,輸出為高電平。在寫入計數初值后就開始計數,輸出保持為高。當計數到一半計數初值時,輸出變為低,直至計數到0,輸出又變為高,重新開始計數。方式3與方式2的輸出都是周期性的,它們的主要區別是:方式3在計數過程中的輸出有一半時間為高電平,另一半時間為低電平。所以,若計數值為N,則方式3的輸出為周期=(N×CLK周期)的方波。方式3的特點是:①當計數初值N為偶數時,輸出端的高低電平持續時間相等,各為N/2個CLK脈沖周期;當計數初值N為奇數時,輸出端的高電平持續時間比低電平持續時間多一個脈沖周期,即高電平持續(N+1)/2個脈沖周期。低電平持續(N-1)/2個脈沖周期。例如N=5,則輸出高電平持續3個脈沖周期,低電平持續2個脈沖周期。②GATE=1,允許計數;GATE=0,停止計數。如果在OUT為低電平期間GATE=0,OUT將立即變高。當GATE變高以后,在下一個CLK脈沖來到時,計數器將重新裝入初始值,開始計數。在這種情況下通過門控信號使計數器實現同步,稱為硬件同步。③如果GATE信號一直為高電平,在寫入控制字和計數值后,將在下一個CLK脈沖來到時裝入計數初值并開始計數,這種情況稱為軟件同步。④在計數期間寫入一個新的計數初值,如果在輸出信號半周結束之前沒有收到GATE脈沖,則要到現行輸出半周結束后才按新的計數初值開始計數。如果在寫入新計數初值之后在現行輸出半周結束之前收到GATE脈沖,計數器將在下一個CLK脈沖來到時立即裝入新的計數初值并開始計數。

方式3方波發生器03124GATEOUTCLK

4方式3031240312403124WR42210(4)OUTPUTn=4GATE(RESET)OUTPUTn=4n=4n=3

0(4)2103210(4)21331(MODE3)CLOCKOUTPUTn=53210(5)43210(5)430(5)43方式3:方波發生器0(5)方式4——軟件觸發的選通信號發生器。在這種方式下,當寫入控制字后,輸出端OUT變為高電平,以此作為初始電平。當寫入計數初值后開始計數,稱為軟件觸發。當計數到0后,輸出變低,經過一個CLK周期,輸出又變高,計數器停止計數。這種方式計數也是一次性的,只有在輸入新的計數值后,才開始新的計數過程。若設置的計數初值為N,則是在寫入了計數初值后經過(N+1)個CLK脈沖,才輸出一個負脈沖。一般將此負脈沖作為選通信號。方式4的特點是:①當GATE=1時,允許計數;當GATE=0時,禁止計數。所以,要做到軟件觸發,GATE應保持為1。②在計數過程中,若改變計數初值,則按新的計數初值開始計數。這稱為軟件再觸發。方式4軟件觸發選通信號GATEOUTCLK031244方式42233310WR(MODE4)CLOCKWRn#n=4OUTPUTn=401234443210WRn#

GATEOUTPUT方式4:軟件觸發選通(6)方式5——硬件觸發的選通信號發生器。在這種方式下,當寫入控制字后,輸出端出現高電平作為初始電平。在寫入計數初值后,計數器并不立即開始計數,而是要由門控脈沖的上升沿來啟動計數,這稱為硬件觸發。當計數到0時,輸出變低,又經過一個CLK脈,輸出恢復為高。這樣在輸出端得到一個負脈沖選通信號。計數器停止計數后要等到下次門控脈沖觸發,才能再進行計數。方式5的特點是:①若設置計數初值為N,則在門控脈沖觸發后,經過(N+1)/2個CLK脈沖,才輸出一個負脈沖。②在計數過程中,若GATE端又出現一個脈沖進行觸發,則使計數器重新開始計數,但對輸出狀態沒有影響。③若在計數過程中改變計數值,只要沒有門控信號的觸發,就不影響本次計數過程。當計數到0后,若有新的門控信號的觸發,則按新的計數初值計數。方式5和方式4都產生選通脈沖。這兩種方式的區別在于:方式4每次要靠軟件設置計數初值后才能計數(軟件觸發),方式5的計數初值只需設置一次,但是每次計數要靠門控信號的觸發(硬件觸發);方式4軟件更改計數初值后立即起作用,方式5軟件更改計數初值后要有新的門控信號的觸發才能起作用。方式5硬件觸發選通信號GATEOUTCLK031244方式522333110WR(MODE5)CLOCKOUTPUT(n=4)0123443210GATE

GATEOUTPUT43方式5:硬件觸發選通各種工作方式的輸出波形方式0計數結束中斷方式1可程控的單脈沖方式2頻率發生器(分頻器)方式3方波發生器方式4軟件觸發選通方式5硬件觸發選通0N0N0N0/N110NN/2N/20/N0N01N01N01

數據采集系統在一個實際的數據采集系統中,要求每5秒采一個數,現場的主時鐘的振蕩頻率為2.5MHz。解:若外部時鐘為2.5MHz,則計數次數(計數初值)為 5/(1/2.5*106)=1.25*107一個計數器最大的計數次數為65536,所以必須采用二次計數器。用計數器0的輸出OUT0接計數器1的輸入時鐘CLK1。 若計數器0(方式3)的計數初值為50000;則OUT0的輸出脈沖頻率為著(2.5*106)/(5*104)=50Hz。即周期為0.02s。為了每5秒產生一個脈沖輸出,計數器1為分頻器(方式2),計數次數為5s/0.02=250經以上分析,總結如下:8.28253的應用舉例計數器0:方式3,輸出50Hz脈沖,控制字36H,計數初值C350H計數器1:方式2,分頻,控制字54H,計數初值FAH程序如下:MOV AL,36HMOV DX,CtrPortOUT DX,AL ;寫計數器0方式3控制字MOV DX,Port0MOV AL,50HOUT DX,AL ;送低8位計數器值MOV AL,0C3HOUT DX,AL ;送高8位計數器值MOV AL,54HMOV DX,CtrPortOUT DX,AL ;寫計數器1方式2控制字MOV AL,0FAHOUT Port1,AL ;送計數器1初值

8253工作在方式3下,輸出是一個周期準確的方波,可以作為定時單位。如CLK0=1.1931816MHz,初值為最大值65536,則計數器0輸出的方波頻率為 f0=1.1931816MHz/65536=18.2Hz, 周期為T0=1/f0=54.945ms1天=24×60×60×1000ms/54.945ms=1572482(計時單位)=0017FE82H; 即計滿1572482個計時單位,就是1天。 同理計滿65520是1個小時,計滿1092就是1分鐘,計滿18.2就是1秒鐘。具體做法是8253的OUT0輸出連到8259的IR0上。8253輸出的方波每隔54.945ms申請一次中斷,在中斷服務程序中做雙字變量的加1操作。當低字計到65536時,向高字進位,直至高字計到0017H,低字計到FE82H,就計到24小時。然后清零,開始第二天的計時。

用8253實現日時鐘硬件連接如圖所示。圖中在內存開辟了兩個字單元,低字TIMER-LO(40H:6CH)和高字TIMER-HI(40H:6EH)。發光二極管

現有一個高精密晶體振蕩電路,輸出信號是脈沖波,頻率為1MHz。要求利用8253做一個秒信號發生器,其輸出接一發光二極管,以0.5秒點亮,0.5秒熄滅的方式閃爍指示。設8253的通道地址為80H~86H(偶地址)解:1、時間常數計算這個例子要求用8253作一個分頻電路,而且其輸出應該是方波,否則發光二極管不可能等間隔閃爍指示。頻率為1MHz信號的周期為1微妙,而1Hz信號的周期為1秒,所以分頻系數N可按下式進行計算:

由于8253一個通道最大的計數值是65536,所以對于N=1000000這樣的大數,一個通道是不可能完成上述分頻要求的。由于即取兩個計數器,采用級聯方式。2、電路

3、工作方式選擇由于通道1要輸出方波信號推動發光二極管,所以通道1應選工作方式3。對于通道0,只要能起分頻作用就行,對輸出波形不做要求,所以方式2和方式3都可以選用。這樣對于通道0,我們取工作方式2,BCD計數;對于通道1,我們取工作方式3,二進制計數(當然也可選BCD計數)4、程序 moval,00110101b ;通道0控制字 out86h,al moval,00 ;通道0初始計數值 out80h,al moval,10h out80h,al moval,01110110b ;通道1控制字 out86h,almoval,0e0h ;通道1初始計數值,03E8H=1000BCD out82h,al moval,03h out82h,al計件系統。計件系統的功能就是記錄脈沖的個數。

一個脈沖代表一個事件,比如交通道路檢測系統中通過檢測點的車輛,工業控制系統中流水線上已加工好的工件。要求在計件過程中,PC機可以顯示當前計數器的內容,當完成10000個工件記錄后,系統發出1KHz信號推動喇叭發音通知用戶。解:1、電路。需要兩個通道,一個作為計數,選用通道0。另一個產生1KHz信號,選用通道1。工作原理如下,傳感器電路把物理事件轉換為脈沖信號輸入到通道0計數,當記錄10000個事件后,通道0計數器溢出,GATE端輸出高電平,這時通道1開始工作,產生1KHz信號推動喇叭發音。2、工作方式選擇對于通道1,由于要產生1KHz信號,故選用工作方式3。對于通道0,要求初始計數值寫入計數通道后,計數器就可以工作,則通道0的啟動方式應是軟件啟動。另外由于要求計數溢出后產生一個信號來啟動一個事件,即喇叭發音,故可選的工作方式為方式0和方式4,對于圖所示方案,通道1的GATE信號由通道0的OUT信號產生,這個OUT信號應該是電平型的,所以通道0應選用方式0。3、時間常數N0=10004、程序(略)

IBMPC/XT與8253連接圖8253在PC/XT機中的應用

三個計數器通道時鐘輸入CLK均從時鐘發生器PCLK端經二分頻得到,頻率為1.19318MHz,周期為838ns。(1)計數器0—實時時鐘。門控GATE0接+5V為常啟狀態。OUT0輸出接8259A的IRQ0,用作XT中日時鐘的中斷請求信號。設定時/計數器0為方式3,計數值寫入0,產生最大的計數初值65536,因此輸出信號頻率為1.19318MHz÷65536=18.206Hz,即每秒產生18.2次中斷,或者說每隔55ms申請一次日時鐘中斷。其程序如下:MOVAL,36H;設定計數器0為

溫馨提示

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

評論

0/150

提交評論