計算機(jī)接口技術(shù) 第4章 定時器計數(shù)器接口電路_第1頁
計算機(jī)接口技術(shù) 第4章 定時器計數(shù)器接口電路_第2頁
計算機(jī)接口技術(shù) 第4章 定時器計數(shù)器接口電路_第3頁
計算機(jī)接口技術(shù) 第4章 定時器計數(shù)器接口電路_第4頁
計算機(jī)接口技術(shù) 第4章 定時器計數(shù)器接口電路_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

新k第4章定時器/計數(shù)器接口電路

第4章定時器/計數(shù)器接口電路

4.1基本概念

4.2可編程定時器/計數(shù)器

4.3ICH5中的定時器/計數(shù)器功能

4.4可編程定時器/計數(shù)器8253實驗

習(xí)題4

<Back4

第4章定時器/計數(shù)器接口電路

4.1基本概念

4.1.1定時與計數(shù)

在計算機(jī)系統(tǒng)以及控制系統(tǒng)中經(jīng)常需要進(jìn)行定時

操作。比如,定時進(jìn)行中斷、定時進(jìn)行數(shù)據(jù)采集或者

延遲一個固定的時間段進(jìn)行某種操作等。

定時與計數(shù)問題還可以建立起與頻率的關(guān)系,比

如每秒鐘進(jìn)行多少次數(shù)據(jù)采樣的工作,這樣便涉及到

采樣頻率的概念。

第4章定時器/計數(shù)器接口電路

4.1.2定時方法簡介

常用的實現(xiàn)定時、延時或計數(shù)的方法有三種:軟件

方法、硬件方法以及可編程硬件定時器/計數(shù)器方法。

軟件方法經(jīng)常通過編寫軟件延時程序,達(dá)到延時

的目的。這種方法不需要附加硬件設(shè)備,但是執(zhí)行軟

件延時程序要占用大量的CPU時間,因此降低了CPU

的利用率。

第4章定時器/計數(shù)器接口電路

在PC機(jī)中,常見的軟件延時子程序如下

DELAYPROC

LOP:MOVBX,10

MOVCX,2801

WAIT:LOOPWAIT

DECBX

JNZLOP

RET

DELAYENDP

該子程序通過多次重復(fù)執(zhí)行指令達(dá)到延時的目的。

力就第4章定時器/計數(shù)器接口電路_________________

硬件方法一般使用小規(guī)模集成電路和RC(電阻、電

容)電路來實現(xiàn)。

可編程硬件定時器/計數(shù)器在計算機(jī)系統(tǒng)和控制系

統(tǒng)中被廣泛采用。這種方法靈活方便,只要通過簡單

的程序設(shè)計就可以使定時器/計數(shù)器電路按定時或計數(shù)

的要求工作。

<Back4

第4章定時器/計數(shù)器接口電路

4.2可編程定時器/計數(shù)器

4.2.1Intel8253的功能與結(jié)構(gòu)

Intel8253是一種常用的可編程定時器/計數(shù)器接口芯

片。8253具有三個獨立的功能完全相同的16位減法計

數(shù)器,24腳DIP封裝,由單一的+5V電源供電。

第4章定時器/計數(shù)器接口電路

1.主要功能

(1)每片8253上有三個獨立的16位減法計數(shù)器,最大計數(shù)

范圍為0?65535o

(2)每個計數(shù)器都可按二進(jìn)制或二一十進(jìn)制計數(shù)。

(3)每個通道都有六種不同的工作方式。

(4)計數(shù)脈沖的頻率可達(dá)2MHzo

(5)輸入/輸出與TTL兼容。

第4章定時器/計數(shù)器接口電路

2.8253的內(nèi)部結(jié)構(gòu)

8253的內(nèi)部結(jié)構(gòu)如圖4-1所示。

濫缸第4章定時器/計數(shù)器接口電路

圖4-18253的內(nèi)部結(jié)構(gòu)

第4章定時器/計數(shù)器接口電路

1)數(shù)據(jù)總線緩沖器

數(shù)據(jù)總線緩沖器為8位雙向、三態(tài)緩沖器,經(jīng)數(shù)據(jù)

線D7?D??蛇B接到系統(tǒng)的數(shù)據(jù)總線。

2)讀/寫邏輯

8253讀/寫邏輯信號組合的功能以及各計數(shù)器通道、

控制字寄存器在PC機(jī)中的地址分配如表4-1所示。

新k第4章定時器/計數(shù)器接口電路

表4-18253讀/寫邏輯信號組合功能及地址分配

CSWRRDAiA)操作功能PC機(jī)口地址

00100計數(shù)初值寫入計數(shù)器040H

00101計數(shù)初值寫入計數(shù)器141H

0w0110計數(shù)初值寫入計數(shù)器242H

0011V1-寫控制字寄存器43H

010w0V0*讀計數(shù)器0當(dāng)前計數(shù)值40H

010w01讀計數(shù)器1當(dāng)前計數(shù)值41H

01010讀計數(shù)器2當(dāng)前計數(shù)值42H

第4章定時器/計數(shù)器接口電路

3)控制字寄存器

接收從CPU發(fā)來的控制字,控制字決定了8253的工

作方式、計數(shù)方式以及使用哪個計數(shù)器等??刂谱旨?/p>

存器只能寫入不能讀出。

4)計數(shù)器

8253內(nèi)部有三個計數(shù)器通道:計數(shù)器0、計數(shù)器1

和計數(shù)器2。各計數(shù)器獨立工作,都是16位計數(shù)器。每

