第12章可編程定時、計數器及其應用_第1頁
第12章可編程定時、計數器及其應用_第2頁
第12章可編程定時、計數器及其應用_第3頁
第12章可編程定時、計數器及其應用_第4頁
第12章可編程定時、計數器及其應用_第5頁
已閱讀5頁,還剩73頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第12章

可編程定時器/計數器及其應用本章主要內容1.計算機中定時、計數的基本技術;2.可編程計數器/定時器8253的結構及工作方式;3.8253的編程應用。12.1概述實現定時的三種方法:1.軟件定時

由CPU執行指令序列所花費的時間來構成一定的時間間隔,從而達到定時的目的。例如:

MOVCX,××××HHERE:LOOPHERE優點:不需要專門的硬件設備。缺點:浪費了寶貴的CPU資源。2.不可編程的硬件定時

時序波形

穩態td觸發信號

暫穩態單穩態電路3.可編程計數器/定時器可用軟件的方法(通過初始化編程)設定或調整定時范圍。典型產品:ZilogZ80-CTCIntel

8253(8254)12.2可編程計數器/定時器825312.2.18253的主要功能(1)具有三個獨立的16位計數通道;(2)每個計數通道可按二進制或二-十進制計數;(3)每個計數通道的計數速率可達2MHz;(4)每個計數通道有六種工作方式;(5)全部輸入輸出都與TTL電平兼容。12.2.28253的結構8253的內部結構框圖如圖12.1所示。由圖可見,它由與CPU的接口、內部控制電路以及三個計數器通道所組成。數據總線緩沖器讀/寫邏輯控制字寄存器D7~D0計數器0計數器1計數器2RDWRA0A1CS內部總線CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2圖12.18253內部結構框圖1.數據總線緩沖器這是8253與CPU的數據總線(D7~D0)連接的8位雙向三態緩沖器。

CPU用輸入輸出指令對8253進行讀寫操作時的所有信息都通過這個緩沖器傳送。2.讀/寫邏輯

這是8253內部操作的控制電路,它從系統控制總線上接收輸入信號,然后轉換成8253內部操作的各種控制信號。3.控制字寄存器當地址信號A1和A0都為1時,訪問控制字寄存器。控制字寄存器從數據總線上接收CPU送來的控制字,并由控制字的D7、D6兩位的編碼決定控制字寫入哪個通道的控制寄存器中去。由寄存在每個通道內的控制寄存器的內容決定該通道的工作方式,選擇計數器是按二進制還是BCD數計數,并確定每個計數器初值的寫入順序。4.計數器0、計數器1、計數器2這是三個計數器/定時器通道,每一個都由16位的可設置計數初值的減法計數器構成。三個通道的操作是完全獨立的。每個通道都有兩個輸入引腳CLK和GATE以及一個輸出引腳OUT。從編程的角度看,8253的結構框圖如圖12.2所示。

數據總線地址譯碼RDWRIO/MVCCGNDCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7~D0RDWRCSA1A0控制寄存器(8位)高8位低8位高8位低8位計數器0高8位低8位計數初值寄存器(CR)計數執行部件(CE)輸出鎖存器(OL)計數器1計數器2圖12.28253計數通道結構

“控制寄存器”及“計數初值寄存器(CR)”可由CPU寫入;“輸出鎖存器(OL)”可由CPU讀出。12.2.38253的引腳8253的引腳如圖12.3所示。8253D7D6D5D4D3D2D1D0CLK0OUT0GATE0GND123456789101112242322212019181716151413VccWRRDCSA1A0CLK2GATE2OUT2CLK1GATE1OUT112.38253的引腳圖12.2.48253的工作方式8253的每個通道均可以通過編程選擇6種工作方式之一:1.方式0——計數到零產生中斷請求

