第10章 可編程定時計數(shù)控制器_第1頁
第10章 可編程定時計數(shù)控制器_第2頁
第10章 可編程定時計數(shù)控制器_第3頁
第10章 可編程定時計數(shù)控制器_第4頁
第10章 可編程定時計數(shù)控制器_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第10章可編程定時/計數(shù)控制器10.1定時/計數(shù)的基本概念10.2可編程定時/計數(shù)器Intel825310.38254簡介習(xí)題與思考題

定時與計數(shù)技術(shù)在計算機系統(tǒng)中具有極其重要的作用。微機系統(tǒng)都需要為CPU和外部設(shè)備提供定時控制或?qū)ν獠渴录M行計數(shù)。例如,分時系統(tǒng)的程序切換,向外部設(shè)備輸出周期性定時控制信號,定時時間到發(fā)出中斷申請或外部事件統(tǒng)計達到規(guī)定值發(fā)出控制信號或提出中斷請求等。因此微機系統(tǒng)都必須有定時技術(shù)。

為獲得穩(wěn)定準(zhǔn)確的定時,必須有穩(wěn)定準(zhǔn)確的時間基準(zhǔn)。定時的本質(zhì)是計數(shù),把若干小片的時間單元累加起來,就獲得一段時間。

定時的方法可以采用軟件或硬件兩種。10.1定時/計數(shù)的基本概念1.軟件定時方法

軟件定時方法利用CPU執(zhí)行指令需要若干指令周期的原理,運用軟件編程,循環(huán)執(zhí)行一段程序產(chǎn)生延時,配合簡單輸出接口向外送出定時控制信號。這種方法優(yōu)點是不需要增加硬件或硬件很簡單,只需要編制相應(yīng)的延時程序以備調(diào)用。缺點是執(zhí)行延時程序會增加CPU的時間開銷,浪費CPU的資源。2.硬件定時方法

硬件定時有專用的多諧振蕩器件或單穩(wěn)器件。使用這些定時器件獲得定時的缺點是改變定時要改變硬件,所以使用很不方便。目前在微機系統(tǒng)中都采用可編程通用定時器/計數(shù)器芯片。這種可編程芯片(1)使用靈活、定時時間長,改變定時時間或工作方式只要改變編程控制參數(shù)即可;(2)初始化編程后,就按設(shè)定的方式工作,不再占用CPU的資源。通用定時器/計數(shù)器芯片種類很多。生產(chǎn)微處理器公司,都推出自己的定時/計數(shù)器芯片。PC/XT機使用8253-5,而PC/AT使用8254-2。本章將對Intel8253/8254定時/計數(shù)器芯片進行討論。8253和8254的引腳和操作方式完全一樣。Intel先推出8253,在8253的基礎(chǔ)上稍加改進又推出8254。8254的改進體現(xiàn)在兩方面:首先,8254的計數(shù)頻率比8253更快,8253可以從直流到5MHz,而8254-2可達10MHz。另外,8254將8253控制字的最高兩位D7D6=11的不用狀態(tài),設(shè)置成一種有效控制字,稱為讀回命令。Intel8253是一片具有3個獨立16位計數(shù)器通道的可編程定時器/計數(shù)器芯片。每個通道都可以編程設(shè)定6種工作方式中的一種;每個計數(shù)器可設(shè)定為按二進制計數(shù)或BCD碼計數(shù),最高計數(shù)速率可達2.6MHz;使用單+5V電源,具有24條引腳雙列直插式封裝的大規(guī)模集成電路芯片;所有輸入輸出引腳都與TTL兼容。8253的讀/寫操作對系統(tǒng)時鐘沒有特殊的要求,可以應(yīng)用于由任何一種微處理器組成的系統(tǒng)中,作為可編程的方波頻率發(fā)生器、分頻器、實時時鐘、事件計數(shù)器和單脈沖發(fā)生器等。Intel8253有3個獨立的16位計數(shù)器,每個計數(shù)器都可以按照二進制或BCD碼進行計數(shù),計數(shù)速率可達2MHz(8254為10MHZ),每個計數(shù)器有6種工作方式,可編程設(shè)置和改變。它可用在多種場合,如方波發(fā)生器、分頻器、實時時鐘、事件計數(shù)等方面。10.2.1Intel8253的內(nèi)部結(jié)構(gòu)

8253內(nèi)部由數(shù)據(jù)總線緩沖器、控制字寄存器、計數(shù)器和讀寫控制邏輯4部分組成。其內(nèi)部結(jié)構(gòu)如圖10.1所示。10.2可編程定時/計數(shù)器Intel8253圖10.18253的內(nèi)部結(jié)構(gòu)圖

