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

下載本文檔

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

文檔簡介

第11章可編程定時器/計數(shù)器11.1概述11.2可編程定時/計數(shù)器825311.1概述實現(xiàn)定時方法主要有三種:軟件定時、不可編程的硬件定時、可編程硬件定時。定時或計數(shù)的工作實質(zhì)均體現(xiàn)為對脈沖信號的計數(shù)。如果計數(shù)的對象是標準的內(nèi)部時鐘信號,由于其周期恒定,故計數(shù)值就恒定地對應(yīng)于一定的時間,這一過程即為定時。如果計數(shù)的對象是與外部過程相對應(yīng)的脈沖信號(周期可以不相等),則此時即為計數(shù)。11.2可編程定時/計數(shù)器825311.2.1

8253的主要性能11.2.2

8253的內(nèi)部結(jié)構(gòu)及外部引腳11.2.3

8253的工作方式及波形 11.2.4

8253的編程 11.2.5

8253的應(yīng)用 一、8253的主要性能主要性能:1.3個16位(每個可分為兩個8位)減法計數(shù)器/通道;2.2種計數(shù)制式:二進制計數(shù)或BCD碼計數(shù);3.最大計數(shù)值為65536;4.6種不同的方式工作。5.計數(shù)速率高達2MHZ。二、8253的外部引腳D0~D7:數(shù)據(jù)線。CS#:片選信號,低電平有效。

RD#:讀控制信號,低電平有效。WR#:寫控制信號,低電平有效。A0、A1:地址線,用于選擇3個計數(shù)器中的一個及選擇控制字寄存器。二、8253的外部引腳(續(xù))OUT0~2:計數(shù)器0#、1#、2#的輸出端。GATE0~2:計數(shù)器0#、1#、2#的門控制脈沖輸入端,由外部設(shè)備送入門控脈沖。CLK0~2:計數(shù)器0#、1#、2#的時鐘輸入端。三、8253的內(nèi)部結(jié)構(gòu)三、8253的內(nèi)部結(jié)構(gòu)(續(xù))8253的內(nèi)部結(jié)構(gòu):3個結(jié)構(gòu)相同的16位計數(shù)器;

1個8位控制字寄存器。計數(shù)器內(nèi)部結(jié)構(gòu):計數(shù)初值寄存器CR;計數(shù)執(zhí)行部件CE;輸出鎖存器OL;都是16位寄存器,也可作8位寄存器使用。計數(shù)器內(nèi)部結(jié)構(gòu)計數(shù)器工作過程通過程序給計數(shù)初值寄存器CR送入初始值;初始值被送入計數(shù)執(zhí)行部件CE進行減1計數(shù);輸出鎖存器OL用來鎖存CE的內(nèi)容,可由CPU進行讀出操作。