(InterruptonTerminalCount)方式0的操作時序圖如圖12.4所示。CLKGATE(高)01234CWN=4WRN+1個OUT圖12.4方式0的時序圖方式0的主要特點是:計數器只計一遍而不能自動重復工作。當減1計數到零時,并不自動恢復計數初值重新開始計數,且OUT輸出保持為高電平。只有CPU再次寫入一個新的計數值(即使計數值相同也需再次寫入),OUT才變為低電平,計數器按新寫入的計數值重新開始計數。或者CPU重新對8253設置方式0控制字,它的OUT輸出也可以立即變為低電平,并等再次寫入計數初值后重新開始計數。(2)CPU向CR寄存器寫入計數初值后的第一個CLK脈沖(即圖中用斜線標出的那個脈沖),將CR的內容送入CE,從此之后計數器才開始減1計數。這第一個CLK脈沖不包括在減1計數過程中。如果設置計數初值為N,則輸出OUT是在N+1個CLK脈沖之后才變為高電平。(3)在計數過程中,可由GATE信號控制暫停計數。當GATE變低時,計數暫停;當GATE變高后又接著計數。其工作波形如圖12.5所示。CLKGATE12223N=3CWWROUT圖12.5方式0計數過程中改變GATE信號0(4)在計數過程中也可改變計數值。在寫入新的計數值后,計數器將立即按新的計數值重新開始計數,即改變計數值是立即有效的。當按新的計數值減1計數到0時,輸出OUT變為高電平。其工作波形如圖12.6所示。CLKGATE(高)12123CWN=3WROUT圖12.6方式0計數過程中改變計數值0N=22.方式1—硬件可重復觸發的單穩態觸發器(Programmableone-shot)

方式1的時序圖如圖12.7所示。

CLKGATE圖12.7方式1的時序圖CWN=2WR112OUT020在方式1,當CPU輸出控制字后(WR的上升沿),OUT輸出變為高電平(若原為高電平,則保持為高電平);在CPU寫入計數初值后,計數器并不開始計數,直至門控信號GATE上升沿(即門控觸發信號)出現,并在其下一個CLK脈沖的下降沿,CR的內容送入CE,同時使OUT輸出變為低電平,然后開始對隨后的CLK脈沖進行減1計數。

在計數過程中,OUT一直維持為低電平,直至減1計數到0時,OUT輸出變為高電平。即由于GATE上升沿的觸發,使OUT輸出端產生一個寬度為N個CLK周期的負脈沖。此后,若再次由GATE上升沿觸發,則輸出再次產生一個同樣寬度的負脈沖。方式1的主要特點是:(1)若設置計數初值為N,則輸出負脈沖的寬度為N個CLK脈沖周期。(2)當計數到零時,可再次由GATE上升沿觸發,輸出同樣寬度的負脈沖,而不必重新寫入計數初值。(3)在計數過程中(輸出負脈沖期間),可由GATE上升沿再觸發。并使計數器從計數初值開始重新作減1計數,減至0時,OUT輸出變為高電平。其效果是使輸出負脈沖的寬度比原來加寬了。(4)在計數過程中,CPU可改變計數初值,這時計數過程不受影響,計數到零后輸出變高。當再次觸發時,計數器才按新輸入的計數值計數。即改變計數值是下次有效的。3.方式2——分頻器(RateGenerator)在方式2,當CPU輸出控制字后,OUT輸出為高。在寫入計數初值后,計數器將自動對輸入時鐘CLK計數。在計數過程中OUT輸出為高,直至計數器減到1(注意,不是減到0)時,OUT輸出變低,經過一個CLK周期,輸出恢復為高,且計數器將自動重新開始計數。這種方式可作脈沖速率發生器或用來產生實時時鐘中斷信號。

方式2的時序圖如圖12.8所示。CLKGATE(高)23123CWN=3WROUT圖12.8方式2時序圖13方式2的主要特點是:

(1)不用重新設置計數值,通道能連續工作,輸出固定頻率的脈沖。如果計數初值為N,則每輸入N個CLK脈沖,輸出一個負脈沖。負脈沖寬度為1個CLK周期,重復周期為N倍的CLK周期。(2)計數過程可由GATE信號控制。當GATE信號變低時,立即暫停現行計數;當GATE信號又變高后,從計數初值開始重新計數。(3)如果在計數過程中,CPU重新寫入計數值,則對于正在進行的計數無影響,而是從下一個計數操作周期開始按新的計數值改變輸出脈沖的頻率。4.方式3——方波發生器

