微機(jī)原理與接口技術(shù)章定時(shí)器計(jì)數(shù)器_第1頁
微機(jī)原理與接口技術(shù)章定時(shí)器計(jì)數(shù)器_第2頁
微機(jī)原理與接口技術(shù)章定時(shí)器計(jì)數(shù)器_第3頁
微機(jī)原理與接口技術(shù)章定時(shí)器計(jì)數(shù)器_第4頁
微機(jī)原理與接口技術(shù)章定時(shí)器計(jì)數(shù)器_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

06二月2024第9章定時(shí)/計(jì)數(shù)接口電路9.1定時(shí)/計(jì)數(shù)的基本概念9.2可編程定時(shí)/計(jì)數(shù)器Intel8253/82549.3Intel8254簡介習(xí)題906二月20249.1定時(shí)/計(jì)數(shù)的基本概念

定時(shí)(計(jì)數(shù))就是通過硬件或軟件的方法產(chǎn)生一個(gè)時(shí)間基準(zhǔn),以此來實(shí)現(xiàn)對系統(tǒng)的定時(shí)或延時(shí)控制。要實(shí)現(xiàn)定時(shí)或延時(shí)控制,有三種主要方法:軟件定時(shí)、純硬件定時(shí)及可編程的硬件定時(shí)器/計(jì)數(shù)器。1.軟件定時(shí)軟件定時(shí)的方法是:由于執(zhí)行每條指令都需要時(shí)間,則執(zhí)行一個(gè)程序段就需要一個(gè)固定的時(shí)間,通過適當(dāng)?shù)靥暨x指令和安排循環(huán)次數(shù)來實(shí)現(xiàn)軟件的定時(shí)。這種方法由于要完全占用CPU的時(shí)間,因而降低了CPU的利用率。06二月2024DELAYPROCNEARPUSHBXPUSHCX;保護(hù)現(xiàn)場

MOVCX,0LOP1:MOVBX,0LOP2:DECBXJNZLOP2LOOPLOP1;共循環(huán)65536*65536次

POPCXPOPBX;恢復(fù)現(xiàn)場

RETDELAYENDP06二月20242.純硬件定時(shí)它采用固定的電路,如可以采用小規(guī)模集成電路555,外接電阻和電容構(gòu)成單穩(wěn)延時(shí)電路。這樣的定時(shí)電路簡單,而且通過改變電阻和電容,可以使定時(shí)在一定的范圍內(nèi)調(diào)整。但它由純硬件來完成,給使用帶來不便。

振蕩周期:

T=0.7*(R1+2R2)*C06二月2024

3.可編程硬件定時(shí)器/計(jì)數(shù)器這是目前在控制系統(tǒng)中廣泛使用的方法,它通過編程來控制電路的定時(shí)值及定時(shí)范圍,功能強(qiáng),使用靈活。在計(jì)算機(jī)系統(tǒng)中,象定時(shí)中斷、定時(shí)檢測、定時(shí)掃描等等都是用可編程定時(shí)器來完成定時(shí)控制的。

Intel系列的8253、8254就是常用的可編程定時(shí)/計(jì)數(shù)器。06二月20249.2可編程定時(shí)/計(jì)數(shù)器Intel8253/8254-PIT9.2.1Intel8253的主要性能和內(nèi)部結(jié)構(gòu)

1.Intel8253的主要性能

Intel8253-PIT有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è)置和改變。它可用在多種場合,如方波發(fā)生器、分頻器、實(shí)時(shí)時(shí)鐘、事件計(jì)數(shù)等方面。06二月2024圖9.1Intel8253的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線緩沖器讀寫控制邏輯

控制字寄存器計(jì)數(shù)器