8253內(nèi)部的3個計數(shù)器和1個控制字寄存器,可通過地址線A0、A1,讀寫控制線RD#、WR#與片選CS#進行尋址,并實現(xiàn)相應(yīng)的操作。8253讀寫控制邏輯表四、8253的工作方式方式0-中斷信號發(fā)生器方式1-可編程單穩(wěn)負脈沖信號發(fā)生器方式2-分頻器方式3-方波信號發(fā)生器方式4-軟件觸發(fā)的選通脈沖信號發(fā)生器方式5-硬件觸發(fā)的選通脈沖信號發(fā)生器方式0-中斷信號發(fā)生器寫控制字:設(shè)定工作方式后,OUT端變?yōu)榈碗娖?寫初值:8位/16位(分2次)初值;開始計數(shù):計數(shù)值裝入執(zhí)行部件,每個CLK下降沿,減1計數(shù);計數(shù)結(jié)束:減到0時,計數(shù)過程結(jié)束,OUT端變?yōu)楦唠娖?。此輸出信號可作為計?shù)結(jié)束的中斷請求信號;GATE作為計數(shù)控制信號:計數(shù)過程中,GATE=1:允許計數(shù);GATE=0:暫停計數(shù);重新計數(shù):計數(shù)過程中,可隨時寫入新的計數(shù)值;如果初值為8位,則寫完初值后,按新的初值重新開始計數(shù);如果新的初值為16位,則寫入第一個字節(jié)時,立即中止計數(shù),寫入第二個字節(jié)后,按新的初值重新開始計數(shù);計數(shù)結(jié)束后,OUT端保持高電平,直至賦新的初值。方式0時序波形圖(一)方式0時序波形圖(二)寫入8253的計數(shù)初值只是寫入了CR,之后到來的第一個CLK輸入脈沖(由低電平變高,再由高變低)才將初值送到CE減1計數(shù)器。從第二個CLK信號的下降沿才真正開始減1計數(shù)。方式1-可編程單穩(wěn)負脈沖信號發(fā)生器寫控制字:設(shè)定工作方式后,OUT端變?yōu)楦唠娖?;寫初值?位/16位(分2次)初值;開始計數(shù):GATE上升沿控制計數(shù)開始。GATE上升沿的下一個時鐘周期OUT變?yōu)榈碗娖剑總€CLK下降沿,減1計數(shù);計數(shù)結(jié)束:減到0時,計數(shù)過程結(jié)束,OUT端變?yōu)楦唠娖健4朔绞娇梢暂敵鲆粋€寬度(計數(shù)初值*Tclk)可調(diào)的單拍負脈沖,可作為設(shè)備的選通信號。重設(shè)初值:計數(shù)過程中,重新寫入初值,對當前計數(shù)過程不會產(chǎn)生影響;重新觸發(fā):計數(shù)過程中,GATE上升沿的下一個時鐘脈沖計數(shù)器將從初始值重新作減1計數(shù),此時OUT端低電平保持不變,從而加寬了輸出的負脈沖寬度。重新計數(shù):計數(shù)結(jié)束后,GATE上升沿控制新一輪計數(shù)。方式1時序波形圖(一)

方式1時序波形圖(二)

方式2-分頻器寫控制字:設(shè)定工作方式后,OUT端變?yōu)楦唠娖?;寫初值?位/16位(分2次)初值;開始計數(shù):計數(shù)值裝入執(zhí)行部件,每個CLK下降沿減1計數(shù);計數(shù)結(jié)束:當計數(shù)器減到1時,OUT端輸出將變?yōu)榈碗娖剑辉俳?jīng)過一個時鐘周期,計數(shù)值減到0后,OUT又恢復(fù)為高電平。在此方式下,計數(shù)器具有自動裝入計數(shù)初值的功能,即計數(shù)器的計數(shù)過程會自動重復(fù)工作。從而產(chǎn)生一個n分頻(n是寫入計數(shù)器的初值)的連續(xù)的不對稱的脈沖信號,可以作為脈沖信號發(fā)生器。重設(shè)初值:計數(shù)過程中重新寫入初值不影響當前計數(shù)過程;計數(shù)過程控制:GATE=1:允許計數(shù);GATE=0:停止計數(shù),并強迫OUT輸出高電平;GATE上升沿:下一個時鐘周期,計數(shù)器恢復(fù)初值重新開始作減1計數(shù)。方式2時序波形圖方式3-方波信號發(fā)生器

方式3與方式2類似,不同的是輸出的波形為方波或者為近似對稱的矩形波。

當計數(shù)值n為偶數(shù):每當計數(shù)值減到n/2時,OUT端由高電平變?yōu)榈碗娖?,并一直保持計?shù)到0,一旦計數(shù)為0時OUT端又由低變高并重新給計數(shù)器裝入初值。

當計數(shù)值n為奇數(shù):輸出分頻波高電平寬度為(n+1)/2計數(shù)脈沖周期,低電平寬度為(n-1)/2計數(shù)脈沖周期。方式3時序波形圖(一)

方式3時序波形圖(二)