(SquareWaveRateGenerator)方式3和方式2的工作情況類似,兩者的主要區別是輸出波形的形式。對于方式3,OUT輸出是對稱方波或基本對稱的矩形波。即在一個計數周期內,若計數初值N為偶數,則OUT輸出將有N/2個CLK周期為高電平,N/2個CLK周期為低電平,輸出為對稱方波,其周期為N個CLK周期;若N為奇數,則OUT輸出將有(N+1)/2個CLK周期為高電平,(N-1)/2個CLK周期為低電平,輸出為基本對稱的矩形波,其周期也為N個CLK周期。

在方式3,當CPU設置控制字后,輸出將為高,在寫完計數初值N后計數器就自動開始計數,輸出保持為高。當計數到N/2(或(N+1)/2)時,輸出變低,直至計數到0,使輸出變高。同時又重新裝入計數值開始新的計數。計數過程周而復始重復進行。這種方式常用來產生一定頻率的方波。方式3的時序圖如圖12.9所示。

CWN=4(N=5)GATE(高)24124OUT(N=4時UT(N=5時)圖12.9方式3時序圖WRCLK方式3的主要特點是:(1)若計數初值N為偶數,則輸出波形是周期為N個CLK周期的對稱方波;若計數初值N為奇數,則輸出波形是周期為N個CLK周期的基本對稱矩形波,其高電平持續時間比低電平持續時間多一個CLK周期。(2)如果在計數過程中,GATE信號變低,則暫停現行計數過程,直到GATE再次有效,將從計數初值開始重新計數。(3)如果要求改變輸出方波的頻率,則CPU可在任何時候重新寫入新的計數初值,并從下一個計數操作周期開始改變輸出方波的頻率。5.方式4—軟件觸發選通

(SoftwareTriggeredStrobe)在方式4,當寫入控制字后,OUT輸出為高。當寫入計數初值后計數器即開始計數(相當于軟件觸發啟動),當計數到0后,輸出變低,經過1個CLK周期,輸出又變高。方式4不能自動重復計數,即這種方式計數是一次性的。每次啟動計數都要靠重新寫入計數值,所以稱為“軟件觸發選通”。當8253工作于方式4時,可用作軟件觸發的選通信號發生器。方式4的時序圖如圖12.10所示。GATE(高)CLKWRCWN=30123OUT圖12.10方式4時序圖方式4的主要特點是:

(1)若設置計數初值為N,則在寫入計數初值后的N+1個CLK脈沖,才輸出一個負脈沖。負脈沖的寬度為1個CLK周期。(2)GATE為高時,允許計數;GATE為低時,禁止計數。所以,要實現軟件啟動,GATE應為高。(3)若在計數過程中改變計數值,則按新的計數值重新開始計數,即改變計數值是立即有效的。方式4可應用于這樣一種情況:

CPU經輸出端口發送并行數據給接收系統,經過一段時間延遲后,再發送一個選通信號,利用該選通信號將并行數據打入到接收系統的緩沖寄存器中。通過改變計數初值N,可以方便地調整發出選通信號的延遲時間。6.方式5——硬件觸發選通

(HardwareTriggeredStrobe)

在方式5,設置了控制字后,輸出為高。在設置了計數初值后,計數器并不立即開始計數,而是由門控信號GATE的上升沿觸發啟動。當計數到0時,輸出變低,經過一個CLK周期,輸出恢復為高,并停止計數。要等到下次門控GATE信號的觸發才能再計數,即方式5的計數是一次性的。方式5的時序圖如圖12.11所示。

CLKGATE0123CWN=3WROUT圖12.11方式5時序圖方式5的主要特點是:(1)若設置計數初值為N,則在門控GATE上升沿觸發后,經過N+1個CLK脈沖,才輸出一個負脈沖。(2)若在計數過程中再次出現門控GATE觸發信號,則將使計數器從計數初值開始重新計數,但OUT輸出的高電平不受影響。(3)若在計數過程中改變計數值,只要在計數到0之前不出現新的門控觸發信號,則原計數過程不受影響;等計數到0并出現新的門控發信號后,再按新的計數值計數。若在寫入了新的計數值后,在未計數到0之前有門控觸發信號出現,則立即按新的計數值重新開始計數。7.8253工作方式小結

(1)方式2(分頻器)、方式4(軟件觸發選通)和方式5(硬件觸發選通),它們的輸出波形相同,都是寬度為1個CLK周期的負脈沖。

區別是,方式2是自動重復工作的,而方式4需由軟件(設置計數值)觸發啟動,方式5需由門控GATE信號觸發啟動。

(2)方式5(硬件觸發選通)與方式1(硬件觸發單穩),觸發信號相同,但輸出波形不同.方式1輸出為寬度是N個CLK周期的負脈沖(計數過程中輸出為低);方式5輸出為寬度是1個CLK周期的負脈沖(計數過程中輸出為高)。(3)在6種工作方式中,只有方式0,在寫入控制字后輸出為低;

其余5種方式,都是在寫入控制字后輸出為高。(4)6種工作方式中的任一種方式,只有在寫入計數初值后才能開始計數。方式0、2、3、4都是寫入計數初值后,計數過程就開始了。方式1、5在寫入計數初值后,需由外部GATE信號的觸發啟動,才能開始計數過程。(5)6種工作方式中,只有方式2(分頻器)和方式3(方波發生器)為自動重復工作方式,其他4種方式都是一次性計數,要繼續工作需要重新啟動。12.2.58253的初始化編程1.內部寄存器的尋址8253有三個獨立的計數器通道,每個通道可以被CPU訪問的部件有:

8位的控制寄存器,它只能寫入,不能讀出;

16位的計數初值寄存器CR,它只能寫入,不能讀出;

16位的輸出鎖存器OL,它只能讀出,不能寫入。

8253芯片是否被選中,決定于片選信號CS,通常CS接自地址譯碼器輸出。

一片8253占用四個連續的端口地址,分別對應于三個計數初值寄存器端口和一個控制寄存器端口。由輸入信號A1和A0的四種編碼來選擇四個端口之一。每個通道都各自有獨立的控制寄存器,但三個通道的控制寄存器都共用一個端口地址,即A1和A0都為1時的端口地址。它是三個通道共同使用的控制寄存器端口地址。

為了能夠將每個通道的控制字寫入它們各自的控制寄存器中,使用控制字的D7和D6的編碼,來標志此控制字是寫入哪個通道的控制寄存器中。

8253內部寄存器的尋址如表12-1所示。表12-18253內部寄存器的尋址

CSRDWRA1A0寄存器選擇和操作01000寫通道0計數初值寄存器CR001001寫通道1計數初值寄存器CR101010寫通道2計數初值寄存器CR201011寫控制寄存器00100讀通道0輸出鎖存器OL000101讀通道1輸出鎖存器OL100110讀通道2輸出鎖存器OL22.初始化編程順序注意:必須按控制字D5,D4位規定的格式進行寫入。

設置控制字寫入計數初值3.8253的控制字SC1SC0RL1RL0M2M1M0BCD00通道001通道102通道211無效通道選擇:00計數器鎖存命令01只讀/寫計數器低8位10只讀/寫計數器高8位11先讀/寫計數器低8位

后讀/寫計數器高8位讀/寫格式:計數制:0二進制計數1十進制計數工作方式:000方式0001方式1x10方式2x11方式3100方式4101方式5圖12.128253控制字格式需要說明的是:

當采用二進制計數時,如果是8位二進制計數(計數值≤256),則在8253初始化編程的傳送指令“MOVAL,n”中,n可以寫成任何進制數(二進制、十進制或十六進制)的形式;如果是16位二進制計數(計數值≤65536),一種方法是先把計算得到的十進制計數初值n轉換成4位十六進制數(即16位二進制),然后分兩次寫入8253的指定端口。

另一種方法是先把該十進制計數初值n直接傳送給AX,然后分兩次寫入8253指定端口,即:

MOVAX,nOUTPORT,AL;先寫低8位(PORT為端口號)

MOVAL,AH

OUTPORT,AL;后寫高8位當采用十進制(BCD碼)計數時,必須在8253初始化編程中把計算得到的十進制計數初值n加上后綴H,以便在相應的傳送指令執行后能夠在AL(或AX)中得到十進制數n的BCD碼表示形式。

例如n=50,則應按如下方式寫入:

MOVAL,50H

OUTPORT,AL

如果n=1250,則需分兩次寫入,即:

MOVAL,50H

OUTPORT,AL;先寫低8位

MOVAL,12H

OUTPORT,AL;后寫高8位

也可按如下方法兩次寫入:

MOVAX,1250HOUTPORT,AL;先寫低8位MOVAL,AHOUTPORT,AL;

后寫高8位4.初始化編程舉例例12.1

若用8253的計數通道1,工作在方式0,按8位二進制計數,計數初值為128,則初始化編程如下:

(1)確定通道控制字-------50H

(2)8位計數初值-----------80H設8253的端口地址為48H~4BH,則初始化程序段為:

MOVAL,50HOUT4BH,AL;設置通道1控制字MOVAL,80HOUT49H,AL;寫通道1計數初值,只寫低8位

例12.2

若用通道0,工作在方式1,按十進制(BCD碼)計數,計數初值為2010,則初始化編程如下:(1)確定通道控制字------33H(2)計數初值低8位為10,高8位為20。若8253的端口地址同例1,則初始化程序段為:

MOVAL,33HOUT4BH,AL;設置通道0控制字MOVAL,10H

OUT48H,AL;寫通道0計數初值低8位MOVAL,20HOUT48H,AL;寫通道0計數初值高8位12.2.68253的讀出操作

1.讀之前先暫停計數2.讀之前先發鎖存命令12.38253的應用例12.4

8253用作脈沖信號發生器。

可用8253產生如圖12.14(a)所示的周期性脈沖信號,其重復周期為5μs,脈沖寬度為1μs。

設CLK信號頻率為2MHz。圖12.148253用作脈沖信號發生器MOVAL,00010010B;設置計數器0為方式1(單穩),只寫低8位,二進制計數OUT86H,ALMOVAL,02H;設置計數器0的計數初值為2OUT80HALMOVAL,01010100B;設置計數器1為方式2(分頻器),只寫低8位,二進制計數OUT86H,ALMOVAL,0AH;設置計數器1的計數初值為10OUT82H,AL例12.3

用8253實現生產流水線上的工件計數,每通過100個工件,揚聲器便發出頻率為1000Hz的音響信號,持續時間為5秒。設外部時鐘頻率為2MHZ。INTR(中斷請求)+5V時鐘2MHz8255APA0GATE1CLK1GATE0OUT08253CLK0OUT1驅動電路揚聲器+5V光敏電阻工件光源圖12.138253用于工件計數圖12.138253用于工件計數INTR+5V設8253的端口地址為40H~43H,8255A的端口地60H~63H,則實現本例功能的程序段如下:主程序:

MOVAL,00010001B;8253計數通道0初始化:方式0,只寫低8位,BCD計數.

OUT43H,ALMOVAL,99H;寫計數通道0的計數初值

OUT40H,ALMOVAL,10000000B;8255A初始化:A口方式0輸出

OUT63H,ALSTI;CPU開中斷HERE:JMPHERE;等待中斷中斷服務程序:MOVAL,01H;8255A的PA0輸出高電平,啟動8253計數通道1工作OUT60H,ALMOVAL,01110111B;8253計數通道1初始化:先寫低8位,后寫高8位OUT43H,AL;方式3,BCD計數M

溫馨提示

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

評論

0/150

提交評論