個計數(shù)器有3條信號線:CLK、OUT和GATE。CLK為

時鐘信號輸入線,CLK信號可來自于系統(tǒng)內(nèi)部或系統(tǒng)

外部,計數(shù)操作實際就是計所輸入的CLK脈沖的個數(shù)。

新k第4章定時器/計數(shù)器接口電路

4.2.28253的才空制字

8253的控制字用于選擇哪個計數(shù)器通道工作,三

個通道可同時工作,但是要分別進(jìn)行初始化;用于規(guī)

定讀/寫操作格式或類型,8253可以有8位的計數(shù)值或

16位的計數(shù)值,可以按二進(jìn)制計數(shù)或按二一十進(jìn)制計

數(shù);用于選擇工作方式,8253共有六種工作方式。

8253是由主機(jī)編程設(shè)定的,通過把一個8位的控制字寫

入8253的控制字寄存器,使8253按照某種給定的方式

工作??刂谱值亩x如圖4-2所示。

第4章定時器/計數(shù)器接口電路

1BCD計數(shù)

0二進(jìn)制計數(shù)

ooo方0

oOr方1

H-

oo方2

o式3

式4

±1o。

式5

1ov

±H-

式2

1ro

±H-

式3

1rr

1H-H-

00計數(shù)器0

計數(shù)器選擇01計數(shù)器1

10計數(shù)器2

11無意義,不用

圖4-28253的控制字

第4章定時器/計數(shù)器接口電路

8253控制字各位的詳細(xì)意義如下:

D7>D6用于選擇工作的計數(shù)器。

D7D6=00:選擇計數(shù)器0工作;

D7D6=01:選擇計數(shù)器1工作;

D7D6=10:選擇計數(shù)器2工作;

D7D6=11:無效。

D5,D4規(guī)定讀/寫操作格式或類型。

新k第4章定時器/計數(shù)器接口電路

D5D4=OO:計數(shù)器鎖存命令,把寫本命令時的當(dāng)前計數(shù)值

鎖存,以便以后讀出;

D5D4=01:8位計數(shù),只寫低位字節(jié),高位字節(jié)自動為0;

口5口4=10:16位計數(shù),只寫高位字節(jié),低位字節(jié)自動為0;

口5口4=11:16位計數(shù),先寫低位字節(jié),后寫高位字節(jié)。

D3>D2>D]用于選擇工作方式。

口3口2口1=000:使計數(shù)器工作于方式0;

口3口2口]=001:使計數(shù)器工作于方式1;

?3口2口1=010:使計數(shù)器工作于方式2;

第4章定時器/計數(shù)器接口電路

口3口2口1=011:使計數(shù)器工作于方式3;

口3口2口1=100:使計數(shù)器工作于方式4;

口3口2口1=101:使計數(shù)器工作于方式5。

Do使計數(shù)器按二進(jìn)制計數(shù)或二一十進(jìn)制(BCD碼)計數(shù)o

Do=O:按二進(jìn)制計數(shù);

D0=l:按二一十進(jìn)制計數(shù)。

第4章定時器/計數(shù)器接口電路

4.2.38253的工作方式

8253中的三個計數(shù)器都可獨立工作,每個計數(shù)器都

有六種工作方式。工作方式由控制字設(shè)定,六種工作

方式輸出的不同波形都從OUT端獲得。門控信號GATE

對計數(shù)過程有影響。

1.方式0(計數(shù)到零可申請中斷)

方式0的工作波形如圖4-3所示。

濫缸第4章定時器/計數(shù)器接口電路

CW=10H

WR

GATE

OUT

42FE

圖4-3方式0工作時序

第4章定時器/計數(shù)器接口電路

在工作方式0中計數(shù)器開始計數(shù)后只計一次數(shù),計

數(shù)到0時,OUT保持高電平,只有重新寫入計數(shù)初值后,

才開始再計數(shù)。計數(shù)過程中,如果門控信號GATE=0,

則暫停計數(shù),GATE又變?yōu)楦唠娖胶蠼又嫈?shù),工作波

形見圖4-4。如果在計數(shù)過程中寫入新的計數(shù)值后,則

計數(shù)器將按新計數(shù)值重新開始計數(shù),工作波形見圖4-5。

濫缸第4章定時器/計數(shù)器接口電路

CW=10HLSB=4

圖4-4方式0GATE信號的作用

濫缸第4章定時器/計數(shù)器接口電路

--------------------------------------------------------1-----------1----------1-----------1----------1-----------1----------1----------1----------

GATEI..................................................................................

11111111

.1111111_?_______

OUT\11!!11/1

\1__1___1___1__1___1___11

4;3;2;3;2;l;0FF

圖4-5方式0計數(shù)過程改變計數(shù)初值

新k第4章定時器/計數(shù)器接口電路

設(shè)8253計數(shù)器0的端口地址為50H,采用8位計數(shù),

只寫低位字節(jié),二進(jìn)制計數(shù),對8253計數(shù)器0進(jìn)行設(shè)置,

使產(chǎn)生圖4-3中方式0的波形,程序如下:

MOVAL,10H;控制字

OUT53H,AL;寫入控制字寄存器

MOVAL,4;計數(shù)初值

OUT50H,AL;計數(shù)初值寫入計數(shù)器0

第4章定時器/計數(shù)器接口電路

2.方式1(可編程單拍脈沖)

方式1的工作波形如圖4-6所示。CPU寫入控制字

CW(CW=12H)后,OUT保持高電平,CPU寫入計數(shù)初