(1)數(shù)據(jù)總線緩沖器它與CPU的數(shù)據(jù)總線相連,是8位雙向三態(tài)緩沖器。CPU通過緩沖器對8253進行讀計數(shù)器當(dāng)前計數(shù)值和寫計數(shù)初值及設(shè)置8253的工作方式。(2)控制字寄存器此寄存器只能寫入而不能讀出。在8253初始化時,由CPU寫入控制字來設(shè)置計數(shù)器的工作方式。當(dāng)A1A0=11B時,訪問控制字寄存器,它從數(shù)據(jù)總線上接收CPU送來的控制字,并由控制字的D7D6的編碼決定控制字寫入哪個計數(shù)器的控制寄存器,其余位數(shù)決定相應(yīng)計數(shù)器通道的工作方式、選擇計數(shù)器是按二進制或BCD碼計數(shù)、并選擇相應(yīng)計數(shù)器初值的寫入順序。(3)計數(shù)器

計數(shù)器0、計數(shù)器1、計數(shù)器2是三個完全獨立、結(jié)構(gòu)相同的計數(shù)器,都是由16位可預(yù)置的減法計數(shù)器構(gòu)成。

每個計數(shù)通道都有CLK和GATE兩根輸入引腳和OUT一根輸出引腳。從編程的角度看,每個計數(shù)通道的結(jié)構(gòu)如圖10.2所示。圖10.28253內(nèi)部通道結(jié)構(gòu)圖

每個計數(shù)器通道,都包含一個用來接受初始計數(shù)值的16位計數(shù)寄存器CR,一個16位的計數(shù)器單元CE,一個用來鎖存CE內(nèi)容的16位的輸出鎖存器OL。CE的初值由CR的初始值裝入,并執(zhí)行從CLK引腳輸入的CLK脈沖的減1計數(shù)的任務(wù),但CPU不能直接訪問CE。計數(shù)器的初始值必須在開始計數(shù)之前,由CPU用輸出指令預(yù)置入計數(shù)寄存器CR內(nèi)。每個計數(shù)器單元CE都可對其CLK輸入端的輸入脈沖,按照二進制或BCD碼從預(yù)置的初始值開始進行減1計數(shù)。當(dāng)預(yù)置的初始值減為零時,從OUT引腳輸出一個電平或脈沖信號。在計數(shù)開始和計數(shù)的過程中,計數(shù)器可以由GATE引腳輸入的門控信號控制。3個計數(shù)通道的操作是完全獨立的。而每個計數(shù)通道的CLK、OUT和GATE相互遵從何種關(guān)系,是由寫入每個通道的控制字(即工作方式)決定的。在計數(shù)過程中,CPU隨時可以用IN指令,將計數(shù)器的當(dāng)前值從輸出鎖存器OL中讀出。讀當(dāng)前計數(shù)值時,不用中斷計數(shù)器的時鐘輸入,也不會影響計數(shù)器的繼續(xù)計數(shù)。(4)讀/寫控制邏輯這是8253內(nèi)部操作的控制電路,它從系統(tǒng)控制線上接收輸入信號,然后轉(zhuǎn)變成8253內(nèi)部操作的各種控制信號。讀/寫邏輯受片選信號的控制,當(dāng)為高電平時,表明該8253芯片沒有被選中,讀/寫邏輯被禁止,8253就不能和CPU交換信息,數(shù)據(jù)總線緩沖器呈現(xiàn)高阻狀態(tài),芯片與系統(tǒng)總線脫離。所以對芯片的編程設(shè)置和對芯片的訪問都不能進行。但計數(shù)器現(xiàn)行的計數(shù)工作可以繼續(xù)進行,而不受電平變化的影響。讀/寫邏輯還受、、A1和A0的控制。由A1、A0不同信號組合決定CPU訪問哪個通道和通道內(nèi)哪個內(nèi)部寄存器,并由、控制內(nèi)部總線上數(shù)據(jù)的傳送方向。10.2.28253的外部引腳8253的引腳包括與系統(tǒng)相連接的引腳和與定時計數(shù)電路相連接的引腳兩部分。其外部引腳如圖10.3所示。圖10.38253的外部引腳圖1.與定時計數(shù)電路相連接的引腳(1)CLK引腳時鐘輸入引腳,每個通道的計數(shù)器單元CE,對CLK輸入脈沖進行計數(shù)。CLK脈沖可以是系統(tǒng)時鐘脈沖,也可以由系統(tǒng)時鐘分頻或者是其它脈沖源提供。輸入脈沖可以是均勻、連續(xù)、周期精確的,也可以是不均勻、不連續(xù)、周期不定的。若8253用作分頻器或工作于定時器方式時,則CLK輸入是連續(xù)的、周期精確的時鐘脈沖,而OUT輸出必定是頻率降低的、周期精確的時鐘脈沖。若8253用作計數(shù)器,這時要求CLK輸入只是脈沖的數(shù)量,而不是脈沖的時間間隔,所以CLK可以輸入周期不定的脈沖,也可以輸入周期確定的脈沖。當(dāng)計數(shù)到預(yù)置的初值后,就從OUT端輸出一個脈沖。若CLK的脈沖周期不定,則OUT輸出的脈沖周期也不確定。8253的基本工作方式,就是對外部輸入到CLK引腳上的脈沖進行計數(shù)。至于是定時方式還是計數(shù)方式,完全取決于輸入脈沖的性質(zhì)和用戶的需要。(2)OUT引腳

