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

下載本文檔

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

文檔簡(jiǎn)介

1、第10章可編程定時(shí)/計(jì)數(shù)控制器 第第10章章 可編程定時(shí)可編程定時(shí)/計(jì)數(shù)控制器計(jì)數(shù)控制器10.1 定時(shí)/計(jì)數(shù)的基本概念10.2 可編程定時(shí)/計(jì)數(shù)器Intel 825310.3 8254簡(jiǎn)介習(xí)題與思考題第10章可編程定時(shí)/計(jì)數(shù)控制器 定時(shí)與計(jì)數(shù)技術(shù)定時(shí)與計(jì)數(shù)技術(shù)在計(jì)算機(jī)系統(tǒng)中具有極其重要的作具有極其重要的作用用。微機(jī)系統(tǒng)都需要為為CPU和外部設(shè)備和外部設(shè)備提供定時(shí)控制提供定時(shí)控制或?qū)ν獠渴录M(jìn)行計(jì)數(shù)對(duì)外部事件進(jìn)行計(jì)數(shù)。例如,分時(shí)系統(tǒng)的程序切換,向外部設(shè)備輸出周期性定時(shí)控制信號(hào),定時(shí)時(shí)間到發(fā)出中斷申請(qǐng)或外部事件統(tǒng)計(jì)達(dá)到規(guī)定值發(fā)出控制信號(hào)或提出中斷請(qǐng)求等。因此微機(jī)系統(tǒng)都必須有定時(shí)技術(shù)微機(jī)系統(tǒng)都必須有

2、定時(shí)技術(shù)。 為獲得穩(wěn)定準(zhǔn)確的定時(shí),必須有穩(wěn)定準(zhǔn)確的時(shí)間基為獲得穩(wěn)定準(zhǔn)確的定時(shí),必須有穩(wěn)定準(zhǔn)確的時(shí)間基準(zhǔn)準(zhǔn)。定時(shí)的本質(zhì)是計(jì)數(shù)定時(shí)的本質(zhì)是計(jì)數(shù),把若干小片的時(shí)間單元累加把若干小片的時(shí)間單元累加起來(lái),就獲得一段時(shí)間。起來(lái),就獲得一段時(shí)間。 定時(shí)的方法可以采用定時(shí)的方法可以采用軟件軟件或或硬件硬件兩種兩種。10.1 定時(shí)定時(shí)/計(jì)數(shù)的基本概念計(jì)數(shù)的基本概念第10章可編程定時(shí)/計(jì)數(shù)控制器 1. 軟件定時(shí)方法軟件定時(shí)方法 軟件定時(shí)方法軟件定時(shí)方法利用利用CPU執(zhí)行指令需要若干指令周期的執(zhí)行指令需要若干指令周期的原理,運(yùn)用軟件編程,循環(huán)執(zhí)行一段程序產(chǎn)生延時(shí),配合原理,運(yùn)用軟件編程,循環(huán)執(zhí)行一段程序產(chǎn)生延時(shí),配

3、合簡(jiǎn)單輸出接口向外送出定時(shí)控制信號(hào)簡(jiǎn)單輸出接口向外送出定時(shí)控制信號(hào)。這種方法優(yōu)點(diǎn)優(yōu)點(diǎn)是不不需要增加硬件或硬件很簡(jiǎn)單,只需要編制相應(yīng)的延時(shí)程序需要增加硬件或硬件很簡(jiǎn)單,只需要編制相應(yīng)的延時(shí)程序以備調(diào)用以備調(diào)用。缺點(diǎn)缺點(diǎn)是是執(zhí)行延時(shí)程序會(huì)增加執(zhí)行延時(shí)程序會(huì)增加CPU的時(shí)間開(kāi)銷,的時(shí)間開(kāi)銷,浪費(fèi)浪費(fèi)CPU的資源。的資源。第10章可編程定時(shí)/計(jì)數(shù)控制器 2. 硬件定時(shí)方法硬件定時(shí)方法 硬件定時(shí)硬件定時(shí)有專用的多諧振蕩器件或單穩(wěn)器件專用的多諧振蕩器件或單穩(wěn)器件。使用這些使用這些定時(shí)器件獲得定時(shí)的缺點(diǎn)定時(shí)器件獲得定時(shí)的缺點(diǎn)是是改變定時(shí)要改變硬件,所以使改變定時(shí)要改變硬件,所以使用很不方便用很不方便。目前在

4、微機(jī)系統(tǒng)中都采用目前在微機(jī)系統(tǒng)中都采用可編程通用定時(shí)器可編程通用定時(shí)器/計(jì)數(shù)器芯片計(jì)數(shù)器芯片。這種可編程芯片(1)使用靈活、定時(shí)時(shí)間長(zhǎng),使用靈活、定時(shí)時(shí)間長(zhǎng),改變定時(shí)時(shí)間或工作方式只要改變編程控制參數(shù)即可改變定時(shí)時(shí)間或工作方式只要改變編程控制參數(shù)即可;(2)初初始化編程后,就按設(shè)定的方式工作,不再占用始化編程后,就按設(shè)定的方式工作,不再占用CPU的資源的資源。通用定時(shí)器/計(jì)數(shù)器芯片種類很多。生產(chǎn)微處理器公司,都推出自己的定時(shí)/計(jì)數(shù)器芯片。PC/XT機(jī)使用8253-5,而PC/AT使用8254-2。本章將對(duì)Intel 8253/8254定時(shí)/計(jì)數(shù)器芯片進(jìn)行討論。第10章可編程定時(shí)/計(jì)數(shù)控制器 8

5、253和8254的引腳和操作方式完全一樣。Intel先推出8253,在在8253的基礎(chǔ)上稍加改進(jìn)又推出的基礎(chǔ)上稍加改進(jìn)又推出8254。8254的改進(jìn)體現(xiàn)在兩方面:首先,8254的計(jì)數(shù)頻率比的計(jì)數(shù)頻率比8253更快,更快,8253可以從直流到可以從直流到5MHz,而,而8254-2可達(dá)可達(dá)10MHz。另外,8254將將8253控制字的最高兩位控制字的最高兩位D7D6=11的不用狀態(tài),設(shè)的不用狀態(tài),設(shè)置成一種有效控制字,稱為讀回命令。置成一種有效控制字,稱為讀回命令。第10章可編程定時(shí)/計(jì)數(shù)控制器 Intel 8253是一片具有3個(gè)獨(dú)立個(gè)獨(dú)立16位計(jì)數(shù)器通道位計(jì)數(shù)器通道的可編程定時(shí)器可編程定時(shí)器/

6、計(jì)數(shù)器芯片計(jì)數(shù)器芯片。每個(gè)通道都可以編程設(shè)定可以編程設(shè)定6種工作方式中的一種種工作方式中的一種;每個(gè)計(jì)數(shù)器可設(shè)定為按二進(jìn)制計(jì)數(shù)或二進(jìn)制計(jì)數(shù)或BCD碼計(jì)數(shù)碼計(jì)數(shù),最高計(jì)數(shù)速率可達(dá)2.6MHz;使用單單+5V電源電源,具有24條引腳雙列直插式封條引腳雙列直插式封裝的大規(guī)模集成電路芯片裝的大規(guī)模集成電路芯片;所有輸入輸出引腳都與輸入輸出引腳都與TTL兼容。兼容。 8253的讀的讀/寫操作對(duì)系統(tǒng)時(shí)鐘沒(méi)有特殊的要求,可以應(yīng)用于由寫操作對(duì)系統(tǒng)時(shí)鐘沒(méi)有特殊的要求,可以應(yīng)用于由任何一種微處理器組成的系統(tǒng)中任何一種微處理器組成的系統(tǒng)中,作為可編程的方波頻率發(fā)生器、分頻器、實(shí)時(shí)時(shí)鐘、事件計(jì)數(shù)器和單脈沖發(fā)生器等。第