0計(jì)數(shù)器1計(jì)數(shù)器2RDWRCSA0A1CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7~D02.Intel8253的內(nèi)部結(jié)構(gòu)06二月2024⑴數(shù)據(jù)總線緩沖器它與CPU的數(shù)據(jù)總線相連,是8位雙向三態(tài)緩沖器。CPU通過這個(gè)緩沖器對8253進(jìn)行讀/寫操作。⑵控制字寄存器此寄存器只能寫入而不能讀出。在8253初始化時(shí),由CPU寫入控制字來設(shè)置計(jì)數(shù)器的工作方式。⑶計(jì)數(shù)器計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2是三個(gè)完全獨(dú)立、結(jié)構(gòu)相同的計(jì)數(shù)器,每一個(gè)都是由一個(gè)16位的可預(yù)置的減法計(jì)數(shù)器構(gòu)成。06二月20249.2.2Intel8253的外部性能圖9.2Intel8253的外部引腳圖D7D6D5D4D3D2D1D0CLK0OUT0GATE0GNDOTU1GATE1CLK1GATE2CLK2A0A1OTU2WRRDCSVCC8253PIT24232221201918171615141312345678910111206二月2024GATE:門控信號(hào),當(dāng)GATE為低電平時(shí),禁止計(jì)數(shù)器工作;GATE為高電平時(shí),才允許計(jì)數(shù)器工作。

CLK:計(jì)數(shù)脈沖輸入。

OUT:脈沖輸出。當(dāng)計(jì)數(shù)到“0”時(shí),從OUT端輸出信號(hào),輸出信號(hào)的波形取決于工作方式。

CS、RD、WR、A0、A1共同結(jié)合,用于對8253進(jìn)行端口操作,如表9-1所示。06二月2024表9-18253的端口選擇A1A0寄存器選擇和操作01000寫計(jì)數(shù)器001001寫計(jì)數(shù)器101010寫計(jì)數(shù)器201011寫控制字寄存器00100讀計(jì)數(shù)器000101讀計(jì)數(shù)器100110讀計(jì)數(shù)器200111無操作(三態(tài))1××××禁止(三態(tài))011××無操作(三態(tài))06二月20249.2.3Intel8253的控制字和編程圖9.38253的控制字

在8253的初始化編程中,CPU通過向8253的控制字寄存器寫入控制字來設(shè)置其工作方式。格式如下:06二月2024

SC1、SC0:

這兩位決定這個(gè)控制字是哪一個(gè)計(jì)數(shù)器的控制字。

RL1、RL0:設(shè)置數(shù)據(jù)讀/寫格式。在讀取計(jì)數(shù)值時(shí),可令RL1、RL0=00,先將寫控制字時(shí)的計(jì)數(shù)值鎖存,然后再讀取。

M2、M1、M0:設(shè)置每個(gè)計(jì)數(shù)器的工作方式。

BCD:用于選擇每個(gè)計(jì)數(shù)器的計(jì)數(shù)制。在二進(jìn)制計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍是0000H~FFFFH,其中0000H是最大值,代表65536。在BCD碼計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍中0000—9999,其中,0000是最大值,代表10000。06二月20249.2.4Intel8253的工作方式

Intel8253的每個(gè)計(jì)數(shù)器都有6種工作方式,這6種方式的主要區(qū)別是:輸出的波形不同,計(jì)數(shù)過程中GATE信號(hào)對計(jì)數(shù)操作的影響不同,啟動(dòng)計(jì)數(shù)器的觸發(fā)方式不同等。

1.方式0—計(jì)數(shù)結(jié)束后輸出由低變高(計(jì)數(shù)/定時(shí)結(jié)束中斷)

該方式的波形如圖9.4所示。06二月202412456378910新值立即有效停止計(jì)數(shù)繼續(xù)計(jì)數(shù)方式0的波形06二月2024GATE為低時(shí),停止計(jì)數(shù),有效后繼續(xù)計(jì)數(shù)GATE信號(hào)的作用:06二月2024

在計(jì)數(shù)過程中可改變計(jì)數(shù)初值,若為8位計(jì)數(shù)初值,寫入新值后,計(jì)數(shù)器將按新值開始計(jì)數(shù),若為16位計(jì)數(shù)初值,則在寫入低8位后停止計(jì)數(shù),寫入高8位后,計(jì)數(shù)器按新值開始計(jì)數(shù)。06二月2024

這種方式的特點(diǎn)是:

①寫入控制字后,OUT輸出端變?yōu)榈碗娖?。?dāng)寫入計(jì)數(shù)初值后,計(jì)數(shù)器開始減1計(jì)數(shù)。在計(jì)數(shù)過程中OUT一直保持為低電平,直到計(jì)數(shù)到0時(shí),OUT輸出變?yōu)楦唠娖?。此信?hào)可用于向CPU發(fā)出中斷請求。②計(jì)數(shù)器只計(jì)數(shù)一遍。當(dāng)計(jì)數(shù)到0時(shí),不恢復(fù)計(jì)數(shù)初值,不開始重新計(jì)數(shù),且輸出一直保持為高電平。只有在寫入新的計(jì)數(shù)值時(shí),OUT才變低,并開始新的計(jì)數(shù)。06二月2024③GATE是門控信號(hào),GATE=1時(shí)允許計(jì)數(shù),GATE=0時(shí),禁止計(jì)數(shù)。在計(jì)數(shù)過程中,如果GATE=0則計(jì)數(shù)暫停,當(dāng)GATE=1后接著計(jì)數(shù)。④在計(jì)數(shù)過程中可改變計(jì)數(shù)值。若是8位計(jì)數(shù),在寫入新的計(jì)數(shù)值后,計(jì)數(shù)器將按新的計(jì)數(shù)值重新開始計(jì)數(shù)。如果是16位計(jì)數(shù),在寫入第一個(gè)字節(jié)后,計(jì)數(shù)器停止計(jì)數(shù),在寫入第二個(gè)字節(jié)后,計(jì)數(shù)器按照新的計(jì)數(shù)值開始計(jì)數(shù)。方式0的應(yīng)用舉例(家庭廚房應(yīng)用—電飯煲微波爐控制)06二月20248253工作在方式0,二進(jìn)制計(jì)數(shù)。4小時(shí)后OUT0輸出高電平申請中斷,接通家用電器。設(shè)8253口地址為40~43H,8255口地址為60~63H。程序片段如下:MOVAL,10011010BOUT63H,ALMOVAL,00HOUT63H,ALMOVAL,00110000BOUT43H,ALMOVAL,40HOUT40H,AL計(jì)數(shù)初值:4*3600=14400s=3840HMOVAL,38HOUT40H,AL中斷程序片段

MOVAL,00000001BOUT63H,AL2.方式1—可編程序的單拍脈沖

方式1的波形如圖9.6所示。06二月2024圖9.6方式1波形12456378109重新開始計(jì)數(shù)06二月202406二月202406二月2024

方式1的特點(diǎn)是:①寫入控制字后,輸出OUT將保持為高電平,計(jì)數(shù)由GATE啟動(dòng)。GATE啟動(dòng)之后,OUT變?yōu)榈碗娖?,?dāng)計(jì)數(shù)到0時(shí),OUT輸出高電平,從而在OUT端輸出一個(gè)負(fù)脈沖,負(fù)脈沖的寬度為N個(gè)(計(jì)數(shù)初值)CLK的脈沖寬度。②當(dāng)計(jì)數(shù)到0后,不用送計(jì)數(shù)值,可再次由GATE脈沖啟動(dòng),輸出同樣寬度的單拍脈沖。③在計(jì)數(shù)過程中,可改變計(jì)數(shù)初值,此時(shí)計(jì)數(shù)過程不受影響。如果再次觸發(fā)啟動(dòng),則計(jì)數(shù)器將按新輸入的計(jì)數(shù)值計(jì)數(shù)。④在計(jì)數(shù)未到0時(shí),如果GATE再次啟動(dòng),則計(jì)數(shù)初值將重新裝入計(jì)數(shù)器,并重新開始計(jì)數(shù)。06二月2024方式1應(yīng)用06二月2024T2T1T3T1方式1T1+T3>NTCLK>T1+T2只要選取的時(shí)間常數(shù)N滿足:就可以濾去由同一車的不同車廂對光路的干擾06二月20243.方式2——頻率發(fā)生器(分頻器)

方式2的波形如圖9.7所示。9.73分頻06二月2024