它是8253的脈沖輸出引腳。OUT引腳輸出的信號取決于工作方式,它可以是電平、脈沖或方波等。(3)GATE引腳

門控輸入引腳。這是一根外部控制計數(shù)器工作的信號線,GATE引腳的作用取決于8253的工作方式。2.與系統(tǒng)相連接的引腳8253面向系統(tǒng)的引腳信號按照其傳輸信息的種類不同,分成3組:地址信號、數(shù)據(jù)信號和控制信號。A1,A0:內(nèi)部口地址的選擇,輸入。這兩個引腳上的信號組合決定對8255A內(nèi)部的哪一個口或寄存器進行操作。8253內(nèi)部共有4個端口:計數(shù)器0,計數(shù)器1,計數(shù)器2和控制口;

:片選,輸入,用來決定芯片是否被選中,由地址總線高位經(jīng)譯碼電路產(chǎn)生;、、和兩個地址引腳信號組合功能如表10-1所示。表10-18253A端口地址分配表A1A0操作數(shù)據(jù)傳送方式00100001010011001000010010101001011001111××××讀0計數(shù)器讀1計數(shù)器讀2計數(shù)器寫0計數(shù)器寫1計數(shù)器寫2計數(shù)器寫控制口8253無操作未選中0計數(shù)器OL→數(shù)據(jù)總線1計數(shù)器OL→數(shù)據(jù)總線2計數(shù)器OL→數(shù)據(jù)總線數(shù)據(jù)總線數(shù)據(jù)→0計數(shù)器CR數(shù)據(jù)總線數(shù)據(jù)→1計數(shù)器CR數(shù)據(jù)總線數(shù)據(jù)→2計數(shù)器CR數(shù)據(jù)總線數(shù)據(jù)→控制口數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)D0~D7:8位,雙向,三態(tài)數(shù)據(jù)線,用來與系統(tǒng)數(shù)據(jù)總線相連;:讀信號,輸入,控制8253將數(shù)據(jù)或狀態(tài)信息送給CPU;:寫信號,輸入,控制CPU將數(shù)據(jù)或控制信息送到8253。10.2.38253的控制字8253的控制字格式如圖10.4所示??刂谱址譃?個功能段,設(shè)定計數(shù)方式段、設(shè)定工作方式段、寫入/讀取初值格式段和計數(shù)器選擇段(相當(dāng)于特征位)。圖10.48253命令字格式

SC1、SC0:計數(shù)器選擇位。決定控制字是哪一個計數(shù)器的控制字。SC1:SC0=11B時,在8253中沒有使用,在8254中作為回讀控制命令。RL1、RL0:設(shè)置數(shù)據(jù)讀/寫格式位。8253的計數(shù)寄存器CR、計數(shù)單元CE和輸出鎖存器OL都是16位的,在寫初值時可以使用其中的8位,需要指明高8位還是低8位,也可以使用16位,必須先低8位后高8位。在讀取計數(shù)值時,可令RL1、RL0=00B,先將寫控制字時的計數(shù)值鎖存OL,然后再讀取。M2、M1、M0:設(shè)置計數(shù)器工作方式位。每個計數(shù)器都可以通過控制命令設(shè)置成6種工作方式之一。BCD:用于選擇每個計數(shù)器的計數(shù)制。在二進制計數(shù)時,計數(shù)初值的范圍是0000H~FFFFH,其中0000H是最大值,代表65536。在BCD碼計數(shù)時,計數(shù)初值的范圍是0000~9999,其中0000是最大值,代表10000。10.2.48253的工作方式8253的每個計數(shù)器都有6種工作方式,這6種方式的主要區(qū)別是:OUT輸出的波形不同,計數(shù)過程中GATE信號對計數(shù)操作的影響不同,啟動計數(shù)的觸發(fā)方式不同等。6種不同的工作方式如下。1.方式0—計數(shù)結(jié)束時中斷方式(InterruptonTerminalCount)方式0的工作時序如圖10.5所示。圖中,CW表示8253的控制字,LSB表示低8位計數(shù)值。如果是16位計數(shù)器,則還有高8位計數(shù)值MSB。圖10.5方式0波形圖

