版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工地鋼管租賃合同樣式
- 空調(diào)安裝的承包合同2024年
- 工程設(shè)計合同補充協(xié)議
- 工程建設(shè)貸款合同簽訂范本
- 足浴店承包權(quán)轉(zhuǎn)讓用于還債
- 專業(yè)建筑工程總承包合同案例
- 2024年勞動合同及聲明書
- 教師集體聘用合同書范本
- 合同增加補充協(xié)議范本
- 2024年公益服務(wù)協(xié)議書范本
- 低壓開關(guān)柜預(yù)防性試驗報告
- 蘇教版六年級下冊解決問題的策略第一課時教案
- 售樓部及樣板房裝飾裝修工程施工進(jìn)度計劃
- Alices--adventures-in-wonderland愛麗絲夢游仙境PPT課件
- 2021年四史學(xué)習(xí)教育PPT
- 財務(wù)共享服務(wù)中心在企業(yè)中的應(yīng)用分析——以國美電器集團(tuán)為例[精選]
- 幼兒園大班數(shù)學(xué)練習(xí)題(直接打印版)
- 查詢深溝球軸承尺寸和公差
- 關(guān)于柜面操作關(guān)鍵環(huán)節(jié)的風(fēng)險提示
- 抽油桿設(shè)計方法
- 工程送審結(jié)算模板(經(jīng)典實用)
評論
0/150
提交評論