方式2的特點(diǎn)是:①寫入控制字后,輸出將變?yōu)楦唠娖?。寫入?jì)數(shù)值后,計(jì)數(shù)立即開始。在計(jì)數(shù)過程中輸出始終為高電平,直至計(jì)數(shù)器減到1時(shí),輸出將變?yōu)榈碗娖?。?jīng)過一個(gè)CLK周期,輸出恢復(fù)為高,且計(jì)數(shù)器開始重新計(jì)數(shù)。它能夠連續(xù)工作,輸出固定頻率的脈沖。06二月2024②如果計(jì)數(shù)值為N,則每輸入N個(gè)CLK脈沖,輸出一個(gè)脈沖。因此相當(dāng)于對輸入脈沖的N分頻。通過對N賦不同的初值,即可在輸出端得到所需的頻率,起到頻率發(fā)生器的作用。③計(jì)數(shù)過程可由門控脈沖控制。當(dāng)GATE=0時(shí),暫停計(jì)數(shù);當(dāng)GATE變高自動(dòng)恢復(fù)計(jì)數(shù)初值,重新開始計(jì)數(shù)。④在計(jì)數(shù)過程中可以改變計(jì)數(shù)值,這對正在進(jìn)行的計(jì)數(shù)過程沒有影響。但在計(jì)數(shù)到1時(shí)輸出變低,經(jīng)過一個(gè)CLK周期后輸出又變高,計(jì)數(shù)器將按新的計(jì)數(shù)值計(jì)數(shù)。06二月2024

4.方式3—方波發(fā)生器方式3的波形如圖9.8所示。它的特點(diǎn)是:①輸出為周期性的方波。若計(jì)數(shù)值為N,則輸出方波的周期是N個(gè)CLK脈沖的寬度。圖9.8方式3波形06二月2024

②寫入控制字后,輸出將變?yōu)楦唠娖?。?dāng)寫入計(jì)數(shù)初值后,就開始計(jì)數(shù),輸出仍為高電平;當(dāng)計(jì)數(shù)到初值一半時(shí),輸出變?yōu)榈碗娖剑敝劣?jì)數(shù)到0,輸出又變?yōu)楦唠娖?,重新開始計(jì)數(shù)。③若計(jì)數(shù)值為偶數(shù),則輸出對稱方波。如果計(jì)數(shù)值為奇數(shù),則前(N+1)/2個(gè)CLK脈沖期間輸出為高電平,后(N—1)/2個(gè)CLK脈沖期間輸出為低電平。④GATE信號(hào)能使計(jì)數(shù)過程重新開始。GATE=1允許計(jì)數(shù),GATE=0禁止計(jì)數(shù)。停止后OUT將立即變高電平,當(dāng)GATE再次變高以后,計(jì)數(shù)器將重新裝入計(jì)數(shù)初值,重新開始計(jì)數(shù)。06二月20245.方式4——軟件觸發(fā)選通

方式4就是CPU通過軟件觸發(fā)8253的某個(gè)通道,定時(shí)啟動(dòng)一個(gè)事件或工作過程。波形如圖9.9所示。06二月2024n=4n=406二月2024

這種方式的特點(diǎn)是:①寫入控制字后,輸出為高電平。寫入計(jì)數(shù)值后立即開始計(jì)數(shù)(相當(dāng)于軟件觸發(fā)啟動(dòng)),當(dāng)計(jì)數(shù)到0后,輸出一個(gè)時(shí)鐘周期的負(fù)脈沖,計(jì)數(shù)器停止計(jì)數(shù)。只有在輸入新的計(jì)數(shù)值后,才能開始新的計(jì)數(shù)。計(jì)數(shù)值一次有效。②當(dāng)GATE=1時(shí),允許計(jì)數(shù),GATE=0,停止計(jì)數(shù)。計(jì)數(shù)過程中GATE變低后重新變高,則計(jì)數(shù)器從初值開始重新計(jì)數(shù)。③在計(jì)數(shù)過程中,如果改變計(jì)數(shù)值,則按新計(jì)數(shù)值重新開始計(jì)數(shù)。如果計(jì)數(shù)值是16位,則在設(shè)置第一字節(jié)時(shí)停止計(jì)數(shù),在設(shè)置第二字節(jié)后,按新計(jì)數(shù)值中開始計(jì)數(shù)。06二月2024方式4應(yīng)用