(1)計數(shù)過程當(dāng)寫入方式0控制字后,OUT立即變?yōu)榈碗娖剑⑶以谟嫈?shù)過程中一直維持低電平。若GATE=1,寫入初值后,在信號上升沿之后的下一個CLK脈沖計數(shù)值裝入計數(shù)器,并開始計數(shù),計數(shù)器減到零時,OUT輸出變?yōu)楦唠娖?,且一直保持到該通道重新裝入計數(shù)值或重新設(shè)置工作方式為止,此信號可用于申請中斷。按方式0計數(shù)時,計數(shù)器只計一遍。(2)GATE信號的影響門控信號GATE可以用來控制計數(shù)過程,GATE為高電平,允許計數(shù);GATE為低電平,暫停計數(shù);當(dāng)GATE重新為高電平時又恢復(fù)計數(shù)。(3)新的初值對計數(shù)過程的影響方式0是寫一次計數(shù)值,計數(shù)一次,計數(shù)器不會自動重裝初值重新開始計數(shù)。如果在計數(shù)過程中寫入新的計數(shù)初值,則在寫入新值后的下一個時鐘下降沿計數(shù)器將按新的初值計數(shù),即新的初值是立即有效的。8253寫計數(shù)值是由CPU的信號控制的,在信號的上升沿,計數(shù)值被送入對應(yīng)計數(shù)器的計數(shù)值寄存器,在信號上升沿之后的下一個CLK脈沖才開始計數(shù)。如果設(shè)置計數(shù)初值N,輸出OUT是在寫入命令執(zhí)行后,第N+1個CLK脈沖之后,才變?yōu)楦唠娖降?。后面的方?、2、4、5也有同樣的特點。2.方式1—可編程單穩(wěn)態(tài)觸發(fā)器(ProgrammableOne―short)圖10.6方式1波形圖

這種方式由外部門控信號GATE上升沿觸發(fā),使輸出端變?yōu)榈碗娖剑a(chǎn)生一個單拍負(fù)脈沖信號,脈沖寬度由計數(shù)值決定。(1)計數(shù)過程寫入控制字后,OUT輸出為高電平。寫入計數(shù)初值N后,計數(shù)器并不開始計數(shù),而要等到GATE上升沿后的下一個CLK輸入脈沖的下降沿,OUT輸出變低,計數(shù)才開始。計數(shù)結(jié)束時,OUT輸出變高,從而產(chǎn)生一個寬度為N個CLK周期的負(fù)脈沖。(2)GATE信號的影響方式1中GATE信號有兩個方面的作用:

第一,在計數(shù)結(jié)束后,若再來一個GATE信號上升沿,則下一個時鐘周期的下降沿又從初值開始計數(shù),而不需要重新寫入初值,即門控信號可重新觸發(fā)計數(shù);第二,在計數(shù)過程中,若來一個門控信號的上升沿,也在下一個時鐘下降沿從初值起重新計數(shù),即終止原來的計數(shù)過程,開始新的一輪計數(shù)。(3)新的初值對計數(shù)過程的影響如果在計數(shù)過程中寫入新的初值,不會立即影響計數(shù)過程。只有下一個門控信號到來后的第一個時鐘下降沿,才終止原來的計數(shù)過程,按新值開始計數(shù)。若計數(shù)結(jié)束前沒有GATE觸發(fā)信號,則原來計數(shù)過程正常結(jié)束。即新的初值下次有效。3.方式2—速率發(fā)生器、分頻器(RateGenerator)方式2的工作波形如圖10.7所示。圖10.7方式2波形圖

這種方式的功能如同一個N分頻計數(shù)器,輸出是輸入時鐘按照計數(shù)值N分頻后的一個連續(xù)脈沖。(1)計數(shù)過程寫入控制字后的時鐘上升沿,輸出端OUT變成高電平。若GATE為高電平,寫入計數(shù)初值后的第一個時鐘下降沿開始減1計數(shù)。減到1時,輸出端OUT變?yōu)榈碗娖?。減到0時,輸出OUT又變成高電平,從初值開始新的計數(shù)過程,即方式2能自動重裝初值,輸出固定頻率的脈沖。因此若裝入計數(shù)初值為N,則OUT引腳上每隔N個時鐘脈沖就輸出一個負(fù)脈沖,其頻率為輸入時鐘脈沖頻率的1/N,故方式2也稱為分頻器。(2)GATE信號的影響在方式2中,GATE信號為低電平終止計數(shù),而由低電平恢復(fù)為高電平后的第一個時鐘下降沿重新從初值開始計數(shù)。由此可見,GATE一直維持高電平時,計數(shù)器方能作為一個N分頻器。(3)新的初值對計數(shù)過程的影響如果在計數(shù)過程中寫入新的初值,且GATE信號一直維持高電平,則新的初值不會立即影響當(dāng)前的計數(shù)過程,但在計數(shù)結(jié)束后的下一個計數(shù)周期將按新的初值計數(shù),即新的初值下次有效。4.方式3—方波發(fā)生器(SquareWaveGenerator)方式3的工作波形如圖10.8所示。該方式與方式2相類似,只是OUT輸出的是對稱方波(計數(shù)初值N為偶數(shù))或近似對稱方波(計數(shù)初值N為奇數(shù))。圖10.8方式3波形圖