7、10章可編程定時(shí)/計(jì)數(shù)控制器 Intel 8253有3個(gè)獨(dú)立的16位計(jì)數(shù)器,每個(gè)計(jì)數(shù)器都可以按照二進(jìn)制或BCD碼進(jìn)行計(jì)數(shù),計(jì)數(shù)速率可達(dá)2MHz(8254為10MHZ),每個(gè)計(jì)數(shù)器有6種工作方式,可編程設(shè)置和改變。它可用在多種場(chǎng)合,如方波發(fā)生器、分頻器、實(shí)時(shí)時(shí)鐘、事件計(jì)數(shù)等方面。10.2.1 Intel 8253的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 8253內(nèi)部由數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器、控制字寄存器控制字寄存器、計(jì)數(shù)器計(jì)數(shù)器和和讀寫控制邏輯讀寫控制邏輯4部分組成。其內(nèi)部結(jié)構(gòu)如圖10.1所示。10.2 可編程定時(shí)可編程定時(shí)/計(jì)數(shù)器計(jì)數(shù)器Intel 8253第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.1 8253

8、的內(nèi)部結(jié)構(gòu)圖第10章可編程定時(shí)/計(jì)數(shù)控制器 (1)數(shù)據(jù)總線緩沖器 它與它與CPU的數(shù)據(jù)總線相連的數(shù)據(jù)總線相連,是8位雙向三態(tài)緩沖器位雙向三態(tài)緩沖器。CPU通通過(guò)緩沖器對(duì)過(guò)緩沖器對(duì)8253進(jìn)行讀計(jì)數(shù)器當(dāng)前計(jì)數(shù)值和寫計(jì)數(shù)初值及進(jìn)行讀計(jì)數(shù)器當(dāng)前計(jì)數(shù)值和寫計(jì)數(shù)初值及設(shè)置設(shè)置8253的工作方式的工作方式。(2)控制字寄存器 此寄存器只能寫入而不能讀出只能寫入而不能讀出。在8253初始化時(shí),由CPU寫入控制字來(lái)設(shè)置計(jì)數(shù)器的工作方式。當(dāng)A1A0=11B時(shí),訪訪問(wèn)控制字寄存器問(wèn)控制字寄存器,它從數(shù)據(jù)總線上接收它從數(shù)據(jù)總線上接收CPU送來(lái)的控制字,送來(lái)的控制字,并并由控制字的由控制字的D7D6的編碼的編碼決定控

9、制字寫入哪個(gè)計(jì)數(shù)器的控決定控制字寫入哪個(gè)計(jì)數(shù)器的控制寄存器,制寄存器,其余位數(shù)決定相應(yīng)計(jì)數(shù)器通道的工作方式、選擇相應(yīng)計(jì)數(shù)器通道的工作方式、選擇計(jì)數(shù)器是按二進(jìn)制或計(jì)數(shù)器是按二進(jìn)制或BCD碼計(jì)數(shù)、并選擇相應(yīng)計(jì)數(shù)器初值碼計(jì)數(shù)、并選擇相應(yīng)計(jì)數(shù)器初值的寫入順序。的寫入順序。 第10章可編程定時(shí)/計(jì)數(shù)控制器 (3)計(jì)數(shù)器 計(jì)數(shù)器計(jì)數(shù)器0、計(jì)數(shù)器、計(jì)數(shù)器1、計(jì)數(shù)器、計(jì)數(shù)器2是三個(gè)完全獨(dú)立、結(jié)構(gòu)相三個(gè)完全獨(dú)立、結(jié)構(gòu)相同的計(jì)數(shù)器,同的計(jì)數(shù)器,都是由都是由16位可預(yù)置的減法計(jì)數(shù)器構(gòu)成位可預(yù)置的減法計(jì)數(shù)器構(gòu)成。 每個(gè)計(jì)數(shù)通道都有每個(gè)計(jì)數(shù)通道都有CLK和和GATE兩根輸入引腳和兩根輸入引腳和OUT一一根輸出引腳根輸出

10、引腳。從編程的角度看,每個(gè)計(jì)數(shù)通道的結(jié)構(gòu)如圖10.2所示。第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.2 8253內(nèi)部通道結(jié)構(gòu)圖第10章可編程定時(shí)/計(jì)數(shù)控制器 每個(gè)計(jì)數(shù)器通道,都包含一個(gè)用來(lái)接受初始計(jì)數(shù)值的用來(lái)接受初始計(jì)數(shù)值的16位位計(jì)數(shù)寄存器計(jì)數(shù)寄存器CR,一個(gè)一個(gè)16位的計(jì)數(shù)器單元位的計(jì)數(shù)器單元CE,一個(gè)用來(lái)鎖一個(gè)用來(lái)鎖存存CE內(nèi)容的內(nèi)容的16位的輸出鎖存器位的輸出鎖存器OL。CE的初值由的初值由CR的初的初始值裝入始值裝入,并執(zhí)行從并執(zhí)行從CLK引腳輸入的引腳輸入的CLK脈沖的減脈沖的減1計(jì)數(shù)計(jì)數(shù)的任務(wù)的任務(wù),但但CPU不能直接訪問(wèn)不能直接訪問(wèn)CE。 計(jì)數(shù)器的初始值必須在開(kāi)始計(jì)數(shù)之前計(jì)數(shù)器的

11、初始值必須在開(kāi)始計(jì)數(shù)之前,由由CPU用輸出指令用輸出指令預(yù)置入計(jì)數(shù)寄存器預(yù)置入計(jì)數(shù)寄存器CR內(nèi)內(nèi)。每個(gè)計(jì)數(shù)器單元每個(gè)計(jì)數(shù)器單元CE都可對(duì)其都可對(duì)其CLK輸入端的輸入脈沖,按照二進(jìn)制或輸入端的輸入脈沖,按照二進(jìn)制或BCD碼從預(yù)置的碼從預(yù)置的初始值開(kāi)始進(jìn)行減初始值開(kāi)始進(jìn)行減1計(jì)數(shù)計(jì)數(shù)。當(dāng)預(yù)置的初始值減為零時(shí),從當(dāng)預(yù)置的初始值減為零時(shí),從OUT引腳輸出一個(gè)電平或脈沖信號(hào)。引腳輸出一個(gè)電平或脈沖信號(hào)。 第10章可編程定時(shí)/計(jì)數(shù)控制器 在計(jì)數(shù)開(kāi)始和計(jì)數(shù)的過(guò)程中,計(jì)數(shù)器可以由計(jì)數(shù)器可以由GATE引腳輸引腳輸入的門控信號(hào)控制入的門控信號(hào)控制。3個(gè)計(jì)數(shù)通道的操作是完全獨(dú)立的個(gè)計(jì)數(shù)通道的操作是完全獨(dú)立的。而每個(gè)

12、計(jì)數(shù)通道的而每個(gè)計(jì)數(shù)通道的CLK、OUT和和GATE相互遵從何種關(guān)系,相互遵從何種關(guān)系,是由寫入每個(gè)通道的控制字是由寫入每個(gè)通道的控制字(即工作方式即工作方式)決定的。決定的。 在計(jì)數(shù)過(guò)程中,在計(jì)數(shù)過(guò)程中,CPU隨時(shí)可以用隨時(shí)可以用IN指令,將計(jì)數(shù)器的當(dāng)前指令,將計(jì)數(shù)器的當(dāng)前值從輸出鎖存器值從輸出鎖存器OL中讀出中讀出。讀當(dāng)前計(jì)數(shù)值時(shí),不用中斷讀當(dāng)前計(jì)數(shù)值時(shí),不用中斷計(jì)數(shù)器的時(shí)鐘輸入,也不會(huì)影響計(jì)數(shù)器的繼續(xù)計(jì)數(shù)計(jì)數(shù)器的時(shí)鐘輸入,也不會(huì)影響計(jì)數(shù)器的繼續(xù)計(jì)數(shù)。第10章可編程定時(shí)/計(jì)數(shù)控制器 (4)讀/寫控制邏輯 這是8253內(nèi)部操作的控制電路,它從系統(tǒng)控制線上接收輸入信號(hào),然后轉(zhuǎn)變成8253內(nèi)部操

13、作的各種控制信號(hào)。 讀/寫邏輯受片選信號(hào) 的控制,當(dāng) 為高電平時(shí),表表明該明該8253芯片沒(méi)有被選中,讀芯片沒(méi)有被選中,讀 /寫邏輯被禁止,寫邏輯被禁止,8253就不就不能和能和CPU交換信息,數(shù)據(jù)總線緩沖器呈現(xiàn)高阻狀態(tài),芯片交換信息,數(shù)據(jù)總線緩沖器呈現(xiàn)高阻狀態(tài),芯片與系統(tǒng)總線脫離與系統(tǒng)總線脫離。所以對(duì)芯片的編程設(shè)置和對(duì)芯片的訪問(wèn)對(duì)芯片的編程設(shè)置和對(duì)芯片的訪問(wèn)都不能進(jìn)行都不能進(jìn)行。但計(jì)數(shù)器現(xiàn)行的計(jì)數(shù)工作可以繼續(xù)進(jìn)行,而但計(jì)數(shù)器現(xiàn)行的計(jì)數(shù)工作可以繼續(xù)進(jìn)行,而不受電平變化的影響不受電平變化的影響。 讀/寫邏輯還受 、 、A1和A0的控制。由A1、A0不同不同信號(hào)組合決定信號(hào)組合決定CPU訪問(wèn)哪個(gè)通