這個(gè)例子實(shí)際上相當(dāng)于CPU對家用電器的啟動(dòng)命令被延遲設(shè)定時(shí)間后發(fā)出的。

不完善處:要嚴(yán)格地按時(shí)開機(jī)和運(yùn)行程序的要求可能會(huì)使用戶對此系統(tǒng)不滿意,還可以繼續(xù)改進(jìn)。6.方式5——硬件觸發(fā)選通

方式5的波形如圖9.10所示。06二月202406二月2024GATA的作用06二月2024

方式5的特點(diǎn)是:①寫入控制字后,輸出為高電平。在設(shè)置了計(jì)數(shù)值后,計(jì)數(shù)器并不立即開始計(jì)數(shù),而是由門控脈沖的上升沿觸發(fā)啟動(dòng)。當(dāng)計(jì)數(shù)到0時(shí),輸出一個(gè)CLK周期的負(fù)脈沖,并停止計(jì)數(shù)。當(dāng)門控脈沖再次觸發(fā)時(shí)才能再計(jì)數(shù)。②在計(jì)數(shù)過程中如果再次用門控脈沖觸發(fā),則使計(jì)數(shù)器重新開始計(jì)數(shù),此時(shí)輸出還保持為高電平,直到計(jì)數(shù)為0,才輸出負(fù)脈沖。③如果在計(jì)數(shù)過程中改變計(jì)數(shù)值,只要沒有門控信號(hào)的觸發(fā),不影響計(jì)數(shù)過程。當(dāng)有新的門控脈沖的觸發(fā)時(shí),不管是否計(jì)數(shù)到0,都按新的計(jì)數(shù)值計(jì)數(shù)。06二月2024方式5應(yīng)用

這個(gè)例子相當(dāng)于硬件開關(guān)對家用電器的啟動(dòng)命令被延遲設(shè)定時(shí)間后發(fā)出。06二月2024小結(jié):06二月20249.2.5Intel8253的應(yīng)用舉例

1.初始化8253

要使用8253,必須首先對其進(jìn)行初始化,初始化有兩種方法:①對每個(gè)計(jì)數(shù)器分別進(jìn)行初始化,先寫控制字,后寫計(jì)數(shù)值。如果計(jì)數(shù)值是16位的,則先寫低8位再寫高8位。②先寫所有計(jì)數(shù)器的方式字,再寫各個(gè)計(jì)數(shù)器的計(jì)數(shù)值。如果計(jì)數(shù)值是16位的,則先寫低8位再寫高8位。06二月2024MOVAL,36H ;設(shè)置控制字00110110(計(jì)數(shù)器0,方式3,寫兩個(gè);字節(jié),二進(jìn)制計(jì)數(shù))OUT43H,AL ;寫入控制寄存器MOVAX,3060H ;設(shè)置計(jì)數(shù)值OUT40H,AL ;寫低8位至計(jì)數(shù)器0MOVAL,AHOUT40H,AL ;寫高8位至計(jì)數(shù)器0例如:假設(shè)一個(gè)8253在某系統(tǒng)中的端口地址40H~43H,如果要將計(jì)數(shù)器0設(shè)置為工作方式3,計(jì)數(shù)初值為3060H,采用二進(jìn)制計(jì)數(shù)法,則初始化方法如下:06二月20242.8253在IBMPC/XT機(jī)的應(yīng)用在IBMPC/XT機(jī)中,8253主要提供系統(tǒng)時(shí)鐘中斷、動(dòng)態(tài)RAM的刷新定時(shí)及喇叭發(fā)聲控制等功能。8253的初始化是在計(jì)算機(jī)啟動(dòng)時(shí)由BIOS完成的。圖9.11是8253在IBMPC/XT機(jī)的應(yīng)用的示意圖:圖9.118253在IBM-PC/XT機(jī)的應(yīng)用的示意圖CLK0CLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2INTIROQQ&濾波&PB0PB18255+5V1.193182MHz82538259+5V8088CPUDMA