(1)計數(shù)過程方式3的計數(shù)過程按計數(shù)初值的不同分為兩種情況:①計數(shù)初值為偶數(shù)。寫入控制字后的時鐘上升沿,輸出端OUT變成高電平。若GATE=1,寫入計數(shù)初值后的第一個時鐘下降沿開始減1計數(shù)。減到N/2時,輸出端OUT變?yōu)榈碗娖?;減到0時,輸出端OUT又變成高電平,并重新從初值開始新的計數(shù)過程。可見,輸出端OUT的波形是連續(xù)的完全對稱的方波,故稱方波發(fā)生器。②計數(shù)初值為奇數(shù)。寫入控制字后的時鐘上升沿,輸出端OUT變成高電平。若GATE=1,寫入計數(shù)初值后的第一個時鐘下降沿開始減1計數(shù),減到(N+1)/2以后,輸出端OUT變?yōu)榈碗娖?;減到0時,輸出端OUT又變成高電平,并重新從初值開始新的計數(shù)過程。這時輸出波形的高電平寬度比低電平寬度多一個時鐘周期,為近似對稱方波。(2)GATE信號的影響GATE高電平時,允許計數(shù);GATE低電平時,禁止計數(shù)。如果在輸出端OUT為低電平期間,GATE變低,則OUT將立即變高,并停止計數(shù)。當(dāng)GATE變高以后,計數(shù)器重新裝入初值并重新開始計數(shù)。(3)新的初值對計數(shù)過程的影響如果在計數(shù)過程中寫入新的初值,而GATE信號一直維持高電平,則新的初值不會影響當(dāng)前的計數(shù)過程,只有在計數(shù)結(jié)束后的下一個計數(shù)周期,才按新的初值計數(shù)。若寫入新的初值后,遇到門控信號的上升沿,則終止現(xiàn)行計數(shù)過程,從下一個時鐘下降沿重新開始計數(shù)。5.方式4—軟件觸發(fā)選通方式(SoftwareTriggeredStrobe)方式4的工作波形如圖10.9所示。

圖10.9方式4波形圖

該方式是一種軟件觸發(fā)計數(shù)方式。即寫入一次初值開始一次新的計數(shù)。(1)計數(shù)過程寫入方式控制字后,OUT輸出高電平。若GATE=1,寫入初值的下一個CLK脈沖開始減1計數(shù),計數(shù)到達0值(注意:不是減到1),OUT輸出為低電平,持續(xù)一個CLK脈沖周期后再恢復(fù)到高電平。方式4之所以稱為軟件觸發(fā)選通方式,是因為計數(shù)過程是由軟件把計數(shù)初值裝入計數(shù)寄存器來觸發(fā)的,計數(shù)初值n僅一次有效。若要繼續(xù)計數(shù),則需重新裝入初值。(2)門控信號的影響GATE為高電平時,允許計數(shù);GATE信號變低,禁止計數(shù),輸出維持當(dāng)時的電平,直到GATE變成高電平后繼續(xù)計數(shù),從OUT端輸出一個負(fù)脈沖。(3)新的初值對計數(shù)過程的影響在計數(shù)過程中改變計數(shù)值,則在寫入新值后的下一個時鐘下降沿計數(shù)器將新的初值計數(shù),即新值是立即有效的。6.方式5—硬件觸發(fā)選通方式(HardwareTriggeredStrobe)方式5的工作波形如圖10.10所示。

圖10.10方式5波形圖