值(LSB=3)后,計數(shù)器并不立即開始計數(shù),直到門控

脈沖GATE啟動后的下一個CLK的下降沿才開始計數(shù)。

計數(shù)過程中OUT保持低電平,計數(shù)到零,OUT變?yōu)楦?/p>

電平。

濫缸第4章定時器/計數(shù)器接口電路

CW=12HLSB=3

WR

unJJJJJunLTJJJ-

GATEji幾

OUT__________/—L/L/

3210FFFE3210FF

圖4-6方式1工作時序

新k第4章定時器/計數(shù)器接口電路

設(shè)8253計數(shù)器0的端口地址為50H,采用8位計數(shù),只

寫低位字節(jié),二進(jìn)制計數(shù),對8253計數(shù)器0進(jìn)行設(shè)置,

使產(chǎn)生圖4-6中方式1的波形,程序如下:

MOVAL,12H;控制字

OUT53H,AL;寫入控制字寄存器

MOVAL,3;計數(shù)初值

OUT50H,AL;計數(shù)初值寫入計數(shù)器0

第4章定時器/計數(shù)器接口電路

3.方式2(N分頻器)

方式2的工作波形如圖4-7所示。CPU寫入控制字

CW(CW=14H)后,OUT輸出高電平,CPU寫入計數(shù)初

值(LSB=3)后,計數(shù)器開始計數(shù)。計數(shù)過程中,OUT

保持高電平,計數(shù)到1時OUT變?yōu)榈碗娖?,OUT的低電

平保持一個CLK周期后,OUT又變?yōu)楦唠娖?計數(shù)器又

重新開始計數(shù)。

濫缸第4章定時器/計數(shù)器接口電路

CW=14HLSB=3

WR

GATE

OUT

圖4-7方式2工作時序

第4章定時器/計數(shù)器接口電路

4.方式3(方波速率發(fā)生器)

方式3的工作波形如圖4-8所示。當(dāng)CPU寫入控制字

CW(CW=16H)后,OUT變?yōu)楦唠娖?,寫入計?shù)初值

(LSB=4)后,開始計數(shù)。在計數(shù)過程中,OUT保持高電

平;計數(shù)計到計數(shù)初值的一半值時,OUT變?yōu)榈碗娖剑?/p>

計數(shù)到0時,OUT又變?yōu)楦唠娖?,重新開始計數(shù)過程。

濫缸第4章定時器/計數(shù)器接口電路

CW=16HLSB=4

WR

CLKJWWWWWWWWL

圖4-8方式3工作時序

第4章定時器/計數(shù)器接口電路

5.方式4(軟件觸發(fā)選通)

方式4的工作波形如圖4-9所示。CPU寫入控制字

CW(CW=18H),OUT變?yōu)楦唠娖?,只要GATE保持高

電平,寫入計數(shù)初值(LSB=5)后,計數(shù)器就開始計數(shù),

這相當(dāng)于軟件觸發(fā)選通。計數(shù)到0,OUT變?yōu)榈碗娖剑?/p>

在OUT保持一個CLK周期的低電平后又變?yōu)楦唠娖剑?/p>

并停止計數(shù)。重新寫入計數(shù)初值才開始下一次計數(shù)過程。

濫缸第4章定時器/計數(shù)器接口電路

CW=18HLSB=5

WR

----------1-----------1----------1----------1----------1-----------1----------1----------1--------1-

GATE1-1----------1----------1----------1----------1----------1----------1--------1

111111111

1111______1[111______1

1111|\1/111

OUT/1111)\1/111

IIII?\___r???

54?321'0FFFE'FD

圖4-9方式4工作時序

新k第4章定時器/計數(shù)器接口電路

計數(shù)過程中,如果GATE=O,則停止計數(shù);GATE

=1,則允許計數(shù)。為保證實現(xiàn)軟件觸發(fā)選通,GATE

應(yīng)保持為高電平。計數(shù)過程中寫入新計數(shù)初值,相當(dāng)

于一個新的軟件觸發(fā)選通,按新計數(shù)初值計數(shù)。

第4章定時器/計數(shù)器接口電路

6.方式5(硬件觸發(fā)選通)

方式5的工作波形如圖4-10所示。CPU寫入控制字

CW(CW=1AH)后,OUT保持為高電平,CPU寫入計

數(shù)初值(LSB=3)后,計數(shù)器并不立即開始計數(shù),在門

控脈沖GATE啟動后的下一個CLK的下降沿才開始計數(shù)。

新k第4章定時器/計數(shù)器接口電路

若計數(shù)初值為N,經(jīng)門控脈沖觸發(fā),過N+1個CLK

后才輸出一個負(fù)脈沖。在計數(shù)過程中有新GATE觸發(fā),

計數(shù)器重新開始計數(shù)。在計數(shù)過程中,寫入新的計數(shù)

初值,只有在有GATE脈沖觸發(fā)時才按新值開始計數(shù)。

濫缸第4章定時器/計數(shù)器接口電路

CW=1AHLSB=3

sK_n_n_n_嘰嘰n_n_嘰嘰n_

圖4-10方式5工作時序

第4章定時器/計數(shù)器接口電路

7.六種工作方式小結(jié)

上面已經(jīng)分別介紹了Intel8253可編程定時器/計數(shù)器

接口芯片的六種工作方式,下面再對它們的共同點和不

同點進(jìn)行簡單總結(jié)。

1)OUT的輸出波形

在六種工作方式中,只有方式0在寫入控制字后,