控制器CP06二月2024⑴計(jì)數(shù)器0用于定時(shí)中斷(約55ms)MOV AL,36H;計(jì)數(shù)器0,方式3,寫兩個(gè)字節(jié),二進(jìn)制計(jì)數(shù)OUT 43H,AL;控制字送控制字寄存器MOV AL,0;計(jì)數(shù)值為最大值OUT 40H,AL;寫低8位OUT 40H,AL;寫高8位1.193182MHZ/65536=18.2HZ1/18.2HZ=55mS

從8284時(shí)鐘發(fā)生器來的頻率2.386364MHZ經(jīng)二分頻后作為8253三個(gè)計(jì)數(shù)器的時(shí)鐘輸入,8253在IBM-PC/XT中的端口地址為40H~43H,這三個(gè)計(jì)數(shù)器在系統(tǒng)中的初始化程序如下:06二月2024⑵計(jì)數(shù)器1用于定時(shí)(15μs)DMA請求

MOV AL,54H;54H=01010110BOUT 43,AL;計(jì)數(shù)器1,方式2,只寫低8位,二進(jìn)制計(jì)數(shù)

MOV AL,12H;初值為18;15μS/1.19318MHz=18OUT 41H,AL;18/1.19MHZ=15

注:動(dòng)態(tài)存儲(chǔ)器要求2ms刷新一遍,如果每次刷新512個(gè)單元,則經(jīng)128次刷新即可將全部芯片的64KB刷新完畢。2ms/128=15.6μS

06二月2024⑶計(jì)數(shù)器3用于產(chǎn)生約900HZ的方波送至揚(yáng)聲器MOV AL,B6H;計(jì)數(shù)器3,方式3,寫兩字節(jié),二進(jìn)制計(jì)數(shù)OUT 43,AL;B6=10110110BMOV AX,0533H

;計(jì)數(shù)初值為533H=1331;OUT 42H,AL;寫低8位MOV AL,AHOUT 42H,AL;寫高8位

實(shí)際上,1.193182*106/900=1326,這里給的計(jì)數(shù)初值為1331,所以實(shí)際產(chǎn)生的方波頻率比900HZ要小

下面程序利用CNT2控制揚(yáng)聲器發(fā)出500HZ的聲音,直至鍵盤上有任意鍵按下為止。

DATASEGMENTTABLEDW2380;1.19MHZ/500HZ=2380DATAENDSSTACKSEGMENTDB100DUP(?)

STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSOUNDPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AX06二月2024;8253初始化

MOVAL,10110110B;定時(shí)器2,16位計(jì)數(shù),先高后低,方式3;二進(jìn)制

OUT43H,ALMOVAX,TABLEOUT42H,ALMOVAL,AHOUT42H,ALINAL,61H;讀8255PB口

PUSHAXORAL,3;允許發(fā)聲

OUT61H,ALMOVAH,1INT21HPOPAXOUT61H,ALRETSOUNDENDPCODEENDSENDSTART

06二月2024CLK0CLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2INTIROQQ&濾波&PB0PB18255+5V1.193182MHz82538259+5V8088CPUDMA

控制器CP

例題:利用PC機(jī)總線在外部擴(kuò)展一片8253,利用其通道0記錄外部事件的發(fā)生次數(shù),每輸入一個(gè)高脈沖表示事件發(fā)生一次。當(dāng)事件發(fā)生100次后就向CPU提出中斷請求(邊沿觸發(fā)),假設(shè)此片8253片選信號(hào)的I/O地址范圍為200H~207H。06二月2024

;8253初始化

MOVDX,203HMOVAL,10HOUTDX,AL;方式0,二進(jìn)制計(jì)數(shù),只寫低字節(jié)計(jì)數(shù)值

MOVDX,200HMOVAL,64HOUTDX,AL;置計(jì)數(shù)初值06二月2024

關(guān)于級(jí)聯(lián)問題:現(xiàn)在8253芯片有1MHZ的方波輸入信號(hào),要求分頻為10HZ的信號(hào),或者要求8253能定時(shí)10分鐘,只能用單片8253來完成,應(yīng)該怎么辦?06二月20241、1MHZ的方波輸入信號(hào),要求分頻為10HZ的信號(hào)單通道無法完成分頻任務(wù)用兩通道級(jí)聯(lián)的反復(fù)完成分頻任務(wù)82531MHZ10HZCLK0OUT0OUT1CLK1+5VGATA0GATA1計(jì)數(shù)器0初值設(shè)為1000計(jì)數(shù)器1初值設(shè)為100均工作在方式3下。06二月2024現(xiàn)在8253芯片有1MHZ的方波輸入信號(hào),要求能定時(shí)10分鐘分析:10分鐘=10*60=600S1個(gè)CLK周期為1/1MHZ=10-6S