該方式為硬件觸發(fā)計數(shù)方式,即門控信號GATE上升沿觸發(fā)計數(shù)。(1)計數(shù)過程寫入控制字后,輸出OUT即為高電平。寫入計數(shù)初值后,計數(shù)器并不立即開始計數(shù),而是由門控脈沖的上升沿觸發(fā)。計數(shù)結(jié)束(計數(shù)器減到0)時輸出一個持續(xù)時間為一個TCLK的負(fù)脈沖,然后輸出恢復(fù)為高電平。直到GATE信號再次觸發(fā)。(2)門控信號的影響若在計數(shù)過程中,又有一個門控信號的上升沿,則立即終止當(dāng)前的計數(shù)過程,且在下一個時鐘下降沿,又從初值開始計數(shù),如果計數(shù)過程結(jié)束后,來一個門控上升沿,計數(shù)器也會在下一個時鐘下降沿,又從初值開始減1計數(shù),即門控信號上升沿任何時候到來都會立即觸發(fā)一個計數(shù)過程。(3)新的初值對計數(shù)過程的影響如果在計數(shù)過程中寫入新的初值,則新的初值不會立即影響當(dāng)前的計數(shù)過程,只有到下一個門控信號上升沿到來后,才從新的初值開始減1計數(shù)。即新的計數(shù)初值在下一個門控信號上升沿觸發(fā)后有效。7.工作方式小結(jié)8253六種工作方式都有自己的特點,下面就其特點作一個簡單總結(jié)。(1)在六種工作方式中,只有方式0在寫入控制字后OUT變?yōu)榈碗娖剑渌?種方式都在寫入控制字后OUT輸出高電平。(2)預(yù)置值N與輸出波形的關(guān)系如表10-2所示。表10-28253初值N與輸出波形的關(guān)系方式初值N與波形的關(guān)系0寫入初值N后,經(jīng)N+1個CLK輸出變?yōu)楦唠娖?輸出一個寬度為N個CLK的負(fù)脈沖2每N個CLK脈沖,輸出一個寬度為CLK周期的負(fù)脈沖3方波輸出,周期為N個CLK周期,N為奇數(shù)時高電平比低電平多一個CLK周期4寫入初值N后,計數(shù)結(jié)束后輸出一個寬度為CLK周期的負(fù)脈沖5寫入初值N后,由門控觸發(fā),計數(shù)結(jié)束后輸出一個寬度為CLK周期的負(fù)脈沖表中“N+l”處,這里加1是考慮到預(yù)置的初值需要一個計數(shù)脈沖才能裝入。當(dāng)然,對其它方式初值的裝入也都需要一個CLK脈沖,只是這一個CLK在輸出中不必加以考慮,因為方式1要考慮的是單穩(wěn)負(fù)脈沖的寬度,而方式2,3初值的裝入只影響第一個周期。

(3)方式2,4,5有相同之處,即計數(shù)到終點,都輸出寬度為1個CLK周期的低電平脈沖。主要不同點為:方式2為自動啟動,重復(fù)進行計數(shù)及輸出低電平脈沖的過程;方式4也為自動啟動,但僅輸出一個低電平脈沖;方式5需等待GATE上升沿的到來才開始計數(shù),也只輸出一個低電平脈沖。另外,方式2為減到1輸出一個低電平脈沖,而方式4和5是減到0.(4)方式2和方式3也有相同之處,即都輸出周期性信號,每當(dāng)計數(shù)到終點,初始化時預(yù)置的初值都會被自動重新裝入(減1計數(shù)器)。門控信號GATE在不同工作方式下的作用,如表10-3所示。方式GATE引腳輸入狀態(tài)所起的作用輸出波形高電平低電平下降沿上升沿0允許禁止暫停繼續(xù)計數(shù)過程中為低,計數(shù)值減為0時,變高(單次)1不影響不影響不影響開始或重新開始寬度為n個CLK的低電平(單次)2允許禁止停止重新開始周期為n個CLK,寬度1個CLK的負(fù)脈沖(重復(fù))3允許禁止停止重新開始周期為n個CLK的方波(重復(fù))4允許禁止停止重新開始減為0時輸出寬度為1個CLK的負(fù)脈沖(單次)5不影響不影響不影響開始或重新開始減為0時輸出寬度為1個CLK的負(fù)脈沖(單次)表10-3門控信號GATE作用表10.2.58253的應(yīng)用舉例1.8253的初始化要使用8253,必須首先對其進行初始化,初始化有兩種方法:(1)對每個計數(shù)器分別進行初始化,先寫控制字,后寫計數(shù)值。如果計數(shù)值是16位的,則先寫低8位(LSB)再寫高8位(MSB)。(2)先寫所有計數(shù)器的方式控制字,再寫各個計數(shù)器的計數(shù)值。如果計數(shù)值是16位的,則先寫低8位再寫高8位。