14、道和通道內(nèi)哪個(gè)內(nèi)部寄存器訪問(wèn)哪個(gè)通道和通道內(nèi)哪個(gè)內(nèi)部寄存器,并由 、 控制內(nèi)部總線上數(shù)據(jù)的傳送方向。CSCSRDWRRDWR第10章可編程定時(shí)/計(jì)數(shù)控制器 10.2.2 8253的外部引腳的外部引腳 8253的引腳包括與系統(tǒng)與系統(tǒng)相連接的引腳相連接的引腳和與定時(shí)與定時(shí)計(jì)數(shù)電路相連接的引腳計(jì)數(shù)電路相連接的引腳兩部分。其外部引腳如圖10.3所示。圖10.3 8253的外部引腳圖第10章可編程定時(shí)/計(jì)數(shù)控制器 1. 與定時(shí)計(jì)數(shù)電路相連接的引腳與定時(shí)計(jì)數(shù)電路相連接的引腳(1)CLK引腳 時(shí)鐘輸入引腳時(shí)鐘輸入引腳,每個(gè)通道的計(jì)數(shù)器單元每個(gè)通道的計(jì)數(shù)器單元CE,對(duì),對(duì)CLK輸入輸入脈沖進(jìn)行計(jì)數(shù)脈沖進(jìn)行計(jì)數(shù)

15、。CLK脈沖可以是系統(tǒng)時(shí)鐘脈沖,也可以由脈沖可以是系統(tǒng)時(shí)鐘脈沖,也可以由系統(tǒng)時(shí)鐘分頻或者是其它脈沖源提供系統(tǒng)時(shí)鐘分頻或者是其它脈沖源提供。輸入脈沖可以是均可以是均勻、連續(xù)、周期精確的,也可以是不均勻、不連續(xù)、周期勻、連續(xù)、周期精確的,也可以是不均勻、不連續(xù)、周期不定的。不定的。 若8253用作分頻器分頻器或或工作工作于定時(shí)器方式時(shí)于定時(shí)器方式時(shí),則CLK輸入輸入是連續(xù)的、周期精確的時(shí)鐘脈沖是連續(xù)的、周期精確的時(shí)鐘脈沖,而OUT輸出必定是頻率頻率降低的、周期精確的時(shí)鐘脈沖降低的、周期精確的時(shí)鐘脈沖。第10章可編程定時(shí)/計(jì)數(shù)控制器 若8253用作計(jì)數(shù)器計(jì)數(shù)器,這時(shí)要求CLK輸入只是脈沖的數(shù)量,輸入

16、只是脈沖的數(shù)量,而不是脈沖的時(shí)間間隔,所以而不是脈沖的時(shí)間間隔,所以CLK可以輸入周期不定的脈可以輸入周期不定的脈沖,也可以輸入周期確定的脈沖沖,也可以輸入周期確定的脈沖。當(dāng)計(jì)數(shù)到預(yù)置的初值后,就從OUT端輸出一個(gè)脈沖。若CLK的脈沖周期不定,則OUT輸出的脈沖周期也不確定。 8253的基本工作方式,就是的基本工作方式,就是對(duì)外部輸入到對(duì)外部輸入到CLK引腳上的引腳上的脈沖進(jìn)行計(jì)數(shù)脈沖進(jìn)行計(jì)數(shù)。至于是定時(shí)方式還是計(jì)數(shù)方式,完全取決于輸入脈沖的性質(zhì)和用戶的需要。第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)OUT引腳 它它是是8253的的脈沖輸出引腳脈沖輸出引腳。OUT引腳輸出的信號(hào)取決引腳輸出的信號(hào)取

17、決于工作方式于工作方式,它可以是電平、脈沖或方波電平、脈沖或方波等。(3)GATE引腳 門控輸入引腳門控輸入引腳。這是一根外部控制計(jì)數(shù)器工作的信號(hào)這是一根外部控制計(jì)數(shù)器工作的信號(hào)線線,GATE引腳的作用取決于引腳的作用取決于8253的工作方式的工作方式。第10章可編程定時(shí)/計(jì)數(shù)控制器 2. 與系統(tǒng)相連接的引腳與系統(tǒng)相連接的引腳 8253面向系統(tǒng)的引腳信號(hào)按照其傳輸信息的種類不同,分成3組:地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)。 A1,A0:內(nèi)部口地址的選擇,輸入內(nèi)部口地址的選擇,輸入。這兩個(gè)引腳上的信號(hào)組合決定對(duì)8255A內(nèi)部的哪一個(gè)口或寄存器進(jìn)行操作。8253內(nèi)部共有4個(gè)端口:計(jì)數(shù)器計(jì)數(shù)器0,計(jì)數(shù)器

18、,計(jì)數(shù)器1,計(jì)數(shù)器,計(jì)數(shù)器2和和控制口;控制口;第10章可編程定時(shí)/計(jì)數(shù)控制器 :片選,輸入,用來(lái)決定芯片是否被選中,由地址總線高位經(jīng)譯碼電路產(chǎn)生; 、 、 和兩個(gè)地址引腳信號(hào)組合功能如表10-1所示。CSCSRDWRCSRDWR表10-1 8253A端口地址分配表 A1 A0操操 作作數(shù)據(jù)傳送方式數(shù)據(jù)傳送方式0 0 1 0 00 0 1 0 10 0 1 1 00 1 0 0 00 1 0 0 10 1 0 1 00 1 0 1 10 0 1 1 11 讀0計(jì)數(shù)器讀1計(jì)數(shù)器讀2計(jì)數(shù)器寫0計(jì)數(shù)器寫1計(jì)數(shù)器寫2計(jì)數(shù)器寫控制口8253無(wú)操作未選中0計(jì)數(shù)器OL 數(shù)據(jù)總線1計(jì)數(shù)器OL 數(shù)據(jù)總線2計(jì)數(shù)器

19、OL 數(shù)據(jù)總線數(shù)據(jù)總線數(shù)據(jù) 0計(jì)數(shù)器CR數(shù)據(jù)總線數(shù)據(jù) 1計(jì)數(shù)器CR數(shù)據(jù)總線數(shù)據(jù) 2計(jì)數(shù)器CR數(shù)據(jù)總線數(shù)據(jù) 控制口數(shù)據(jù)總線高阻狀態(tài)數(shù)據(jù)總線高阻狀態(tài)第10章可編程定時(shí)/計(jì)數(shù)控制器 D0D7:8位,雙向,三態(tài)數(shù)據(jù)線,用來(lái)與系統(tǒng)數(shù)據(jù)總線相連; :讀信號(hào),輸入,控制8253將數(shù)據(jù)或狀態(tài)信息送給CPU; :寫信號(hào),輸入,控制CPU將數(shù)據(jù)或控制信息送到8253。RDWR第10章可編程定時(shí)/計(jì)數(shù)控制器 10.2.3 8253的控制字的控制字 8253的控制字格式如圖10.4所示??刂谱址譃?個(gè)功能段,設(shè)定計(jì)數(shù)方式設(shè)定計(jì)數(shù)方式段、設(shè)定工作方式設(shè)定工作方式段、寫入寫入/讀取初值格式讀取初值格式段和計(jì)數(shù)器選擇計(jì)數(shù)器

20、選擇段(相當(dāng)于特征位)。圖10.4 8253命令字格式第10章可編程定時(shí)/計(jì)數(shù)控制器 SC1、SC0: 計(jì)數(shù)器選擇位計(jì)數(shù)器選擇位。決定控制字是哪一個(gè)計(jì)數(shù)器的控制字。SC1:SC0=11B時(shí),在8253中沒(méi)有使用,在8254中作為回讀控制命令。 RL1、RL0:設(shè)置數(shù)據(jù)讀設(shè)置數(shù)據(jù)讀/寫格式位寫格式位。8253的計(jì)數(shù)寄存器CR、計(jì)數(shù)單元CE和輸出鎖存器OL都是16位的,在寫初在寫初值時(shí)可以使用其中的值時(shí)可以使用其中的8位位,需要指明高需要指明高8位還是低位還是低8位位,也可以使用可以使用16位,位,必須先低必須先低8位后高位后高8位位。在讀取計(jì)數(shù)值時(shí),在讀取計(jì)數(shù)值時(shí),可令可令RL1、RL0=00B