OUT輸出為低電平,其他五種方式OUT輸出都為高電平。

方式2、方式4和方式5都是輸出寬度為一個CLK周期的

負(fù)脈沖,輸出波形都相同,但方式2是連續(xù)工作的,方

式4是由軟件觸發(fā)的,方式5是由硬件門控脈沖觸發(fā)的。

計數(shù)初值N與輸出波形的關(guān)系見表4-2。

新k第4章定時器/計數(shù)器接口電路

表4-2計數(shù)初值N與輸出波形的關(guān)系

方式計數(shù)初值N與輸出波形的關(guān)系:

0寫入N后,經(jīng)N+1個CLK,OUT變?yōu)楦唠娖?/p>

1單掃肱迎的寬度為N念~CLK脈沖的寬度

2每N公CLK,輸出一個寬度為CLK周期的脈沖

寫入N后,若N為偶數(shù),則煎N/2個CLK期間OUT為高電平,后N/2個CLK期間OUT

3為低電平;若N為奇數(shù),則煎(N+l)/2個CLK期間OUT為高電平,后個CLK

期間OUT為低電平

4寫入N后傲件觸發(fā)),經(jīng)過N+1個CLK后,輸出寬度為1個CLK的負(fù)脈沖

5門控脈沖觸發(fā)后,經(jīng)過N+1念“CLK后,輸出寬度為1個CLK的負(fù)脈沖

第4章定時器/計數(shù)器接口電路

2)門控信號GATE的作用

一般情況下,GATE信號為低電平時禁止計數(shù),為

高電平時允許計數(shù),方式1和方式5則需要有由低變高

的上升沿觸發(fā)脈沖來啟動計數(shù)。GATE信號對各種工作

方式的影響如表4.3所示。

第4章定時器/計數(shù)器接口電路

表4-3GATE信號作用

GATE

方式

高低或變低上升沿

0允許計數(shù)禁止計數(shù)—

1——啟動計數(shù),下一個CLK脈沖使輸出為低

2允許計數(shù)禁止計數(shù)重新裝入計數(shù)初值,啟動計數(shù)

3允許計數(shù)禁止計數(shù),立即使輸出為高重新裝入計數(shù)初值,啟動計數(shù)

4允許計數(shù)禁止計數(shù)—

5——啟動計數(shù),從初值開始計數(shù)

第4章定時器/計數(shù)器接口電路

3)計數(shù)初值的設(shè)置

任何一種工作方式,只有在寫入計數(shù)初值后才能

開始計數(shù)。門控信號GATE保持為高電平,方式0、方

式2、方式3和方式4在寫入計數(shù)初值后,計數(shù)過程就開

始了;而方式1和方式5需要有外部GATE觸發(fā),才能開

始計數(shù)。

新k第4章定時器/計數(shù)器接口電路

4)計數(shù)過程中改變計數(shù)值的影響

8253在計數(shù)過程中寫入新的計數(shù)初值,對計數(shù)過程

的影響見表4-4。

定時器/計數(shù)器接口電路

表4-4計數(shù)過程中改變計數(shù)值的影響

方式寫入新的計數(shù)值

0立即有效

1外部GA1E觸發(fā)后有效

2計數(shù)到1后有效

3計數(shù)到0后有效或外部GAIE觸發(fā)后有效

4立即有效

5外部GATE觸發(fā)后有效

力就第4章定時器/計數(shù)器接口電路_________________

4.2.48253的編程

8253沒有復(fù)位信號,加電開機(jī)后,其工作方式是不

確定的。

1.8253的初始化編程

8253的初始化編程包括寫入控制字和寫入計數(shù)初值。

完成8253的初始化設(shè)置以后,只要門控信號GATE處于

正確的狀態(tài),8253就可以工作了。

D7D6D5D4D3D2RD°

選擇計數(shù)器讀寫類型選擇工作方式數(shù)制

第4章定時器/計數(shù)器接口電路

通過設(shè)置控制字,可以規(guī)定使用哪一個計數(shù)器;規(guī)

定讀寫類型,采用8位計數(shù)還是16位計數(shù);選擇六種工

作方式中的哪一種方式等;數(shù)制如果選擇二進(jìn)制,則

計數(shù)值的范圍是0H?OFFFFH,如果選擇二一十進(jìn)制或

者說BCD碼計數(shù),則計數(shù)值的范圍是0-9999。

例4.1設(shè)8253的端口地址為50H?53H,使用計數(shù)

器1,工作于方式3,二進(jìn)制計數(shù),計數(shù)初值為3000H,

請編寫初始化程序。

新k第4章定時器/計數(shù)器接口電路

解(1)16位計數(shù),先寫低8位,后寫高8位。

MOVAL,76H;控制字01110110B

OUT53H,AL;控制字寫入控制字寄存器

MOVAL,OOH;計數(shù)初值低8位

OUT51H,AL;計數(shù)初值低8位寫入計數(shù)器1

MOVAL,30H;計數(shù)初值高8位

OUT51H,AL;計數(shù)初值高8位寫入計數(shù)器1

第4章定時器/計數(shù)器接口電路

(2)16位計數(shù),只寫高8位,低8位自動為0。

MOVAL,66H;控制字01100110B

OUT53H,AL;控制字寫入控制字寄存器

MOVAL,30H;計數(shù)初值高8位

OUT51H,AL;計數(shù)初值高8位寫入計數(shù)器1

解法(1)和解法(2)效果相同。

新k第4章定時器/計數(shù)器接口電路