例如:假設(shè)一個8253在某系統(tǒng)中的端口地址40H~43H,如果要將計數(shù)器0設(shè)置為工作方式3,計數(shù)初值為3060H,采用二進制計數(shù)法,則初始化方法如下:MOV AL, 36H ;計數(shù)器0,方式3,計數(shù)值16位,二進制計數(shù)OUT 43H, AL ;寫入控制寄存器MOV AX, 3060H ;設(shè)置計數(shù)值OUT 40H, AL ;寫低8位至計數(shù)器0MOV AL, AHOUT 40H, AL ;寫高8位至計數(shù)器02.8253的讀操作為了對計數(shù)器的計數(shù)值進行實時顯示、實時檢測或?qū)τ嫈?shù)值進行數(shù)據(jù)處理,用戶就需要讀回計數(shù)通道的計數(shù)值。8253只可以讀回每個通道的計數(shù)值,它是由CPU訪問每個通道的計數(shù)鎖存器OL實現(xiàn)的。讀出的端口地址和寫入計數(shù)初值是同一個端口地址。如果是8位計數(shù),則只需讀1次,若是16位計數(shù),則同一端口地址要讀兩次,第一次讀入的是計數(shù)值的低8位,第二次讀入的是計數(shù)值的高8位。讀操作必須嚴(yán)格按控制字RL1、RL0確定的格式進行。8253有兩種讀計數(shù)值的方法:(1)讀之前先停止計數(shù)這種方法是在讀之前用GATE信號,控制計數(shù)器暫停計數(shù),或由外部邏輯禁止所要讀的計數(shù)通道的CLK脈沖輸入。因為計數(shù)值是16位的,因此CPU要執(zhí)行兩次讀入指令,還要把讀入的數(shù)存入寄存器或存儲單元中。兩次讀入必然有一段時間間隔,若計數(shù)器不停止計數(shù),兩次讀入的計數(shù)值就不是同一個值,這就會使讀入的計數(shù)值有誤,所以,讀之前必須先停止計數(shù)。以讀計數(shù)器0為例,這種讀入要求軟件和硬件配合,即先使GATE為低電平,禁止計數(shù)器計數(shù),再執(zhí)行如下讀入程序段(端口地址40H~43H):IN AL, 40H;讀入計數(shù)器0的OL低8位MOV BL, ALIN AL, 40H;讀入計數(shù)器0的OL高8位MOV BH, AL(2)讀之前先送計數(shù)器鎖存命令計數(shù)鎖存命令是控制字RL1、RL0為00的一種特殊形式,所以寫入的端口地址是控制字地址。再由鎖存命令的SC1、SC0編碼,決定所要鎖存的計數(shù)器。鎖存命令的低4位無效,可以為0000B。假設(shè)要讀計數(shù)器2的計數(shù)值,則要執(zhí)行如下程序段:MOV AL, 80H ;計數(shù)器2鎖存命令OUT 43H,AL ;寫入計數(shù)器2控制寄存器IN AL, 42H ;讀計數(shù)器2輸出鎖存器OL低8位MOV BL, ALIN AL, 42H ;讀計數(shù)器2輸出鎖存器OL高8位M0V BH, AL

從上面程序段可見,這種讀計數(shù)值方法,必須先有一次送鎖存命令的寫操作,然后才能進行讀操作。這就比第一種方法多用兩條指令,但卻省去對硬件配合的要求。當(dāng)執(zhí)行完OUT指令后,計數(shù)值被鎖存在OL內(nèi)。每個計數(shù)器都有一個16位的計數(shù)輸出鎖存器OL,分別鎖存計數(shù)值的高8位和低8位。當(dāng)沒有接到鎖存命令之前,在計數(shù)器的計數(shù)過程中,每個計數(shù)器的計數(shù)值輸出鎖存器隨計數(shù)單元CE計數(shù)值的變化而變化。當(dāng)接到鎖存命令后,OL中的計數(shù)值就被鎖存住了,不再隨計數(shù)單元變化。鎖存器中的數(shù)值一直保存到數(shù)據(jù)被讀走或?qū)τ嫈?shù)器重新編程為止。

當(dāng)讀走OL中的數(shù)據(jù)或重新編程后,計數(shù)輸出鎖存器解除鎖存狀態(tài),又開始隨計數(shù)單元的計數(shù)值變化。由于有對計數(shù)值鎖存的功能,讀計數(shù)值時,可以不停止計數(shù)器的計數(shù)。CPU可以在任何時刻先送鎖存命令再讀計數(shù)值,而對計數(shù)單元的計數(shù)沒有任何影響。顯然送完鎖存命令之后不管什么時候讀計數(shù)值,讀到的總是發(fā)出鎖存命令那個時刻的計數(shù)值。每次讀計數(shù)值之前都必須先送鎖存命令。如果讀之前使用了兩次鎖存命令,則第二個命令是無效的。讀入的計數(shù)值是執(zhí)行第一次鎖存命令時所鎖存的計數(shù)值。補充例題例1.在以8086為核心的系統(tǒng)中,擴展一片8253芯片,要求通道0每個2ms輸出一個負(fù)脈沖,其工作頻率為2MHZ,8253與8086總線連接圖如下。完成通道初始化程序。1)由分析可知,8253的端口地址為0C0H-0C6H,只占偶地址。由于題目要求每個2ms輸出一個負(fù)脈沖,選擇工作方式2.2)計算計數(shù)初值。設(shè)定時時間為t,通道時鐘頻率為f,計數(shù)初值為N,則N=t*f=2*10-3*2*106=4000.3)初始化編程確定控制字00110100B=34H確定端口地址:通道00C0H,控制端口0C6HMOVAL,34HOUT0C6H,AL;寫控制方式字MOVAX,4000;將計數(shù)初值送AXOUT0C0H,AL;先寫低8位,寫入通道0MOVAL,AHOUT0C0H,AL;再寫高8位,寫入通道0例2.在以8086為核心的系統(tǒng)中,擴展一片8253芯片,要求通道0對外部脈沖計數(shù),記滿400個脈沖后向CPU發(fā)出一個中斷請求,端口地址為80H、82H、84H、86H,完成軟硬件設(shè)計。分析1)完成硬件設(shè)計。如果用譯碼器Y0作為8253的片選,當(dāng)A7為1,A6A5A4A3A0均為0且M/IO為低時,譯碼器工作,依據(jù)給出的8253地址,可分析出8253與8086總線系統(tǒng)連接圖如下所示。2)選擇工作方式。根據(jù)題目要求,選擇通道0工作方式為0.計數(shù)初值為400,確定控制字為00110000B=30H初始化程序如下:MOVAL,30HOUT86H,ALMOVAX,400OUT80H,ALMOVAL,AHOUT80H,AL例3.如果在例2的基礎(chǔ)上,有要求使用通道2輸出30HZ的方波,通道的工作時鐘為2MHZ,則軟硬件設(shè)計如何修改?分析此時通道2應(yīng)工作在方式3,方波周期t=1/30HZ=33ms。因此,計數(shù)初值N=33ms*2MHZ=66000>65536,超出了16位計數(shù)器的計數(shù)范圍,也就是說,一個通道無法完成這樣長的定時工作,怎么辦?