21、,先將寫控制字時(shí)的計(jì)數(shù)值鎖存,先將寫控制字時(shí)的計(jì)數(shù)值鎖存OL,然后再讀取。然后再讀取。第10章可編程定時(shí)/計(jì)數(shù)控制器 M2、M1、M0:設(shè)置計(jì)數(shù)器工作方式位。每個(gè)計(jì)數(shù)器都可以通過(guò)控制命令設(shè)置成6種工作方式之一。 BCD:用于選擇每個(gè)計(jì)數(shù)器的計(jì)數(shù)制。在二進(jìn)制計(jì)數(shù)時(shí),在二進(jìn)制計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍是計(jì)數(shù)初值的范圍是0000HFFFFH,其中,其中0000H是最大值,是最大值,代表代表65536。在在BCD碼計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍是碼計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍是00009999,其中,其中0000是最大值,代表是最大值,代表10000。第10章可編程定時(shí)/計(jì)數(shù)控制器 10.2.4 8253的工作方式的工

22、作方式 8253的每個(gè)計(jì)數(shù)器都有的每個(gè)計(jì)數(shù)器都有6種工作方式種工作方式,這6種方式的主要區(qū)別主要區(qū)別是:OUT輸出的波形不同,計(jì)數(shù)過(guò)程中輸出的波形不同,計(jì)數(shù)過(guò)程中GATE信號(hào)對(duì)計(jì)數(shù)操信號(hào)對(duì)計(jì)數(shù)操作的影響不同,啟動(dòng)計(jì)數(shù)的觸發(fā)方式不同等作的影響不同,啟動(dòng)計(jì)數(shù)的觸發(fā)方式不同等。6種不同的工作方式如下。1方式方式0計(jì)數(shù)結(jié)束時(shí)中斷方式(計(jì)數(shù)結(jié)束時(shí)中斷方式(Interrupt on Terminal Count) 方式0的工作時(shí)序如圖10.5所示。 圖中,CW表示8253的控制字,LSB表示低8位計(jì)數(shù)值。如果是16位計(jì)數(shù)器,則還有高8位計(jì)數(shù)值MSB。第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.5 方式0波形圖

23、第10章可編程定時(shí)/計(jì)數(shù)控制器 (1)計(jì)數(shù)過(guò)程 當(dāng)寫入方式0控制字后,OUT立即變?yōu)榈碗娖?,并且在?jì)數(shù)過(guò)程中一直維持低電平。若GATE=1,寫入初值后,在 信號(hào)上升沿之后的下一個(gè)CLK脈沖計(jì)數(shù)值裝入計(jì)數(shù)器,并開(kāi)始計(jì)數(shù),計(jì)數(shù)器減到零時(shí),OUT輸出變?yōu)楦唠娖?,且一直保持到該通道重新裝入計(jì)數(shù)值或重新設(shè)置工作方式為止,此信號(hào)可用于申請(qǐng)中斷。按方式0計(jì)數(shù)時(shí),計(jì)數(shù)器只計(jì)一遍。(2)GATE信號(hào)的影響 門控信號(hào)GATE可以用來(lái)控制計(jì)數(shù)過(guò)程,GATE為高電平,為高電平,允許計(jì)數(shù);允許計(jì)數(shù);GATE為低電平,暫停計(jì)數(shù);當(dāng)為低電平,暫停計(jì)數(shù);當(dāng)GATE重新為高重新為高電平時(shí)又恢復(fù)計(jì)數(shù)。電平時(shí)又恢復(fù)計(jì)數(shù)。WR第10

24、章可編程定時(shí)/計(jì)數(shù)控制器 (3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 方式0是寫一次計(jì)數(shù)值,計(jì)數(shù)一次,計(jì)數(shù)器不會(huì)自動(dòng)重裝初值重新開(kāi)始計(jì)數(shù)。如果在計(jì)數(shù)過(guò)程中寫入新的計(jì)數(shù)初值,如果在計(jì)數(shù)過(guò)程中寫入新的計(jì)數(shù)初值,則在寫入新值后的下一個(gè)時(shí)鐘下降沿計(jì)數(shù)器將按新的初值則在寫入新值后的下一個(gè)時(shí)鐘下降沿計(jì)數(shù)器將按新的初值計(jì)數(shù),即新的初值是立即有效的。計(jì)數(shù),即新的初值是立即有效的。 8253寫計(jì)數(shù)值是由CPU的 信號(hào)控制的,在 信號(hào)的上升沿,計(jì)數(shù)值被送入對(duì)應(yīng)計(jì)數(shù)器的計(jì)數(shù)值寄存器,在 信號(hào)上升沿之后的下一個(gè)CLK脈沖才開(kāi)始計(jì)數(shù)。如果設(shè)置計(jì)數(shù)初值N,輸出OUT是在寫入命令執(zhí)行后,第N+1個(gè)CLK脈沖之后,才變?yōu)楦唠娖降?。后面?/p>

25、方式1、2、4、5也有同樣的特點(diǎn)。WRWRWR第10章可編程定時(shí)/計(jì)數(shù)控制器 2方式方式1可編程單穩(wěn)態(tài)觸發(fā)器(可編程單穩(wěn)態(tài)觸發(fā)器(Programmable Oneshort)第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.6 方式1波形圖第10章可編程定時(shí)/計(jì)數(shù)控制器 這種方式由外部門控信號(hào)GATE上升沿觸發(fā),使輸出端變?yōu)榈碗娖?,產(chǎn)生一個(gè)單拍負(fù)脈沖信號(hào),脈沖寬度由計(jì)數(shù)值決定。(1)計(jì)數(shù)過(guò)程寫入控制字后,OUT輸出為高電平。寫入計(jì)數(shù)初值寫入計(jì)數(shù)初值N后,計(jì)數(shù)器并不后,計(jì)數(shù)器并不開(kāi)始計(jì)數(shù),而要等到開(kāi)始計(jì)數(shù),而要等到GATE上升沿后的下一個(gè)上升沿后的下一個(gè)CLK輸入脈沖的下降沿,輸入脈沖的下降沿,OUT輸出

26、變低,計(jì)數(shù)才開(kāi)始。計(jì)數(shù)結(jié)束時(shí),輸出變低,計(jì)數(shù)才開(kāi)始。計(jì)數(shù)結(jié)束時(shí),OUT輸出變高,從而產(chǎn)輸出變高,從而產(chǎn)生一個(gè)寬度為生一個(gè)寬度為N個(gè)個(gè)CLK周期的負(fù)脈沖周期的負(fù)脈沖。(2)GATE信號(hào)的影響方式1中GATE信號(hào)有兩個(gè)方面的作用:第10章可編程定時(shí)/計(jì)數(shù)控制器 第一,在計(jì)數(shù)結(jié)束后,若再來(lái)一個(gè),在計(jì)數(shù)結(jié)束后,若再來(lái)一個(gè)GATE信號(hào)上升沿,則下一個(gè)信號(hào)上升沿,則下一個(gè)時(shí)鐘周期的下降沿又從初值開(kāi)始計(jì)數(shù),而不需要重新寫入初值,即門時(shí)鐘周期的下降沿又從初值開(kāi)始計(jì)數(shù),而不需要重新寫入初值,即門控信號(hào)可重新觸發(fā)計(jì)數(shù)控信號(hào)可重新觸發(fā)計(jì)數(shù);第二,在計(jì)數(shù)過(guò)程中,若來(lái)一個(gè)門控信號(hào)的在計(jì)數(shù)過(guò)程中,若來(lái)一個(gè)門控信號(hào)的上升沿