方式4-軟件觸發(fā)的選通脈沖信號發(fā)生器寫控制字:設(shè)定工作方式后,OUT端變?yōu)楦唠娖?;寫初值?位/16位(分2次)初值;開始計數(shù):計數(shù)值裝入執(zhí)行部件,每個CLK下降沿減1計數(shù);計數(shù)結(jié)束:減到0時,輸出寬度為1個Tclk的負脈沖。該負脈沖可以作為選通信號。計數(shù)過程控制:GATE=1允許計數(shù);GATE=0停止計數(shù);重設(shè)初值:該方式是一次有效,即不重新寫入計數(shù)值,就只產(chǎn)生一個選通脈沖。如果在計數(shù)時又寫入新的計數(shù)值,則在下一個時鐘周期時將把此計數(shù)值寫入計數(shù)器執(zhí)行部件,使計數(shù)器按此新的計數(shù)值重新計數(shù)。方式4時序波形圖(一)

方式4時序波形圖(二)

方式5-硬件觸發(fā)的選通脈沖信號發(fā)生器

此方式與方式4類似,不同的是:方式4靠軟件觸發(fā),而方式5是利用引腳GATE來觸發(fā)。

GATE上升沿觸發(fā):下一時鐘周期,計數(shù)器開始作減1計數(shù)。任何時刻,當GATE觸發(fā)脈沖上升沿到來時,將把計數(shù)初值重新送入計數(shù)器,然后重新開始計數(shù)過程。五、8253的編程寫入方式控制字寫入計數(shù)值讀取計數(shù)值8253的編程—寫入方式控制字8253的編程—寫入計數(shù)值

若規(guī)定只寫低8位,則只寫1次,且寫入的為計數(shù)初值的低8位,高8位自動為0。若規(guī)定只寫高8位,則只寫1次,且寫入的為計數(shù)初值的高8位,低8位自動為0。若規(guī)定寫兩次,則先寫入的為計數(shù)初值的低8位,再寫入的為計數(shù)初值的高8位。

選擇二進制時計數(shù)值范圍:0000H~FFFFH0000H是最大值,代表65536

選擇十進制(BCD碼)計數(shù)值范圍:0000~99990000代表最大值100001、當采用8位二進制計數(shù)時:

在8253初始化編程的傳送指令“MOVAL,n”中,n可以寫成任何進制數(shù)(二進制、十進制或十六進制)的形式。2、當采用16位二進制計數(shù)時:

方法一:先把計算得到的十進制計數(shù)初值n轉(zhuǎn)換成十六進制數(shù)(即16位二進制),然后分兩次寫入8253的指定端口。方法二:先把該十進制計數(shù)初值n直接傳送給AX,然后分兩次寫入8253指定端口,即:

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

MOVAL,AHOUTPORT,AL ;后寫高8位8253的編程—寫入計數(shù)值注意事項3、當采用十進制(BCD碼)計數(shù)時:

例如n=50,則應(yīng)按如下方式寫入:

MOVAL,50HOUTPORT,AL

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

MOVAL,50HOUTPORT,AL;先寫低8位

MOVAL,12HOUTPORT,AL;后寫高8位也可按如下方法兩次寫入:

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

MOVAL,AHOUTPORT,AL;后寫高8位將十進制計數(shù)初值n加上后綴H,以便在相應(yīng)的傳送指令執(zhí)行后能夠在AL(或AX)中得到十進制數(shù)n的BCD碼表示形式。8253的編程—寫入計數(shù)值注意事項(續(xù))【例11.1】已知8253的端口地址為40H~43H,用8253的計數(shù)器0,每隔2ms輸出一個負脈沖,設(shè)CLK0為2MHz,完成軟件設(shè)計。

解:

1、計算計數(shù)初值N:

8253的編程舉例2、確定控制字:根據(jù)題意,選擇計數(shù)器0,工作方式2。(1)二進制計數(shù),計數(shù)初值為4000(0FA0H),既寫高字節(jié),又寫低字節(jié)??刂谱譃椋?0110100B=34H(2)BCD碼計數(shù),計數(shù)初值為4000H,低字節(jié)為0,可只寫高字節(jié)??刂谱譃椋?0100101B=25H3、確定各端口地址計數(shù)器0,計數(shù)器1,計數(shù)器2,控制端口的地址分別為40H、41H、42H和43H。

8253的編程舉例(續(xù)1)4、程序:(1)采用二進制計數(shù): MOVAL,34H ;控制字 OUT43H,AL ;寫到控制端口

MOVAX,4000;把4000自動分離出低8位和高8位 OUT40H,AL ;先送低8位到計數(shù)器0

MOVAL,AH ;把高8位給AL

OUT40H,AL ;再送高8位到計數(shù)器0(2)采用BCD碼計數(shù): MOVAL,25H ;控制字 OUT43H,AL ;寫到控制端口

MOVAL,40H ;只需寫高字節(jié),低字節(jié)自動為0 OUT40H,AL ;寫高8位到計數(shù)器08253的編程舉例(續(xù)2)8253的編程—讀取計數(shù)值

對8位數(shù)據(jù)線,讀取16位計數(shù)值需分兩次。計數(shù)在不斷進行,應(yīng)該將當前計數(shù)值先行鎖存,然后讀取。

【例11.2】設(shè)某系統(tǒng)中8253的端口地址為0B0~0B3H,讀取計數(shù)器1當前的計數(shù)值(設(shè)計數(shù)值為16位),并存入BX寄存器的程序如下:

解: MOVAL,01000000B ;發(fā)鎖存命令 OUT0B3H,AL ;寫入控制端口 INAL,0B1H ;讀低8位 MOVBL,AL ;存入BL中 INAL,0B1H ;讀高8位 MOVBH,AL ;存入BH中六、8253的應(yīng)用

在IBMPC/XT機中,8253是CPU外圍支持電路之一,為系統(tǒng)電子鐘提供時間基準,為動態(tài)RAM刷新提供定時信號以及作為揚聲器的聲源等功能。

CLK0~CLK2由8284時鐘發(fā)生器輸出的外部時鐘PCLK(2.38MHz)經(jīng)過2分頻獲得,其頻率為1.19MHz。

8253的3個計數(shù)器端口地址為:40H、41H、42H;控制寄存器端口地址為43H。PC機中的8253為系統(tǒng)電子鐘提供時間基準,即向系統(tǒng)日歷時鐘提供定時中斷。其輸出端OUT0作為系統(tǒng)的中斷源接到中斷控制器8259A的中斷請求端IRQ0。選用方式3工作,以產(chǎn)生周期性的方波信號。為此,對計數(shù)器0編程時應(yīng)設(shè)置的控制字為36H。計數(shù)器初值預(yù)置為0(即最大值65536),因此OUT0輸出方波的時鐘頻率為:1.19MHz/65536=18.21Hz。每間隔55ms產(chǎn)生一次0級中斷(每秒出現(xiàn)18.2次)。GATE0接+5V,允許計數(shù)。PC機中的8253—計數(shù)器0

為動態(tài)RAM刷新提供定時信號,即向DMA控制器定時發(fā)動態(tài)存儲器刷新請求。選用方式2工作,相當于一個分頻器??刂谱譃?4H.

計數(shù)器初始值為18。OUT1輸出的分頻脈沖頻率為:1.19MHz/18=66.1KHz。相當于周期為15.1μs。這樣,計數(shù)器1每隔15.1μs經(jīng)由U21產(chǎn)生一個動態(tài)RAM刷新的請求信號DRQ0,以完成對動態(tài)RAM的刷新。

GATE1接+5V,允許計數(shù)。

PC機中的8253—計數(shù)器1系統(tǒng)揚聲器的聲源,其輸出信號送往揚聲器。根據(jù)OUT2端輸出信號的頻率來控制揚聲器的音調(diào)。揚聲器發(fā)聲的長短取決于OUT2信號延續(xù)時間的長短,通過門控信號GATE2控制。GATE2是在并行接口芯片8255A的PB0的。