為此,可采用多個通道共同完成(也稱為計數(shù)器的級聯(lián)或串聯(lián)),第一通道的輸出OUT作為第二級通道的CLK輸入,第二級通道的輸出OUT作為第三級通道的CLK輸入,……,最后一級的OUT作為最終輸出結(jié)果。其中,前幾級均采用方式3,最后一級采用滿足題目要求的工作方式。

究竟需要多少級則取決于N的大小。可以將N分解為幾個數(shù)的乘積,每一個數(shù)均小于65536,有幾個數(shù)就需要幾個通道,每個數(shù)就是相應(yīng)通道的計數(shù)初值。對本例來講,可以把N分解為N=66*1000,因此需要2個通道,通道1采用方式3,計數(shù)初值為66,通道2采用方式3,計數(shù)初值為1000.連接電路圖如下圖所示。芯片端口地址為80H—86H,通道1控制字為01010110B=56H,通道2控制字10110110B=0B6H初始化程序:MOVAL,56HOUT86H,ALMOVAL,66OUT82H,AL;只寫低8位,寫入通道1MOVAL,0B6HOUT86H,ALMOVAX,1000OUT84H,AL;先寫低8位,寫入通道2MOVAL,AHOUT84H,AL;再寫高8位,寫入通道23.8253在IBMPC/XT機的應(yīng)用在PC/XT機中用了一片8253,如圖10.11所示。圖10.118253在IBM-PC/XT機的應(yīng)用的示意圖

三個計數(shù)器的使用情況如下: 計數(shù)器0(CNT0)作軟時鐘的時間基準(zhǔn)。程序設(shè)置CNT0為方式3,輸出方波的周期約為55

ms(54.925493

ms),該信號送到中斷控制器8259A的IR0端。因此,每隔55

ms產(chǎn)生一次中斷請求。在中斷服務(wù)程序中對時間基準(zhǔn)信號進行計數(shù),修改用來表示時間的相應(yīng)內(nèi)存單元(計滿一秒,秒加1;計滿60秒,分加1,秒清0。如次類推)。計數(shù)器1(CNT1)作動態(tài)RAM的刷新定時。程序設(shè)置CNT1為方式2,每隔15.084μs產(chǎn)生一個窄脈沖輸出信號,請求執(zhí)行動態(tài)RAM的刷新操作(刷新一行),這樣可保證在2

ms內(nèi)將全部單元刷新一遍。CNT1的輸出信號送往DMA控制器8237A通道0的DMA請求輸入端。當(dāng)通道0執(zhí)行DMA操作時,對動態(tài)RAM進行刷新。計數(shù)器2(CNT2)也設(shè)置成方式3,輸出的方波送到揚聲器。用程序設(shè)定CNT2輸出波形的頻率和延續(xù)時間就能控制揚聲器的音調(diào)和發(fā)音長短。在PC/XT機中8253的CNT0、CNT1、CNT2和控制字口的地址分別是40H、4lH、42H和43H。這三個計數(shù)器在系統(tǒng)中的初始化程序如下:(1)計數(shù)器0用于定時中斷(約55ms)MOV AL, 36H ;計數(shù)器0,方式3,寫兩個字節(jié),二進制計數(shù)OUT 43H, AL ;控制字送控制字寄存器MOV AL, 0 ;計數(shù)值為最大值OUT 40H, AL ;寫低8位OUT 40H, AL ;寫高8位(2)計數(shù)器1用于定時(15μs)DMA請求MOV AL, 54H ;計數(shù)器1,方式2,只寫低8位,二進制計數(shù)OUT 43, ALMOV AL, 12H

溫馨提示

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

評論

0/150

提交評論