27、,也在下一個(gè)時(shí)鐘下降沿從初值起重新計(jì)數(shù),即終止原來(lái)的計(jì)上升沿,也在下一個(gè)時(shí)鐘下降沿從初值起重新計(jì)數(shù),即終止原來(lái)的計(jì)數(shù)過(guò)程,開(kāi)始新的一輪計(jì)數(shù)。數(shù)過(guò)程,開(kāi)始新的一輪計(jì)數(shù)。(3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 如果在計(jì)數(shù)過(guò)程中寫入新的初值,不會(huì)立即影響計(jì)數(shù)過(guò)程。只有下一個(gè)門控信號(hào)到來(lái)后的第一個(gè)時(shí)鐘下降沿,才終止原來(lái)的計(jì)數(shù)過(guò)程,按新值開(kāi)始計(jì)數(shù)。若計(jì)數(shù)結(jié)束前沒(méi)有GATE觸發(fā)信號(hào),則原來(lái)計(jì)數(shù)過(guò)程正常結(jié)束。即新的初值下次有效。第10章可編程定時(shí)/計(jì)數(shù)控制器 3方式方式2速率發(fā)生器、分頻器(速率發(fā)生器、分頻器(Rate Generator) 方式2的工作波形如圖10.7所示。 第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10

28、.7 方式2波形圖第10章可編程定時(shí)/計(jì)數(shù)控制器 這種方式的功能如同一個(gè)N分頻計(jì)數(shù)器,輸出是輸入時(shí)鐘按照計(jì)數(shù)值N分頻后的一個(gè)連續(xù)脈沖。(1)計(jì)數(shù)過(guò)程 寫入控制字后的時(shí)鐘上升沿,輸出端OUT變成高電平。若GATE為高電平,寫入計(jì)數(shù)初值后的第一個(gè)時(shí)鐘下降沿開(kāi)始減1計(jì)數(shù)。減到減到1時(shí),時(shí),輸出端輸出端OUT變?yōu)榈碗娖健p到變?yōu)榈碗娖?。減到0時(shí),輸出時(shí),輸出OUT又變成高電平,從初值又變成高電平,從初值開(kāi)始新的計(jì)數(shù)過(guò)程,即方式開(kāi)始新的計(jì)數(shù)過(guò)程,即方式2能自動(dòng)重能自動(dòng)重裝初值,輸出固定頻率的脈沖裝初值,輸出固定頻率的脈沖。因此若裝入計(jì)數(shù)初值為N,則OUT引腳上每隔N個(gè)時(shí)鐘脈沖就輸出一個(gè)負(fù)脈沖,其頻率為輸

29、入時(shí)鐘脈沖頻率的1/N,故方式2也稱為分頻器。第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)GATE信號(hào)的影響 在方式2中,GATE信號(hào)為低電平終止計(jì)數(shù),而由低電平恢信號(hào)為低電平終止計(jì)數(shù),而由低電平恢復(fù)為高電平后的第一個(gè)時(shí)鐘下降沿重新從初值開(kāi)始計(jì)數(shù)復(fù)為高電平后的第一個(gè)時(shí)鐘下降沿重新從初值開(kāi)始計(jì)數(shù)。由此可見(jiàn),GATE一直維持高電平時(shí),計(jì)數(shù)器方能作為一個(gè)N分頻器。(3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 如果在計(jì)數(shù)過(guò)程中寫入新的初值,且如果在計(jì)數(shù)過(guò)程中寫入新的初值,且GATE信號(hào)一直維持高信號(hào)一直維持高電平,則新的初值不會(huì)立即影響當(dāng)前的計(jì)數(shù)過(guò)程,但在計(jì)電平,則新的初值不會(huì)立即影響當(dāng)前的計(jì)數(shù)過(guò)程,但在計(jì)數(shù)結(jié)束后的下一

30、個(gè)計(jì)數(shù)周期將按新的初值計(jì)數(shù),即新的初數(shù)結(jié)束后的下一個(gè)計(jì)數(shù)周期將按新的初值計(jì)數(shù),即新的初值下次有效。值下次有效。第10章可編程定時(shí)/計(jì)數(shù)控制器 4方式方式3方波發(fā)生器(方波發(fā)生器(Square Wave Generator) 方式3的工作波形如圖10.8所示。 該方式與方式2相類似,只是OUT輸出的是對(duì)稱方波(計(jì)數(shù)初值N為偶數(shù))或近似對(duì)稱方波(計(jì)數(shù)初值N為奇數(shù))。第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.8 方式3波形圖第10章可編程定時(shí)/計(jì)數(shù)控制器 (1)計(jì)數(shù)過(guò)程 方式3的計(jì)數(shù)過(guò)程按計(jì)數(shù)初值的不同分為兩種情況: 計(jì)數(shù)初值為偶數(shù)。寫入控制字后的時(shí)鐘上升沿,輸出端OUT變成高電平。若GATE=1,寫

31、入計(jì)數(shù)初值后的第一個(gè)時(shí)鐘下降沿開(kāi)始減1計(jì)數(shù)。減到減到N/2時(shí),輸出端時(shí),輸出端OUT變?yōu)榈妥優(yōu)榈碗娖?;減到電平;減到0時(shí),輸出端時(shí),輸出端OUT又變成高電平,并重新從初又變成高電平,并重新從初值開(kāi)始新的計(jì)數(shù)過(guò)程。值開(kāi)始新的計(jì)數(shù)過(guò)程??梢?jiàn),輸出端OUT的波形是連續(xù)的完全對(duì)稱的方波,故稱方波發(fā)生器。第10章可編程定時(shí)/計(jì)數(shù)控制器 計(jì)數(shù)初值為奇數(shù)。寫入控制字后的時(shí)鐘上升沿,輸出端OUT變成高電平。若GATE=1,寫入計(jì)數(shù)初值后的第一個(gè)時(shí)鐘下降沿開(kāi)始減1計(jì)數(shù),減到(N+1)/2以后,輸出端OUT變?yōu)榈碗娖?;減到0時(shí),輸出端OUT又變成高電平,并重新從初值開(kāi)始新的計(jì)數(shù)過(guò)程。這時(shí)輸出波形的高電平寬度比低電