方式3工作,控制字為B6H。

初值置533H(即1331)。OUT2輸出方波頻率為:1.19MHz/1331=894Hz。PC機中的8253—計數(shù)器28253的3個計數(shù)器的預(yù)置程序如下:PR0:MOVAL,36H ;選擇計數(shù)器0,寫雙字節(jié)計數(shù)值, ;方式3,二進制計數(shù)

OUT43H,AL ;寫控制字

MOVAL,0 ;預(yù)置計數(shù)值65536 OUT40H,AL ;先送低字節(jié)計數(shù)值

OUT40H,AL ;后送高字節(jié)計數(shù)值PR1: MOVAL,54H ;選擇計數(shù)器1,讀/寫低字節(jié)計數(shù) ;值,方式2,二進制計數(shù)

OUT43H,AL MOVAL,12H ;預(yù)置計數(shù)器初值18 OUT41H,ALPR2: MOVAL,0B6H ;選擇計數(shù)器2,讀/寫雙字節(jié)計數(shù) ;值,方式3,二進制計數(shù)

OUT43H,AL MOVAX,533H ;送分頻數(shù)1331 OUT42H,AL ;先送低字節(jié)

MOVAL,AH OUT42H,AL ;后送高字節(jié)【例11.3】某8086系統(tǒng)中有一片8253芯片,端口地址為500H、502H、504H、506H,各通道均接6MHz的時鐘信號,要求在計數(shù)器0輸出一個最大寬度的負脈沖,計數(shù)器1輸出一個方波信號,周期為10s,計數(shù)器2輸出一個定時中斷信號,定時時間為0.2ms,寫出其初始化程序。

8253的應(yīng)用舉例1

分析:計數(shù)器0、1、2的地址分別為500H、502H、504H,控制端口的地址為506H。計數(shù)器0工作在方式1,必須采用二進制,計數(shù)器值為0(65536)。

計數(shù)器1工作在方式3,計數(shù)值為

60,只寫低字節(jié),采用二進制或BCD碼計數(shù)都可以。

計數(shù)器2工作在方式0,計數(shù)值為1200,采用二進制或BCD碼計數(shù)都可以。8253的應(yīng)用舉例1(續(xù)一)計數(shù)器0:MOVDX,506HMOVAL,00110010BOUTDX,ALMOVDX,500HMOVAL,0OUTDX,ALOUTDX,AL計數(shù)器2:MOVDX,506HMOVAL,10110000BOUTDX,ALMOVDX,504HMOVAX,1200OUTDX,ALMOVAL,AHOUTDX,AL計數(shù)器1:MOVDX,506HMOVAL,01010111BOUTDX,ALMOVDX,502HMOVAL,60HOUTDX,AL8253的應(yīng)用舉例1(續(xù)二)【例11.4】某8088系統(tǒng)中有一片8253芯片,端口地址為150H~153H,計數(shù)器0的輸出作為計數(shù)器1的計數(shù)脈沖,利用計數(shù)器1控制發(fā)光二極管,使發(fā)光二極管持續(xù)閃爍,亮2秒,滅2秒,利用其計數(shù)器2完成對外部事件計數(shù),計滿200次向CPU發(fā)出中斷申請,試編寫8253的初始化程序,硬件電路如圖11.12所示。8253的應(yīng)用舉例2計數(shù)器0:計數(shù)初值N=2MHz/1KHz=2000,設(shè)采用二進制計數(shù),操作類型為11(2000=07D0H,高低字節(jié)都不為0),方波為方式3。

初始化程序如下:

MOVAL,00110110B ;通道0的控制字MOVDX,153H ;控制端口的地址OUTDX,AL ;寫控制字到控制端口MOVAX,2000;讓計數(shù)初值2000自動分離出高低字節(jié)MOVDX,150H ;通道0

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論