例4.2設(shè)8253的端口地址為5F0H?5F3H,使用計

數(shù)器0,工作于方式4,二進(jìn)制計數(shù);使用計數(shù)器2,工

作于方式5,二—十進(jìn)制計數(shù)。計數(shù)器0和計數(shù)器2的計

數(shù)初值都等于十進(jìn)制數(shù)值512,請編寫初始化程序。

新k第4章定時器/計數(shù)器接口電路

解MOVAL,38H;控制字00111000B

MOVDX,5F3H;控制字寄存器端口地址

OUTDX,AL;控制字寫入控制字寄存器

MOVDX,5F0H;計數(shù)器0端口地址

MOVAL,00H;計數(shù)初值低8位

OUTDX,AL;計數(shù)初值低8位寫入計數(shù)器0

MOVAL,02H;計數(shù)初值高8位

新k第4章定時器/計數(shù)器接口電路

OUTDX,AL;計數(shù)初值高8位寫入計數(shù)器0

MOVAL,OBBH;控制字10111011B

MOVDX,5F3H;控制字寄存器端口地址

OUTDX,AL;控制字寫入控制字寄存器

MOVDX,5F2H;計數(shù)器2端口地址

MOVAL,12H;計數(shù)初值低8位

OUTDX,AL;計數(shù)初值低8位寫入計數(shù)器2

MOVAL,05H;計數(shù)初值高8位

OUTDX,AL;計數(shù)初值高8位寫入計數(shù)器2

第4章定時器/計數(shù)器接口電路

2.8253當(dāng)前計數(shù)值的讀取

有時因為某種特殊要求,需要讀取8253的當(dāng)前計

數(shù)值。為了讀取穩(wěn)定的計數(shù)值,可以設(shè)置門控信號

GATE或時鐘信號CLK使計數(shù)器暫停計數(shù),然后讀取

8253的當(dāng)前計數(shù)值。

另一種方法是使用計數(shù)器鎖存命令(設(shè)置控制字的

D5D4位=00),把當(dāng)前計數(shù)器值鎖存到8253內(nèi)部的專

用寄存器中,然后再讀取8253的當(dāng)前計數(shù)值。下面給

出具體的例子。

新k第4章定時器/計數(shù)器接口電路

例4.3設(shè)8253的端口地址為5F0H?5F3H,請編寫程序讀

取計數(shù)器2的當(dāng)前計數(shù)值。

MOVAL,80H;計數(shù)器2的鎖存命令

MOVDX,5F3H;控制字寄存器端口地址

OUTDX,AL;計數(shù)器2的鎖存命令寫入控

制字寄存器

MOVDX,5F2H;計數(shù)器2端口地址

INDX,AL;讀取計數(shù)初值低8位

MOVBL,AL;計數(shù)初值低8位存入BL

INDX,AL;讀取計數(shù)初值高8位

MOVBH,AL;計數(shù)初值高8位存入BH

第4章定時器/計數(shù)器接口電路

4.2.58253的應(yīng)用

1.應(yīng)用舉例

例4.4設(shè)定時器/計數(shù)器8253的計數(shù)器2的端口地址

為42H,控制字寄存器的端口地址為43H,DATE2保持

高電平,CLK2端輸入的時鐘頻率為100kHz,要求

OUT2端輸出波形的頻率為10kHz,且輸出波形中高電

平的占空度與低電平的占空度之比為9:lo

第4章定時器/計數(shù)器接口電路

解控制字的設(shè)定中使用十進(jìn)制計數(shù),只寫低8位,

高8位自動為0,所以控制字為10010101B。實現(xiàn)的程序

如下:

MOVAL,95H;計數(shù)器1控制字

OUT43,AL;控制字寄存器

MOVDX,42H;計數(shù)器2

MOVAL,10;計數(shù)初值10

OUT42,AL

第4章定時器/計數(shù)器接口電路

例4.5設(shè)計算機(jī)系統(tǒng)中有一片8253,其中計數(shù)器0

已被系統(tǒng)占用,計數(shù)器1、計數(shù)器2可供用戶使用,所

有GATE都保持為高電平,已知要加在8253上的輸入時

鐘CLK的頻率為512kHz,若要使計數(shù)器2的OUT2產(chǎn)生

周期為1S的對稱方波,采用二—十進(jìn)制計數(shù),應(yīng)如何

使用8253芯片來實現(xiàn)。請畫出電路連接的簡單示意圖

并編寫程序。設(shè)8253的端口地址為4F0H?4F3H。

新k第4章定時器/計數(shù)器接口電路

分析:要使8253產(chǎn)生周期為1s的對稱方波,可使

8253的計數(shù)器通道工作于方式3。對于8253的每個計數(shù)

器通道有

FoulFcJn

式中,F(xiàn)°ut為計數(shù)器通道OUT端輸出波形的頻率,

Ek為計數(shù)器通道CLK輸入的頻率,n為計數(shù)初值。

TournXTclk

式中,丁而為計數(shù)器通道OUT端輸出波形的周期,

Tdk為計數(shù)器通道輸入的CLK的周期,n為計數(shù)初值。

第4章定時器/計數(shù)器接口電路

根據(jù)題目要求有

n=I^=TlltXFr1,=1X512000=512000

,I,CzLILLlx.

Aclk

8253有三個計數(shù)器通道,每個計數(shù)器通道計數(shù)值的范

圍是0?65535(二進(jìn)制計數(shù))或0?9999(二一十進(jìn)制計數(shù))。