32、平寬度多一個(gè)時(shí)鐘周期,為近似對(duì)稱方波。(2)GATE信號(hào)的影響 GATE高電平時(shí),允許計(jì)數(shù);GATE低電平時(shí),禁止計(jì)數(shù)。低電平時(shí),禁止計(jì)數(shù)。如果在輸出端如果在輸出端OUT為低電平期間,為低電平期間,GATE變低,則變低,則OUT將將立即變高,并停止計(jì)數(shù)。當(dāng)立即變高,并停止計(jì)數(shù)。當(dāng)GATE變高以后,計(jì)數(shù)器重新變高以后,計(jì)數(shù)器重新裝入初值并重新開(kāi)始計(jì)數(shù)。裝入初值并重新開(kāi)始計(jì)數(shù)。 第10章可編程定時(shí)/計(jì)數(shù)控制器 (3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 如果在計(jì)數(shù)過(guò)程中寫入新的初值,而而GATE信號(hào)一直維持信號(hào)一直維持高電平,則新的初值不會(huì)影響當(dāng)前的計(jì)數(shù)過(guò)程,只有在計(jì)高電平,則新的初值不會(huì)影響當(dāng)前的計(jì)數(shù)過(guò)程,

33、只有在計(jì)數(shù)結(jié)束后的下一個(gè)計(jì)數(shù)周期,才按新的初值計(jì)數(shù)數(shù)結(jié)束后的下一個(gè)計(jì)數(shù)周期,才按新的初值計(jì)數(shù)。若寫入新的初值后,遇到門控信號(hào)的上升沿,則終止現(xiàn)行計(jì)數(shù)過(guò)程,從下一個(gè)時(shí)鐘下降沿重新開(kāi)始計(jì)數(shù)。第10章可編程定時(shí)/計(jì)數(shù)控制器 5方式方式4軟件觸發(fā)選通方式(軟件觸發(fā)選通方式(Software Triggered Strobe) 方式4的工作波形如圖10.9所示。第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.9 方式4波形圖第10章可編程定時(shí)/計(jì)數(shù)控制器 該方式是一種軟件觸發(fā)計(jì)數(shù)方式。即寫入一次初值開(kāi)始一次新的計(jì)數(shù)。(1)計(jì)數(shù)過(guò)程 寫入方式控制字后,OUT輸出高電平。若GATE=1,寫入初值的下一個(gè)CLK脈沖開(kāi)

34、始減1計(jì)數(shù),計(jì)數(shù)到達(dá)0值(注意:不是減到1),OUT輸出為低電平,持續(xù)一個(gè)CLK脈沖周期后再恢復(fù)到高電平。方式4之所以稱為軟件觸發(fā)選通方式,是因?yàn)橛?jì)數(shù)過(guò)程是由軟件把計(jì)數(shù)初值裝入計(jì)數(shù)寄存器來(lái)觸發(fā)的,計(jì)數(shù)初值n僅一次有效。若要繼續(xù)計(jì)數(shù),則需重新裝入初值。第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)門控信號(hào)的影響 GATE為高電平時(shí),允許計(jì)數(shù);GATE信號(hào)變低,禁止計(jì)數(shù),輸出維持當(dāng)時(shí)的電平,直到GATE變成高電平后繼續(xù)計(jì)數(shù),從OUT端輸出一個(gè)負(fù)脈沖。(3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 在計(jì)數(shù)過(guò)程中改變計(jì)數(shù)值,則在寫入新值后的下一個(gè)時(shí)鐘下降沿計(jì)數(shù)器將新的初值計(jì)數(shù),即新值是立即有效的。第10章可編程定時(shí)/計(jì)數(shù)控制

35、器 6方式方式5硬件觸發(fā)選通方式(硬件觸發(fā)選通方式(Hardware Triggered Strobe) 方式5的工作波形如圖10.10所示。 第10章可編程定時(shí)/計(jì)數(shù)控制器 圖10.10 方式5波形圖第10章可編程定時(shí)/計(jì)數(shù)控制器 該方式為硬件觸發(fā)計(jì)數(shù)方式,即門控信號(hào)GATE上升沿觸發(fā)計(jì)數(shù)。(1)計(jì)數(shù)過(guò)程 寫入控制字后,輸出OUT即為高電平。寫入計(jì)數(shù)初值后,計(jì)數(shù)器并不立即開(kāi)始計(jì)數(shù),而是由門控脈沖的上升沿觸發(fā)。計(jì)數(shù)結(jié)束(計(jì)數(shù)器減到0)時(shí)輸出一個(gè)持續(xù)時(shí)間為一個(gè)TCLK的負(fù)脈沖,然后輸出恢復(fù)為高電平。直到GATE信號(hào)再次觸發(fā)。第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)門控信號(hào)的影響 若在計(jì)數(shù)過(guò)程中,又

36、有一個(gè)門控信號(hào)的上升沿,則立即終止當(dāng)前的計(jì)數(shù)過(guò)程,且在下一個(gè)時(shí)鐘下降沿,又從初值開(kāi)始計(jì)數(shù),如果計(jì)數(shù)過(guò)程結(jié)束后,來(lái)一個(gè)門控上升沿,計(jì)數(shù)器也會(huì)在下一個(gè)時(shí)鐘下降沿,又從初值開(kāi)始減1計(jì)數(shù),即門控信號(hào)上升沿任何時(shí)候到來(lái)都會(huì)立即觸發(fā)一個(gè)計(jì)數(shù)過(guò)程。第10章可編程定時(shí)/計(jì)數(shù)控制器 (3)新的初值對(duì)計(jì)數(shù)過(guò)程的影響 如果在計(jì)數(shù)過(guò)程中寫入新的初值,則新的初值不會(huì)立即影響當(dāng)前的計(jì)數(shù)過(guò)程,只有到下一個(gè)門控信號(hào)上升沿到來(lái)后,才從新的初值開(kāi)始減1計(jì)數(shù)。即新的計(jì)數(shù)初值在下一個(gè)門控信號(hào)上升沿觸發(fā)后有效。 第10章可編程定時(shí)/計(jì)數(shù)控制器 7工作方式小結(jié)工作方式小結(jié) 8253六種工作方式都有自己的特點(diǎn),下面就其特點(diǎn)作一個(gè)簡(jiǎn)單總結(jié)。

37、(1)在六種工作方式中,只有方式只有方式0在寫入控制字后在寫入控制字后OUT變變?yōu)榈碗娖綖榈碗娖?,其它其?種方式都在寫入控制字后種方式都在寫入控制字后OUT輸出高電輸出高電平。平。 第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)預(yù)置值N與輸出波形的關(guān)系如表10-2所示。表10-2 8253初值N與輸出波形的關(guān)系方式方式初值初值N與波形的關(guān)系與波形的關(guān)系0寫入初值N后,經(jīng)N+1個(gè)CLK輸出變?yōu)楦唠娖?輸出一個(gè)寬度為N個(gè)CLK的負(fù)脈沖2每N個(gè)CLK脈沖,輸出一個(gè)寬度為CLK周期的負(fù)脈沖3方波輸出,周期為N個(gè)CLK周期,N為奇數(shù)時(shí)高電平比低電平多一個(gè)CLK周期4寫入初值N后,計(jì)數(shù)結(jié)束后輸出一個(gè)寬度為CLK

38、周期的負(fù)脈沖5寫入初值N后,由門控觸發(fā),計(jì)數(shù)結(jié)束后輸出一個(gè)寬度為CLK周期的負(fù)脈沖第10章可編程定時(shí)/計(jì)數(shù)控制器 表中 “N+l” 處,這里加這里加1是考慮到預(yù)置的初值需要一個(gè)計(jì)是考慮到預(yù)置的初值需要一個(gè)計(jì)數(shù)脈沖才能裝入數(shù)脈沖才能裝入。當(dāng)然,對(duì)其它方式初值的裝入也都需要對(duì)其它方式初值的裝入也都需要一個(gè)一個(gè)CLK脈沖,只是這一個(gè)脈沖,只是這一個(gè)CLK在輸出中不必加以考慮在輸出中不必加以考慮,因?yàn)榉绞揭驗(yàn)榉绞?要考慮的是單穩(wěn)負(fù)脈沖的寬度,而方式要考慮的是單穩(wěn)負(fù)脈沖的寬度,而方式2,3初初值的裝入只影響第一個(gè)周期。值的裝入只影響第一個(gè)周期。 第10章可編程定時(shí)/計(jì)數(shù)控制器 (3)方式方式2,4,5有

39、相同之處有相同之處,即計(jì)數(shù)到終點(diǎn),都輸出寬度計(jì)數(shù)到終點(diǎn),都輸出寬度為為1個(gè)個(gè)CLK周期的低電平脈沖周期的低電平脈沖。主要不同點(diǎn)為主要不同點(diǎn)為:方式方式2為自為自動(dòng)啟動(dòng),重復(fù)進(jìn)行計(jì)數(shù)及輸出低電平脈沖的過(guò)程動(dòng)啟動(dòng),重復(fù)進(jìn)行計(jì)數(shù)及輸出低電平脈沖的過(guò)程;方式方式4也也為自動(dòng)啟動(dòng),但僅輸出一個(gè)低電平脈沖為自動(dòng)啟動(dòng),但僅輸出一個(gè)低電平脈沖;方式方式5需等待需等待GATE上升沿的到來(lái)才開(kāi)始計(jì)數(shù),也只輸出一個(gè)低電平脈沖上升沿的到來(lái)才開(kāi)始計(jì)數(shù),也只輸出一個(gè)低電平脈沖。另外,方式另外,方式2為減到為減到1輸出一個(gè)低電平脈沖,而方式輸出一個(gè)低電平脈沖,而方式4和和5是是減到減到0.(4)方式方式2和方式和方式3也有

40、相同之處也有相同之處,即都輸出周期性信號(hào),每都輸出周期性信號(hào),每當(dāng)計(jì)數(shù)到終點(diǎn),初始化時(shí)預(yù)置的初值都會(huì)被自動(dòng)重新裝入當(dāng)計(jì)數(shù)到終點(diǎn),初始化時(shí)預(yù)置的初值都會(huì)被自動(dòng)重新裝入(減減1計(jì)數(shù)器計(jì)數(shù)器)。 門控信號(hào)GATE在不同工作方式下的作用,如表10-3所示。第10章可編程定時(shí)/計(jì)數(shù)控制器 方式方式GATEGATE引腳輸入狀態(tài)所起的作用引腳輸入狀態(tài)所起的作用輸出波形輸出波形高電平高電平低電平低電平下降沿下降沿上升沿上升沿0允許禁止暫停繼續(xù)計(jì)數(shù)過(guò)程中為低,計(jì)數(shù)值減為0時(shí),變高 (單次)1不影響不影響不影響開(kāi)始或重新開(kāi)始寬度為n個(gè)CLK的低電平(單次)2允許禁止停止重新開(kāi)始周期為n個(gè)CLK,寬度1個(gè)CLK的負(fù)