所以10分鐘共需:600/10-6=6*108,顯然需要通道級(jí)聯(lián)。82531MHZ10分鐘CLK0OUT0OUT1CLK1+5VGATA0GATA1計(jì)數(shù)器0初值設(shè)為10000,工作在方式3;計(jì)數(shù)器1初值設(shè)為60000,工作在方式0下。10分鐘后OUT1端輸出高電平。假設(shè)8253的端口地址為310~313H,程序如下:06二月2024MOVDX,313H;計(jì)數(shù)器0初始化

MOVAL,00110110BOUTDX,AL;方式3,二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)初值

MOVDX,310HMOVAX,10000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;計(jì)數(shù)器1初始化

MOVAL,01110000BOUTDX,AL;方式0,二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)初值

MOVDX,311HMOVAX,60000OUTDX,ALMOVAL,AHOUTDX,AL06二月2024

例題:已知8254定時(shí)計(jì)數(shù)器的端口地址為310H~313H,現(xiàn)要求輸出以下波形:計(jì)數(shù)器0每10ms輸出一個(gè)CLK脈沖寬度的負(fù)脈沖;用計(jì)數(shù)器2輸出1Hz的連續(xù)方波信號(hào)。已知輸入8254的時(shí)鐘頻率為2MHz。畫出電路連接圖,并編寫初始化程序。

分析:按照輸出波形的要求,計(jì)數(shù)器0應(yīng)設(shè)置為工作方式2,計(jì)數(shù)器2設(shè)置為工作方式3。已知8254的時(shí)鐘頻率為2MHz,其周期TCLK=1/2*106=0.5μs,則:

計(jì)數(shù)器0的計(jì)數(shù)初值:CNT0=10ms/0.5μs=20000

計(jì)數(shù)器2的計(jì)數(shù)初值:CNT2=2×106/1=2000000>65536

在這種情況下,可將兩個(gè)計(jì)數(shù)通道串聯(lián)起來分別進(jìn)行分頻,即計(jì)數(shù)器1的分頻值設(shè)為2000、計(jì)數(shù)器2的分頻值為1000,電路連接圖如下圖所示。06二月202406二月2024MOVDX,313H;計(jì)數(shù)器0初始化

MOVAL,00110100BOUTDX,AL;方式2,二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)初值

MOVDX,310HMOVAX,20000;計(jì)數(shù)初值

OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;計(jì)數(shù)器1初始化

MOVAL,01110110BOUTDX,AL;方式3,二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)初值

MOVDX,311HMOVAX,2000;計(jì)數(shù)初值

OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,313H;計(jì)數(shù)器2初始化

MOVAL,10110110BOUTDX,AL;方式3,二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)初值

MOVDX,312HMOVAX,1000;計(jì)數(shù)初值

OUTDX,ALMOVAL,AHOUTDX,AL06二月202406二月202406二月2024(例7-6)計(jì)件系統(tǒng)。計(jì)件系統(tǒng)的功能就是記錄脈沖的個(gè)數(shù)。一個(gè)脈沖代表一個(gè)事件,如交通道路檢測系統(tǒng)中通過檢測點(diǎn)的車輛,工業(yè)控制系統(tǒng)中流水線上加工好的工件。要求在計(jì)件過程中,計(jì)算機(jī)可以顯示當(dāng)前計(jì)數(shù)器的內(nèi)容,當(dāng)完成10000個(gè)工件記錄后,系統(tǒng)發(fā)1KHz信號(hào)推動(dòng)喇叭發(fā)音,通知用戶。這是一個(gè)典型的8253作為計(jì)數(shù)器應(yīng)用的例子。這里顯然需要兩個(gè)通道,一個(gè)作為計(jì)數(shù),選用通道0;另一個(gè)產(chǎn)生lkHz信號(hào),選用通道1。通道1的工作方式很容易確定,由于要產(chǎn)生lkHz信號(hào),故選用工作方式3。至于通道0的工作方式,稍微要復(fù)雜些。如果要求計(jì)數(shù)初值寫入計(jì)數(shù)通道后,計(jì)數(shù)器就可以工作,則通道0的啟動(dòng)方式應(yīng)是軟件啟動(dòng)。由于要求計(jì)數(shù)溢出后產(chǎn)生一個(gè)信號(hào)來啟動(dòng)一個(gè)事件,即喇叭發(fā)音,故可選的工作方式為方式0和方式4;為了簡化電路,采用如圖7.40所示方案。06二月2024