如果實際需求超過計數(shù)器通道允許的最大計數(shù)值時,應(yīng)

如何進(jìn)行處理呢?

定時器/計數(shù)器接口電路

圖4-118253計數(shù)器通道的串聯(lián)使用

新k第4章定時器/計數(shù)器接口電路

解計數(shù)器通道串聯(lián)使用的簡圖如圖4-11所示,實現(xiàn)的程序

如下:

MOVDX,4F3H;控制字寄存器

MOVAL,77H;計數(shù)器1控制字

OUTDX,AL

MOVDX,4F1H;計數(shù)器1

MOVAL,0;計數(shù)初值1000

OUTDX,AL

新k第4章定時器/計數(shù)器接口電路

MOVAL,10H

OUTDX,AL

MOVDX,4F3H

MOVAL,B7H;計數(shù)器2控制字

OUTDX,AL

MOVDX,4F2H;計數(shù)器2

MOVAL,12H;計數(shù)初值512

OUTDX,AL

MOVAL,5H

OUTDX,AL

第4章定時器/計數(shù)器接口電路

例4.6設(shè)計算機(jī)系統(tǒng)中有一片8253,要求利用計數(shù)

器0每隔10ms從OUT。端輸出寬度為1個CLK的脈沖信

號。該脈沖信號作為計數(shù)器1的門控信號GATE],用于

觸發(fā)計數(shù)器1,使計數(shù)器1每隔10ms就在OUT1端產(chǎn)生

一個寬度為2ms的單拍脈沖。已知要加在8253上的輸

入時鐘CLK的頻率為1kHz,設(shè)8253的端口地址為

4F0H~4F3Ho請1H出電路的簡單不意圖并編寫程序。

第4章定時器/計數(shù)器接口電路

分析:要使計數(shù)器0每隔10ms從OUT。端連續(xù)輸出

寬度為1個CLK的脈沖信號,可以使計數(shù)器0工作于方

式2。計數(shù)器0輸出波形的周期T°ut=10ms=0.01s,所以

計數(shù)初值&(參照例4.5)可以根據(jù)下式計算:

T

&=-ToutXFclk=0.01X1000=10

1elk

新k第4章定時器/計數(shù)器接口電路

根據(jù)工作于方式2輸出波形可知,工作于方式2產(chǎn)

生的寬度為1個CLK的輸出脈沖信號是低電平,把它作

為計數(shù)器1的GATE信號時需要加上反向器電路。

第4章定時器/計數(shù)器接口電路

要求計數(shù)器1用GATE信號觸發(fā),計數(shù)器1只可能使

用工作方式1或方式5。由題目要求:使計數(shù)器1每隔10

ms就在OUT[端產(chǎn)生一個寬度為2ms的單拍脈沖,可使

計數(shù)器1工作于方式1,并且可知計數(shù)器1輸出波形的周

期T0ut=10ms。要使計數(shù)器1的OU.端產(chǎn)生的單拍脈沖

的寬度為2ms,計數(shù)初值叫可以根據(jù)下式計算:

第4章定時器/計數(shù)器接口電路

單拍脈沖的寬度=叫義輸入時鐘CLK的周期=

ni><Tdk=n]X(l/Fdk)

叫=單拍脈沖的寬度/輸入時鐘CLK的周期=

0.002/(1/1000)

%=2

注意這里的計數(shù)初值要根據(jù)單拍脈沖的寬度來計算。

第4章定時器/計數(shù)器接口電路

解按題目要求編寫的程序如下:

MOVDX,4F3H;控制字寄存器的端口地址

MOVAL,53H;計數(shù)器1控制字,BCD計數(shù)

OUTDX,AL

MOVDX,4F1H;計數(shù)器1的端口地址

MOVAL,2;計數(shù)初值

OUTDX,AL

MOVDX,4F3H

MOVAL,15H;計數(shù)器0控制字,BCD計數(shù)

第4章定時器/計數(shù)器接口電路

OUTDX,AL

MOVDX,4F0H;計數(shù)器0的端口地址

MOVAL,10H;計數(shù)初值10

OUTDX,AL

根據(jù)題目要求畫出8253的連接電路圖如圖4-12所示。

新k第4章定時器/計數(shù)器接口電路

圖4-12例4.6的8253連接電路圖

第4章定時器/計數(shù)器接口電路

例4.6的程序執(zhí)行時的時序圖如圖4-13所示。其中

GATE1是由OUT。經(jīng)過反向器后產(chǎn)生的波形。

第4章定時器/計數(shù)器接口電路

CWLSB

6

FPFKFF

oIT

圖4-13例4.6的8253計數(shù)器的時序圖

第4章定時器/計數(shù)器接口電路

2.8253在PC機(jī)中的應(yīng)用

IBMPC/XT機(jī)系統(tǒng)板上使用了一片8253,其連接

如圖4-14所示。三個計數(shù)器通道分別用于日時鐘計時、

動態(tài)RAM定時刷新和揚聲器發(fā)聲。

濫缸第4章定時器/計數(shù)器接口電路

P%PB]來自8255A

圖4-14PC/XT中的8253

第4章定時器/計數(shù)器接口電路

1)計數(shù)器0——日時鐘中斷請求

計數(shù)器0工作于方式3,門控信號線GATE接+5Vo

OUT。接到8259A的IRQ。,每隔55ms向8259A提出一次

作為XT機(jī)的日時鐘的中斷請求。計數(shù)初值為65536(實

際寫入值為0),因此輸出信號的頻率為1.19318