41、脈沖(重復(fù))3允許禁止停止重新開(kāi)始周期為n個(gè)CLK的方波(重復(fù))4允許禁止停止重新開(kāi)始減為0時(shí)輸出寬度為1個(gè)CLK的負(fù)脈沖(單次)5不影響不影響不影響開(kāi)始或重新開(kāi)始減為0時(shí)輸出寬度為1個(gè)CLK的負(fù)脈沖(單次)表10-3 門控信號(hào)GATE作用表第10章可編程定時(shí)/計(jì)數(shù)控制器 10.2.5 8253的應(yīng)用舉例的應(yīng)用舉例1. 8253的初始化的初始化 要使用8253,必須首先對(duì)其進(jìn)行初始化首先對(duì)其進(jìn)行初始化,初始化有兩兩種方法:種方法:(1)對(duì)每個(gè)計(jì)數(shù)器分別進(jìn)行初始化,對(duì)每個(gè)計(jì)數(shù)器分別進(jìn)行初始化,先寫控制字,后寫計(jì)先寫控制字,后寫計(jì)數(shù)值數(shù)值。如果計(jì)數(shù)值是16位的,則先寫低8位(LSB)再寫高8位(M

42、SB)。(2)先寫所有計(jì)數(shù)器的方式控制字先寫所有計(jì)數(shù)器的方式控制字,再寫各個(gè)計(jì)數(shù)器的計(jì)再寫各個(gè)計(jì)數(shù)器的計(jì)數(shù)值。數(shù)值。如果計(jì)數(shù)值是16位的,則先寫低8位再寫高8位。 第10章可編程定時(shí)/計(jì)數(shù)控制器 例如:假設(shè)一個(gè)8253在某系統(tǒng)中的端口地址40H43H,如果要將計(jì)數(shù)器0設(shè)置為工作方式3,計(jì)數(shù)初值為3060H,采用二進(jìn)制計(jì)數(shù)法,則初始化方法如下:MOV AL,36H;計(jì)數(shù)器0,方式3,計(jì)數(shù)值16位,二進(jìn)制計(jì)數(shù)OUT 43H, AL ;寫入控制寄存器MOV AX,3060H ;設(shè)置計(jì)數(shù)值OUT 40H, AL;寫低8位至計(jì)數(shù)器0MOV AL,AHOUT 40H,AL;寫高8位至計(jì)數(shù)器0第10章可編程

43、定時(shí)/計(jì)數(shù)控制器 2. 8253的讀操作的讀操作 為了對(duì)計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行實(shí)時(shí)顯示、實(shí)時(shí)檢測(cè)或?qū)τ?jì)數(shù)為了對(duì)計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行實(shí)時(shí)顯示、實(shí)時(shí)檢測(cè)或?qū)τ?jì)數(shù)值進(jìn)行數(shù)據(jù)處理,值進(jìn)行數(shù)據(jù)處理,用戶就需要讀回計(jì)數(shù)通道的計(jì)數(shù)值。用戶就需要讀回計(jì)數(shù)通道的計(jì)數(shù)值。 8253只可以讀回每個(gè)通道的計(jì)數(shù)值,只可以讀回每個(gè)通道的計(jì)數(shù)值,它是由它是由CPU訪問(wèn)每訪問(wèn)每個(gè)通道的計(jì)數(shù)鎖存器個(gè)通道的計(jì)數(shù)鎖存器OL實(shí)現(xiàn)的。實(shí)現(xiàn)的。讀出的端口地址和寫入讀出的端口地址和寫入計(jì)數(shù)初值是同一個(gè)端口地址計(jì)數(shù)初值是同一個(gè)端口地址。如果是8位計(jì)數(shù),則只需讀1次,若是16位計(jì)數(shù),則同一端口地址要讀兩次,第一次讀入的是計(jì)數(shù)值的低8位,第二次讀入的

44、是計(jì)數(shù)值的高8位。讀操作必須嚴(yán)格按控制字讀操作必須嚴(yán)格按控制字RL1、RL0確定的格式進(jìn)行確定的格式進(jìn)行。第10章可編程定時(shí)/計(jì)數(shù)控制器 8253有兩種讀計(jì)數(shù)值的方法:(1)讀之前先停止計(jì)數(shù))讀之前先停止計(jì)數(shù) 這種方法是在讀之前用在讀之前用GATE信號(hào),控制計(jì)數(shù)器暫停計(jì)信號(hào),控制計(jì)數(shù)器暫停計(jì)數(shù),或數(shù),或由外部邏輯禁止所要讀的計(jì)數(shù)通道的由外部邏輯禁止所要讀的計(jì)數(shù)通道的CLK脈沖輸入脈沖輸入。因?yàn)橛?jì)數(shù)值是16位的,因此CPU要執(zhí)行兩次讀入指令,還要把讀入的數(shù)存入寄存器或存儲(chǔ)單元中。兩次讀入必然有一段時(shí)間間隔,若計(jì)數(shù)器不停止計(jì)數(shù),兩次讀入的計(jì)數(shù)值第10章可編程定時(shí)/計(jì)數(shù)控制器 就不是同一個(gè)值,這就會(huì)

45、使讀入的計(jì)數(shù)值有誤,所以,讀之前必須先停止計(jì)數(shù)。以讀計(jì)數(shù)器0為例,這種讀入要求軟這種讀入要求軟件和硬件配合,即先使件和硬件配合,即先使GATE為低電平,禁止計(jì)數(shù)器計(jì)數(shù),為低電平,禁止計(jì)數(shù)器計(jì)數(shù),再執(zhí)行如下讀入程序段再執(zhí)行如下讀入程序段(端口地址40H43H):第10章可編程定時(shí)/計(jì)數(shù)控制器 INAL, 40H ;讀入計(jì)數(shù)器0的OL低8位MOV BL, ALIN AL, 40H ;讀入計(jì)數(shù)器0的OL高8位MOV BH,AL 第10章可編程定時(shí)/計(jì)數(shù)控制器 (2)讀之前先送計(jì)數(shù)器鎖存命令)讀之前先送計(jì)數(shù)器鎖存命令 計(jì)數(shù)鎖存命令是控制字計(jì)數(shù)鎖存命令是控制字RL1、RL0為為00的一種特殊形式,的一種

46、特殊形式,所以寫入的端口地址是控制字地址。所以寫入的端口地址是控制字地址。再由鎖存命令的再由鎖存命令的SC1、SC0編碼,決定所要鎖存的計(jì)數(shù)器。編碼,決定所要鎖存的計(jì)數(shù)器。鎖存命令的低鎖存命令的低4位無(wú)位無(wú)效,可以為效,可以為0000B。第10章可編程定時(shí)/計(jì)數(shù)控制器 假設(shè)要讀計(jì)數(shù)器2的計(jì)數(shù)值,則要執(zhí)行如下程序段:MOV AL, 80H;計(jì)數(shù)器2鎖存命令OUT 43H,AL ;寫入計(jì)數(shù)器2控制寄存器IN AL, 42H;讀計(jì)數(shù)器2輸出鎖存器OL低8位MOV BL, ALIN AL, 42H;讀計(jì)數(shù)器2輸出鎖存器OL高8位M0V BH, AL第10章可編程定時(shí)/計(jì)數(shù)控制器 從上面程序段可見(jiàn),這種

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

48、程定時(shí)/計(jì)數(shù)控制器 當(dāng)讀走當(dāng)讀走OL中的數(shù)據(jù)或重新編程后,計(jì)數(shù)輸出鎖存器中的數(shù)據(jù)或重新編程后,計(jì)數(shù)輸出鎖存器解除鎖存狀態(tài),又開(kāi)始隨計(jì)數(shù)單元的計(jì)數(shù)值變化解除鎖存狀態(tài),又開(kāi)始隨計(jì)數(shù)單元的計(jì)數(shù)值變化。由于有由于有對(duì)計(jì)數(shù)值鎖存的功能,讀計(jì)數(shù)值時(shí),可以不停止計(jì)數(shù)器的對(duì)計(jì)數(shù)值鎖存的功能,讀計(jì)數(shù)值時(shí),可以不停止計(jì)數(shù)器的計(jì)數(shù)。計(jì)數(shù)。CPU可以在任何時(shí)刻先送鎖存命令再讀計(jì)數(shù)值,而可以在任何時(shí)刻先送鎖存命令再讀計(jì)數(shù)值,而對(duì)計(jì)數(shù)單元的計(jì)數(shù)沒(méi)有任何影響。對(duì)計(jì)數(shù)單元的計(jì)數(shù)沒(méi)有任何影響。顯然送完鎖存命令之后顯然送完鎖存命令之后不管什么時(shí)候讀計(jì)數(shù)值,讀到的總是發(fā)出鎖存命令那個(gè)時(shí)不管什么時(shí)候讀計(jì)數(shù)值,讀到的總是發(fā)出鎖存命令那