通道1的GATE信號(hào)由通道0的OUT信號(hào)產(chǎn)生,這個(gè)OUT信號(hào)應(yīng)該是電平型的,所以通道0應(yīng)選用方式0。

通道1的計(jì)數(shù)初值為:1MHz/1KHz=1000

通道0的計(jì)數(shù)初值為:10000設(shè)8253地址為300H~303H,程序如下:06二月2024MOVDX,303HMOVAL,01110110B;1#,方式3二進(jìn)制計(jì)數(shù)OUTDX,ALMOVDX,301HMOVAX,1000OUTDX,ALMOVAL,AHOUTDX,AL;1#初始化完畢

MOVDX,303HMOVAL,00110000B;0#,方式0二進(jìn)制計(jì)數(shù)

MOVDX,300HMOVAX,10000OUTDX,ALMOVAL,AHOUTDX,AL;0#初始化完畢GETDAT:CALLDELAY;延時(shí)

MOVDX,303HMOVAL,00000000B;鎖存計(jì)數(shù)器0OUTDX,ALMOVDX,300HINAL,DXMOVCL,ALINAL,DXMOVCH,ALCALLDISPLAY;計(jì)數(shù)值顯示

CMPCX,0JNZGETDAT…….;完成計(jì)數(shù)進(jìn)行其它處理06二月202406二月20249.3Intel8254-PIT簡介

Intel8254是Intel8253的改進(jìn)型,它們在操作方式及引腳排列上完全相同。相比8253,8254主要改進(jìn)的內(nèi)容是:

1.計(jì)數(shù)頻率高

8254的計(jì)數(shù)頻率可由直流至6MHz,8254-2可高達(dá)10MHz。而8253最高只能達(dá)到2.6MHz。06二月2024

2.有讀回命令(寫入至控制字寄存器)

如果控制字寄存器D7=1,D6=1,D0=0,即為8254的讀回命令,其格式如圖9.12所示。這個(gè)命令可以使三個(gè)計(jì)數(shù)器的計(jì)數(shù)值一次鎖存,而在8253則需要寫入三個(gè)命令。06二月2024圖9.128254的讀回命令06二月2024

另外,在8254中每個(gè)計(jì)數(shù)器都有一個(gè)狀態(tài)字,當(dāng)要讀取時(shí),也可由讀回命令進(jìn)行鎖存。其狀態(tài)狀態(tài)字的格式如圖9.13所示。圖9138254的狀態(tài)字格式06二月2024

其中,D0~D5與方式控制字對應(yīng)位的意義相同。即為寫入此計(jì)數(shù)器的控制字的相應(yīng)部分。D7表示OUT引腳的輸出狀態(tài)。D6表示計(jì)數(shù)初值是否已裝入減1計(jì)數(shù)器,D6=0表示已經(jīng)裝入,可以讀取計(jì)數(shù)器。06二月2024

脈沖量輸入通道中的主要功能部件是硬件計(jì)數(shù)器。圖2-44a、b分別給出了利用Intel8254所構(gòu)成的脈沖計(jì)數(shù)電路和脈沖間隔測量電路。前者能統(tǒng)計(jì)給定采樣時(shí)間Ts內(nèi)的輸入脈沖個(gè)數(shù);后者能把相鄰的兩個(gè)脈沖的間隔時(shí)間T測量出來。

在脈沖計(jì)數(shù)應(yīng)用

溫馨提示

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

評論

0/150

提交評論