MHz/65536=18.206Hz,即每秒產(chǎn)生18.2次中斷請求。

初始化程序如下:

新k第4章定時器/計數(shù)器接口電路

MOVAL,36H

;控制字,計數(shù)器0,方式3,二進(jìn)制計數(shù),16位計數(shù)

OUT43H,AL;寫入控制字

MOVAL,0;計數(shù)初值65536

OUT40H,AL;寫入計數(shù)初值低8位

OUT40H,AL;寫入計數(shù)初值高8位

第4章定時器/計數(shù)器接口電路

2)計數(shù)器1-----定時DMA請求

計數(shù)器1工作于方式2,門控信號線GATE接+5Vo

OUT1連往DMA請求電路,每隔15.12然向DMA的0通

道請求一次DMA操作,作為動態(tài)內(nèi)存刷新的DMA請求

信號。初始化程序如下:

第4章定時器/計數(shù)器接口電路

MOVAL,54H

;計數(shù)器1,方式2,只寫低8位,二進(jìn)制計數(shù)

OUT43H,AL;寫入控制字

MOVAL,12H;計數(shù)初值

OUT41H,AL;寫入計數(shù)初值

第4章定時器/計數(shù)器接口電路

3)計數(shù)器2——發(fā)聲程序

計數(shù)器2的輸出送往揚聲器發(fā)聲電路。門控信號

GATE2接8255并行接口電路的PB。,因此計數(shù)器2的計

數(shù)過程將受到PB。的控制,而PB°又受I/O端口61H的D0

位的控制,當(dāng)PB°=1時,OUT2才能輸出方波。OUT2和

PB]經(jīng)過一個與門接至揚聲器驅(qū)動電路。因此OUT?也

將受到PB】的控制,而PB】又受I/O端口61H的D1位的控

制。ROM-BIOS中的發(fā)聲子程序BEEP使計數(shù)器2工作

于方式3,產(chǎn)生約為1kHz的方波,程序如下:

高丫第4章定時器/計數(shù)器接口電路

BEEPPROC

MOVAL,10110110B

;計數(shù)器2,方式3,16位計數(shù),二進(jìn)制計數(shù)

OUT43H,AL;寫入控制字

MOVAX,0533H

;計數(shù)初值為0533H=1331(1.19318MHz/1331=896Hz)

OUT42H,AL;寫入計數(shù)初值低8位

MOVAL,AH

OUT42H,AL;寫入計數(shù)初值高8位

INAL,61H;讀8255端口B的原值

新k第4章定時器/計數(shù)器接口電路

MOVAH,AL;暫存AH

ORAL,03H;使PB°=1、PB[=1

OUT61H,AL;輸出,使揚聲器發(fā)聲

SUBCX,CX

LOP:LOOPLOP;延時

DECBL;BL值由入口參數(shù)提供,決定發(fā)聲長短

JNZLOP;BL=6發(fā)長聲,BL=1發(fā)短聲

第4章定時器/計數(shù)器接口電路

MOVAL,AH

OUT61H,AL

;恢復(fù)8255端口B的原值,停止發(fā)聲

RET;返回

BEEPENDP

新k第4章定時器/計數(shù)器接口電路

例4.7利用PC機(jī)中的8253的計數(shù)器2連續(xù)發(fā)出26個

頻率不同的聲音。要求第一個發(fā)出聲音的頻率為896

Hz,其后發(fā)出聲音的頻率逐次降低,使最后一個發(fā)出

聲音的頻率約為407Hzo

第4章定時器/計數(shù)器接口電路

解要使8253發(fā)出聲音的頻率為896Hz,計數(shù)初值

應(yīng)為1331(見例4.6)。要使8253發(fā)出聲音的頻率逐次降

低,只要逐次增大8253的計數(shù)初值即可。程序中每次

循環(huán)使計數(shù)初值都增加64,最后一次發(fā)出聲音時的計

數(shù)初值為初31+(25X64)=2931,聲音頻率為1.19318

MHz/2931=407Hz。程序如下:

濫缸第4章定時器/計數(shù)器接口電路

CSEGSEGMENT

ASSUMECS:CSEG

GENSOUNDPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAL,0B6H;計數(shù)器2,方式3,16位計數(shù),二進(jìn)制計數(shù)

OUT43H,AL

MOVDX,26

MOVAX,1331;計數(shù)初值為1331(1.19318MHz/1331=896

Hz)

濫缸第4章定時器/計數(shù)器接口電路

AGAIN:PUSHAX

OUT42H,AL;寫入計數(shù)初值低8位

MOVAL,AH

OUT42H,AL;寫入計數(shù)初值高8位

INAL,61H

MOVAH,AL

ORAL,3

OUT61H,AL;輸出,使揚聲器發(fā)聲

MOVBX,0FFFFH

新k第4章定時器/計數(shù)器接口電路

WAIT1:MOVCX,2801

DELAY:LOOPDELAY;延時

DECBX

JNZWAIT1

MOVAL,AH

OUT61H,AL

POPAX

ADDAX,64;使計數(shù)初值加64

DECDX

力就第4章定時器/計數(shù)器接口電路_________________

JNZAGAIN;判斷循環(huán)是否結(jié)束

RET

GENSOUNDENDP

CSEGENDS

ENDGENSOUND

力就第4章定時器/計數(shù)器接口電路_________________

3.用8253演奏簡單樂曲

利用PC機(jī)中的定時器/計數(shù)器電路8253可以使揚聲器

發(fā)聲并且還可以用來演奏簡單的樂曲。

1)聲音的產(chǎn)生