49、個(gè)時(shí)刻的計(jì)數(shù)值??痰挠?jì)數(shù)值。每次讀計(jì)數(shù)值之前都必須先送鎖存命令每次讀計(jì)數(shù)值之前都必須先送鎖存命令。如如果讀之前使用了兩次鎖存命令,則第二個(gè)命令是無(wú)效的。果讀之前使用了兩次鎖存命令,則第二個(gè)命令是無(wú)效的。讀入的計(jì)數(shù)值是執(zhí)行第一次鎖存命令時(shí)所鎖存的計(jì)數(shù)值。 第10章可編程定時(shí)/計(jì)數(shù)控制器 補(bǔ)充例題補(bǔ)充例題例1. 在以8086為核心的系統(tǒng)中,擴(kuò)展一片8253芯片,要求通道0每個(gè)2ms輸出一個(gè)負(fù)脈沖,其工作頻率為2MHZ,8253與8086總線連接圖如下。完成通道初始化程序。第10章可編程定時(shí)/計(jì)數(shù)控制器 1)由分析可知,8253的端口地址為0C0H-0C6H,只占偶地址。由于題目要求每個(gè)2ms輸出一

50、個(gè)負(fù)脈沖,選擇工作方式2. 2)計(jì)算計(jì)數(shù)初值。設(shè)定時(shí)時(shí)間為t,通道時(shí)鐘頻率為f,計(jì)數(shù)初值為N,則 N=t*f=2*10-3*2*106=4000.3)初始化編程確定控制字 0011 0100B=34H確定端口地址:通道0 0C0H,控制端口 0C6HMOV AL,34HOUT 0C6H,AL ;寫控制方式字MOV AX,4000 ;將計(jì)數(shù)初值送AXOUT 0C0H,AL ;先寫低8位,寫入通道0MOV AL,AHOUT 0C0H,AL ; 再寫高8位,寫入通道0第10章可編程定時(shí)/計(jì)數(shù)控制器 例2. 在以8086為核心的系統(tǒng)中,擴(kuò)展一片8253芯片,要求通道0對(duì)外部脈沖計(jì)數(shù),記滿400個(gè)脈沖后

51、向CPU發(fā)出一個(gè)中斷請(qǐng)求,端口地址為80H、82H、84H、86H,完成軟硬件設(shè)計(jì)。分析 1) 完成硬件設(shè)計(jì)。如果用譯碼器 Y0作為8253的片選,當(dāng)A7為1,A6 A5 A4 A3 A0均為0且M/IO為低時(shí),譯碼器工作,依據(jù)給出的8253地址,可分析出8253與8086總線系統(tǒng)連接圖如下所示。第10章可編程定時(shí)/計(jì)數(shù)控制器 第10章可編程定時(shí)/計(jì)數(shù)控制器 2) 選擇工作方式。根據(jù)題目要求,選擇通道0工作方式為0.計(jì)數(shù)初值為400,確定控制字為 0011 0000B=30H初始化程序如下:MOV AL,30HOUT 86H,ALMOV AX,400OUT 80H,ALMOV AL,AHOUT

52、 80H,AL第10章可編程定時(shí)/計(jì)數(shù)控制器 例3. 如果在例2的基礎(chǔ)上,有要求使用通道2輸出30HZ的方波,通道的工作時(shí)鐘為2MHZ,則軟硬件設(shè)計(jì)如何修改?分析 此時(shí)通道2應(yīng)工作在方式3,方波周期t=1/30HZ=33ms。因此,計(jì)數(shù)初值N=33ms*2MHZ=6600065536,超出了16位計(jì)數(shù)器的計(jì)數(shù)范圍,也就是說(shuō),一個(gè)通道無(wú)法完成這樣長(zhǎng)的定時(shí)工作,怎么辦? 為此,可采用多個(gè)通道共同完成(也稱為計(jì)數(shù)器的級(jí)聯(lián)或串聯(lián)),第一通道的輸出OUT作為第二級(jí)通道的CLK輸入,第二級(jí)通道的輸出OUT作為第三級(jí)通道的CLK輸入,最后一級(jí)的OUT作為最終輸出結(jié)果。其中,前幾級(jí)均采用方式3,最后一級(jí)采用滿

53、足題目要求的工作方式。 究竟需要多少級(jí)則取決于N的大小??梢詫分解為幾個(gè)數(shù)的乘積,每一個(gè)數(shù)均小于65536,有幾個(gè)數(shù)就需要幾個(gè)通道,每個(gè)數(shù)就是相應(yīng)通道的計(jì)數(shù)初值。第10章可編程定時(shí)/計(jì)數(shù)控制器 對(duì)本例來(lái)講,可以把N分解為 N=66*1000,因此需要2個(gè)通道,通道1采用方式3,計(jì)數(shù)初值為66,通道2采用方式3,計(jì)數(shù)初值為1000.連接電路圖如下圖所示。第10章可編程定時(shí)/計(jì)數(shù)控制器 芯片端口地址為80H86H,通道1控制字為 0101 0110B=56H, 通道2控制字 1011 0110B=0B6H初始化程序:MOV AL,56HOUT 86H,ALMOV AL,66OUT 82H,AL

54、;只寫低8位,寫入通道1MOV AL,0B6HOUT 86H,ALMOV AX, 1000OUT 84H,AL ;先寫低8位,寫入通道2MOV AL,AHOUT 84H,AL ;再寫高8位,寫入通道2第10章可編程定時(shí)/計(jì)數(shù)控制器 3. 8253在在IBM PC/XT機(jī)的應(yīng)用機(jī)的應(yīng)用在PC/XT機(jī)中用了一片8253,如圖10.11所示。 圖10.11 8253在IBM-PC/XT機(jī)的應(yīng)用的示意圖第10章可編程定時(shí)/計(jì)數(shù)控制器 三個(gè)計(jì)數(shù)器的使用情況如下:計(jì)數(shù)器0(CNT0)作軟時(shí)鐘的時(shí)間基準(zhǔn)。程序設(shè)置CNT0為方式3,輸出方波的周期約為55 ms(54.925493 ms),該信號(hào)送到中斷控制器

55、8259A的IR0端。因此,每隔55 ms產(chǎn)生一次中斷請(qǐng)求。在中斷服務(wù)程序中對(duì)時(shí)間基準(zhǔn)信號(hào)進(jìn)行計(jì)數(shù),修改用來(lái)表示時(shí)間的相應(yīng)內(nèi)存單元(計(jì)滿一秒,秒加1;計(jì)滿60秒,分加1,秒清0。如次類推)。第10章可編程定時(shí)/計(jì)數(shù)控制器 計(jì)數(shù)器1(CNT1)作動(dòng)態(tài)RAM的刷新定時(shí)。程序設(shè)置CNT1為方式2,每隔15.084s產(chǎn) 生一個(gè)窄脈沖輸出信號(hào),請(qǐng)求執(zhí)行動(dòng)態(tài)RAM的刷新操作(刷新一行),這樣可保證在2 ms內(nèi)將全部單元刷新一遍。CNT1的輸出信號(hào)送往DMA控制器8237A通道0的DMA請(qǐng)求輸入端。當(dāng)通道0執(zhí)行DMA操作時(shí),對(duì)動(dòng)態(tài)RAM進(jìn)行刷新。 第10章可編程定時(shí)/計(jì)數(shù)控制器 計(jì)數(shù)器2(CNT2)也設(shè)置成方式3,輸出的方波送到揚(yáng)聲器。用程序設(shè)定CNT2輸出波形的頻率和延續(xù)時(shí)間就能控制揚(yáng)聲器的音調(diào)和發(fā)音長(zhǎng)短。 在PC/XT機(jī)中825

溫馨提示

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

評(píng)論

0/150

提交評(píng)論