在PC機(jī)中產(chǎn)生聲音可以通過使用8253的計數(shù)器2,

工作于方式3來實現(xiàn)。設(shè)置控制字的指令為

MOVAL,0B6H

;計數(shù)器2,方式3,16位計數(shù),二進(jìn)制計數(shù)

OUT43H,AL

新k第4章定時器/計數(shù)器接口電路

設(shè)置好控制字后要根據(jù)聲音的頻率對計數(shù)器2(也就

是42H端口),設(shè)定對應(yīng)的計數(shù)初值。指令如下:

MOVAL,計數(shù)初值低8位

OUT42H,AL

MOVAL,計數(shù)初值高8位

OUT42H,AL

新k第4章定時器/計數(shù)器接口電路

然后通過設(shè)定PC機(jī)中的并行接口電路8255的PB。、

PBr打開揚聲器的門電路,就可以發(fā)出該頻率的聲音

了。實現(xiàn)該功能的指令如下:

INAL,61H;讀取8255端口B的值

MOVAH,AL;暫存AH

ORAL,03H;使PBO=1、PB1=1

OUT61H,AL;輸出,使揚聲器發(fā)聲

第4章定時器/計數(shù)器接口電路

2)音符與頻率

在音樂中聲音的頻率就是音高。圖4-15中畫出了部

分鋼琴鍵盤,圖中C、D、E等是音符的音名,數(shù)字表

示樂音的頻率,單位為Hz。

不包括鋼琴鍵盤的黑鍵,用簡^表示的C大調(diào)音符

與頻率近似值的對應(yīng)關(guān)系如下:

音符123456712345671

頻率131147165175196220247262294330

349392440494523

力就第4章定時器/計數(shù)器接口電路_________________

8253計數(shù)器的計數(shù)初值與發(fā)出聲音的頻率之間的關(guān)

系如下式所示:

計數(shù)初值=時鐘頻率

發(fā)出聲音的頻率

第4章定時器/計數(shù)器接口電路

如果提供給8253計數(shù)器2的CLK的時鐘頻率為1193

180Hz,即1234DCH,并把要求發(fā)出的聲音的頻率值

放入DI中,使AX獲得對應(yīng)的計數(shù)初值的指令為

MOVDX,12H

MOVAX,34DCH

DIVDI

上述指令執(zhí)行后計數(shù)初值在AX中,然后可以分別按

低字節(jié)和高字節(jié)輸出至42H端口,使計數(shù)器產(chǎn)生所需頻

率的聲音(音符)。在實際應(yīng)用中,計數(shù)初值要根據(jù)實際

系統(tǒng)中的時鐘頻率來計算。

第4章定時器/計數(shù)器接口電路

(中音)

圖4-15鋼琴鍵盤音符與頻率的關(guān)系

第4章定時器/計數(shù)器接口電路

3)延時程序及其作用

當(dāng)時鐘為1193180Hz時,延時10ms可用如下延時

程序?qū)崿F(xiàn):

DELAY:MOVCX,2801

LOPIO:LOOPLOP10

如果實際應(yīng)用環(huán)境中的時鐘頻率較高,則應(yīng)重新計

算并設(shè)置延時時間。

濫缸第4章定時器/計數(shù)器接口電路

例4.8利用PC機(jī)中的8253的計數(shù)器2,演奏“音樂

之聲”中的樂曲《孤獨的牧羊人》中的一部分。要演

奏的部分曲譜如下:

圖4-16《孤獨的牧羊人》部分曲譜

第4章定時器/計數(shù)器接口電路

解編寫演奏樂曲《孤獨的牧羊人》,需要把與音

符所對應(yīng)的頻率放在FREQ表中,把與音符所對應(yīng)的節(jié)

拍(延時次數(shù)值)放在TIME表中。然后由主程序控制,

逐一按音符的頻率和節(jié)拍值,使揚聲器發(fā)出聲音。當(dāng)

與音符對應(yīng)的頻率值為0時,停止演奏。

新k第4章定時器/計數(shù)器接口電路

子程序PLAY的功能是使揚聲器發(fā)出聲音,演奏樂曲。

由DI指定音符的頻率,BX指定與音符對應(yīng)的節(jié)拍。SI

指向頻率表FREQ,BP指向節(jié)拍表TIME。頻率表以0結(jié)

尾,用于作為程序結(jié)束的條件:如果取來的頻率值為0,

則程序結(jié)束。

高丫第4章定時器/計數(shù)器接口電路

DATASEGMENT

FREQDW196,392,392,392,196,196

DW196,349,349,330

DW2DUP(196,392,196,196)

DW196,440,392,0;與音符對應(yīng)的頻率表

TIMEDW25,12,12,25,12,12

DW4DUP(25)

DW8DUP(12)

DW25,25,50;與音符對應(yīng)的節(jié)拍表

新k第4章定時器/計數(shù)器接口電路

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

LEASI,FREQ

LEABP,TIME

第4章定時器/計數(shù)器接口電路

LOP:MOVDI,[SI];取頻率值

CMPDI,0

JZEXIT;若取來的頻率值為0,則轉(zhuǎn)程序退出

MOVBX,DS:[BP];取節(jié)拍值

CALLPLAY

INCSI

INCSI

INCBP

INCBP

JMPLOP

第4章定時器/計數(shù)器接口電路

EXIT:MOVAH,4CH

INT21H

PLAYPROC

PUSHAX

PUSHBX

PUSHCX

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論