![微機(jī)原理及應(yīng)用 課件 第8章 計(jì)數(shù)器定時(shí)器與DMA控制器_第1頁(yè)](http://file4.renrendoc.com/view3/M00/17/30/wKhkFmajWkGANW4sAACKojsIkVU078.jpg)
![微機(jī)原理及應(yīng)用 課件 第8章 計(jì)數(shù)器定時(shí)器與DMA控制器_第2頁(yè)](http://file4.renrendoc.com/view3/M00/17/30/wKhkFmajWkGANW4sAACKojsIkVU0782.jpg)
![微機(jī)原理及應(yīng)用 課件 第8章 計(jì)數(shù)器定時(shí)器與DMA控制器_第3頁(yè)](http://file4.renrendoc.com/view3/M00/17/30/wKhkFmajWkGANW4sAACKojsIkVU0783.jpg)
![微機(jī)原理及應(yīng)用 課件 第8章 計(jì)數(shù)器定時(shí)器與DMA控制器_第4頁(yè)](http://file4.renrendoc.com/view3/M00/17/30/wKhkFmajWkGANW4sAACKojsIkVU0784.jpg)
![微機(jī)原理及應(yīng)用 課件 第8章 計(jì)數(shù)器定時(shí)器與DMA控制器_第5頁(yè)](http://file4.renrendoc.com/view3/M00/17/30/wKhkFmajWkGANW4sAACKojsIkVU0785.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理及應(yīng)用
第8章
計(jì)數(shù)器/定時(shí)器與DMA控制器
一、了解常見接口芯片8253、8237的內(nèi)部結(jié)構(gòu)二、掌握上述芯片的工作原理三、理解8253等芯片在微機(jī)系統(tǒng)中的應(yīng)用。學(xué)習(xí)目標(biāo):8.1可編程定時(shí)器/計(jì)數(shù)器8253返回
一、8253的功能與結(jié)構(gòu)二、8253的控制字三、8253工作方式與工作時(shí)序四、8253的初始化編程及應(yīng)用【知識(shí)點(diǎn)】:
一、8253的功能與結(jié)構(gòu)
(1)每片有三個(gè)獨(dú)立的16位計(jì)數(shù)器通道,稱為通道0~通道2;(2)每個(gè)計(jì)數(shù)器都可以按照二進(jìn)制或十進(jìn)制計(jì)數(shù);(3)每個(gè)計(jì)數(shù)器的最高計(jì)數(shù)速率可達(dá)2.6MHZ;(4)每個(gè)計(jì)數(shù)器具有6種可編程工作方式;(5)所有輸入、輸出都與TTL電平兼容,便于與外界接口電路相連。1.8253主要功能:
8253的內(nèi)部結(jié)構(gòu)如圖:它主要包括以下幾個(gè)主要部分:(1)數(shù)據(jù)總線緩沖器
數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,主要用于8253與CPU之間進(jìn)行數(shù)據(jù)傳輸。該數(shù)據(jù)包括8253控制字、計(jì)數(shù)器計(jì)算初值及計(jì)數(shù)器當(dāng)前計(jì)數(shù)值三個(gè)部分。2.8253的內(nèi)部結(jié)構(gòu)2.8253的內(nèi)部結(jié)構(gòu)(2)讀/寫控制邏輯
讀/寫控制邏輯電路接受輸入到8253的
、
、
A1、A0
信號(hào),經(jīng)過邏輯控制電路的組合產(chǎn)生相應(yīng)操作,具體操作如下圖所示:A1A0執(zhí)行的操作01000對(duì)計(jì)數(shù)器0設(shè)置初值01001對(duì)計(jì)數(shù)器1設(shè)置初值01010對(duì)計(jì)數(shù)器2設(shè)置初值01011寫控制字00100讀計(jì)數(shù)器0當(dāng)前計(jì)數(shù)值00101讀計(jì)數(shù)器1當(dāng)前計(jì)數(shù)值00110讀計(jì)數(shù)器2當(dāng)前計(jì)數(shù)值00111無(wú)操作(3態(tài))1××××禁止(3態(tài))011××無(wú)操作(3態(tài))2.8253的內(nèi)部結(jié)構(gòu)(3)控制寄存器
接收CPU對(duì)8253的初始化控制字。對(duì)控制字寄存器只能寫入不能讀出。(4)三個(gè)計(jì)數(shù)器
每個(gè)計(jì)數(shù)器內(nèi)部都包含一個(gè)16位的計(jì)數(shù)初值寄存器、一個(gè)16位的減法計(jì)數(shù)寄存器和一個(gè)16位的當(dāng)前計(jì)數(shù)輸出寄存器。當(dāng)前計(jì)數(shù)輸出寄存器跟隨減法計(jì)數(shù)寄存器內(nèi)容變化,當(dāng)有一個(gè)鎖存器命令出現(xiàn)后,當(dāng)前計(jì)數(shù)輸出寄存器鎖定當(dāng)前計(jì)數(shù),直到被CPU讀走之后,又隨減法計(jì)數(shù)寄存器的變化而變化。
8253芯片是具有24個(gè)引腳的雙列直插式集成電路芯片,其引腳分布如圖所示:
每個(gè)引腳的功能定義如下:(1)D7~D0:雙向、三態(tài)數(shù)據(jù)線引腳;3.8253的引腳3.8253的引腳
(2)
:輸入引腳,讀信號(hào),低電平有效,有效時(shí)表示正在讀取某個(gè)計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。
(3):輸入引腳,讀信號(hào),低電平有效,有效時(shí)表示正對(duì)某個(gè)計(jì)數(shù)器寫入計(jì)數(shù)初值或?qū)懭肟刂谱帧?4):輸入引腳,片選信號(hào),低電平有效,CPU通過該信號(hào)有效選中8253,對(duì)其進(jìn)行讀寫操作。(5)A1、A0:輸入引腳,8253端口選擇線,可對(duì)三個(gè)計(jì)數(shù)器和控制寄存器尋址。
GATE:門控信號(hào),用于控制計(jì)數(shù)的進(jìn)行。多數(shù)情況下,GATE=1時(shí),允許計(jì)數(shù),GATE=0時(shí),中止計(jì)數(shù)。用一句話來說,GATE信號(hào)的作用是用來禁止、允許或開始計(jì)數(shù)過程。
CLK:時(shí)鐘信號(hào)。作用是:在8253進(jìn)行定時(shí)或計(jì)數(shù)工作時(shí),每輸入一個(gè)時(shí)鐘信號(hào),便使定時(shí)計(jì)數(shù)值減1。
OUT:OUT是8253向外輸出的信號(hào)。它的作用是:計(jì)數(shù)器工作時(shí),當(dāng)定時(shí)/計(jì)數(shù)值減為0時(shí),即在OUT線上輸出一個(gè)OUT信號(hào),用以指示定時(shí)或計(jì)數(shù)已到。
二、
8253的控制字8253是一個(gè)可編程的芯片,有一個(gè)8位的控制字寄存器,在初始化編程時(shí),由CPU向8253的控制字寄存器寫入一個(gè)控制字,用來選擇計(jì)數(shù)器,設(shè)置工作方式、計(jì)算方法以及CPU訪問計(jì)算器的讀/寫方法等。8253控制字的格式如圖所示。
其中:D7、D6用于選擇定時(shí)器;D5、D4用于確定時(shí)間常數(shù)的讀/寫格式;D3、D2、D1用來設(shè)定計(jì)數(shù)器的工作方式;D0用來設(shè)定計(jì)數(shù)方式.1.8253控制字格式:2.8253初始化編程原則
8253是一可編程的芯片,在使用之前必須對(duì)它進(jìn)行編程。
初始化編程的步驟為:(1)寫入每一通道控制字,規(guī)定各通道的工作方式;(2)寫入每一通道的計(jì)數(shù)值,分三種情況:
Ⅰ:只寫低8位,則高8位自動(dòng)置0;――對(duì)應(yīng)8位計(jì)數(shù)
Ⅱ:只寫高8位,則低8位自動(dòng)置0;――對(duì)應(yīng)16位計(jì)數(shù)
Ⅲ:規(guī)定為16位計(jì)數(shù),先寫低8位,后寫高8位。――對(duì)應(yīng)16位計(jì)數(shù)D0:用于確定計(jì)數(shù)數(shù)制,0,二進(jìn)制;1,BCD例題賞析
【例題8.1】:設(shè)8253的端口地址為:04H~07H,要使計(jì)數(shù)器1工作在方式0,僅用8位二進(jìn)制計(jì)數(shù),計(jì)數(shù)值為128,進(jìn)行初始化編程。
控制字:0101
0000――二進(jìn)制50H
初始化編程:MOVAL,50H;0101
0000BOUT07H,ALMOVAL,80HOUT05H,AL例題賞析
【例題8.2】:
設(shè)8253的端口地址為:F8H~FBH,若用通道0工作在方式1,按二――十進(jìn)制計(jì)數(shù),計(jì)數(shù)值為5080H,進(jìn)行初始化編程??刂谱郑?011
0011――二進(jìn)制33H初始化編程:MOVAL,33H;0011
0011BOUT0FBH,ALMOVAL,80HOUT0F8H,AL;先送低八位MOVAL,50HOUT0F8H,AL;再送高八位例題賞析【例題8.3】:
設(shè)8253的端口地址為:04H~07H,若用通道2工作在方式2,按二進(jìn)制計(jì)數(shù),計(jì)數(shù)值為02F0H,進(jìn)行初始化編程??刂谱郑撼跏蓟幊蹋篗OVAL,0B4H;1011
0100BOUT07H,ALMOVAL,0F0HOUT06H,AL;先送低八位MOVAL,02HOUT06H,AL;再送高八位1011
0100――二進(jìn)制0B4H三、8253工作方式與工作時(shí)序8253共有6種工作方式,對(duì)它們的操作遵守以下三條基本原則。(1)當(dāng)控制字寫入8253時(shí),所有的控制邏輯電路立即復(fù)位,輸出端OUT進(jìn)入初始狀態(tài)。(2)當(dāng)初始值寫入計(jì)數(shù)器后,要經(jīng)過一個(gè)時(shí)鐘周期,減法計(jì)數(shù)器才開始工作,時(shí)鐘脈沖的下降沿使計(jì)數(shù)器進(jìn)行減法操作。計(jì)數(shù)器的最大初始值是0,用二進(jìn)制計(jì)數(shù)時(shí)0相當(dāng)于216
,用十進(jìn)制計(jì)數(shù)時(shí)0相當(dāng)于104。(3)通常,在時(shí)鐘脈沖CLK的上升沿采樣門控信號(hào)GATE。門控信號(hào)的觸發(fā)方式有上升沿觸發(fā)和電平觸發(fā)兩種。
①門控信號(hào)為電平觸發(fā)的有:方式0、方式4。②門控信號(hào)為上升沿觸發(fā)的有:方式1、方式5。③門控信號(hào)可為電平觸發(fā)也可為上升沿觸發(fā)的有:方式2、方式3溫馨提示:采用這種工作方式,8253可完成計(jì)數(shù)功能,且計(jì)數(shù)器只計(jì)一遍。當(dāng)控制字寫入控制字寄存器后,輸出端OUT為低電平,當(dāng)計(jì)數(shù)初值寫入后,在下一個(gè)CLK脈沖的下降沿將計(jì)數(shù)初值寄存器內(nèi)容裝入減法計(jì)數(shù)寄存器,然后減法計(jì)數(shù)器開始減1計(jì)算。在計(jì)數(shù)過程中,OUT保持為低電平,當(dāng)計(jì)數(shù)到0后,OUT變高電平,可作為中斷請(qǐng)求信號(hào),并保持到重新寫入新的控制字或新的計(jì)數(shù)值為止。1.方式0(計(jì)數(shù)結(jié)束產(chǎn)生中斷)三、8253工作方式與工作時(shí)序1.方式0(計(jì)數(shù)結(jié)束產(chǎn)生中斷)
當(dāng)GATE=0時(shí),暫停計(jì)數(shù),減法計(jì)數(shù)寄存器值保持不變;當(dāng)GATE=1時(shí),繼續(xù)計(jì)數(shù)。
分成兩種情況:若是8位計(jì)數(shù),則寫入新值后的下一個(gè)脈沖按新值計(jì)數(shù);若是16位計(jì)數(shù),則在寫入第一個(gè)字節(jié)后,停止計(jì)數(shù),寫入第二個(gè)字節(jié)后的下一個(gè)脈沖按新值計(jì)數(shù)。方式0下波形如圖所示:①在計(jì)數(shù)過程中,可由GATE信號(hào)控制暫停:②在計(jì)數(shù)過程中可以改變計(jì)數(shù)值,且這種改變是立即有效的:例題賞析
【例題8.4】:
端口地址為:04H~07H,1#計(jì)數(shù)器,方式0,8位計(jì)數(shù),二進(jìn)制初值為:80H,進(jìn)行初始化編程。MOVAL,50H;0101
0000BOUT07H,ALMOVAL,80HOUT05H,AL
在這種方式下,在CPU向8253寫入控制字后OUT變高,并保持,寫入計(jì)數(shù)值后并不立即計(jì)數(shù),只有當(dāng)外界GATE信號(hào)啟動(dòng)后(一個(gè)正脈沖)的下一個(gè)脈沖才開始計(jì)數(shù),OUT變低,計(jì)數(shù)到0后,OUT才變高,此時(shí)再來一個(gè)GATE正脈沖,計(jì)數(shù)器又開始重新計(jì)數(shù),輸出OUT再次變低,…,因此輸出為一單拍負(fù)脈沖。方式1的波形見圖所示:2.方式1(可編程的硬件觸發(fā)單拍脈沖)2.方式1(可編程的硬件觸發(fā)單拍脈沖)
從波形圖中不難看出,工作方式1有如下特點(diǎn):①輸出OUT為寬度為計(jì)數(shù)初值的單脈沖;②輸出受門控信號(hào)GATE的控制,分三種情況:計(jì)數(shù)到0后,再來GATE脈沖,則重新開始計(jì)數(shù)OUT變低;在計(jì)數(shù)過程中來GATE脈沖,則從下一CLK脈沖開始重新計(jì)數(shù),OUT保持為低;改變計(jì)數(shù)值后,只有當(dāng)GATE脈沖啟動(dòng)后,才按新值計(jì)數(shù),否則原計(jì)數(shù)過程不受影響,仍繼續(xù)進(jìn)行,即新值的改變是從下一個(gè)GATE開始的。③計(jì)數(shù)值是多次有效的,每來一個(gè)GATE脈沖,就自動(dòng)裝入計(jì)數(shù)值開始從頭計(jì)數(shù),因此在初始化時(shí),計(jì)數(shù)值寫入一次即可。例題賞析
若要使計(jì)數(shù)器0工作在方式1,按BCD計(jì)數(shù),計(jì)數(shù)值為3000。則初始化程序段為:MOVAL,23H;設(shè)方式控制字OUT07H,AL;輸至控制字寄存器MOVAL,30H;設(shè)計(jì)數(shù)值OUT04H,AL;輸至計(jì)數(shù)器0的高8位【例題8.5】:3.方式2(速率發(fā)生器,分頻器)
在這種方式下,CPU輸出控制字后,輸出OUT就變高,寫入計(jì)數(shù)值后的下一個(gè)CLK脈沖開始計(jì)數(shù),計(jì)數(shù)到1后,輸出OUT變低,經(jīng)過一個(gè)CLK以后,OUT恢復(fù)為高,計(jì)數(shù)器重新開始計(jì)數(shù),…,因此在這種方式下,只需寫入一次計(jì)數(shù)值,就能連續(xù)工作,輸出連續(xù)相同間隔的負(fù)脈沖(前提:GATE保持為高),即周期性地輸出,設(shè)LSB=N,則每隔N個(gè)CLK輸出一個(gè)負(fù)脈沖(周期為N)。方式2的波形見圖所示:3.方式2(速率發(fā)生器,分頻器)
①通道可以連續(xù)工作;②GATE可以控制計(jì)數(shù)過程,當(dāng)GATE為低時(shí)暫停計(jì)數(shù),恢復(fù)為高后重新從初值;(注意:該方式與方式0不同,方式0是繼續(xù)計(jì)數(shù))③重新設(shè)置新的計(jì)數(shù)值即在計(jì)數(shù)過程中改變計(jì)數(shù)值,則新的計(jì)數(shù)值是下次有效的,同方式1。從波形圖中不難看出,工作方式2有如下特點(diǎn):
4.方式3(方波速率發(fā)生器)
這種方式下的輸出與方式2都是周期性的,不同的是周期不同,CPU寫入控制字后,輸出OUT變高,寫入計(jì)數(shù)值后開始計(jì)數(shù),不同的是減2計(jì)數(shù),當(dāng)計(jì)數(shù)到一半計(jì)數(shù)值時(shí),輸出變低,重新裝入計(jì)數(shù)值進(jìn)行減2計(jì)數(shù),當(dāng)計(jì)數(shù)到0時(shí),輸出變高,裝入計(jì)數(shù)值進(jìn)行減2計(jì)數(shù),循環(huán)不止。4.方式3(方波速率發(fā)生器)的工作方式
計(jì)數(shù)值為偶數(shù):計(jì)數(shù)值為奇數(shù):4.方式3(方波速率發(fā)生器)①通道可以連續(xù)工作;
②關(guān)于計(jì)數(shù)值的奇偶,若為偶數(shù),則輸出標(biāo)準(zhǔn)方波,高低電平各為N/2個(gè);若為奇數(shù),則在裝入計(jì)數(shù)值后的下一個(gè)CLK使其裝入,然后減1計(jì)數(shù),(N+1)/2,OUT改變狀態(tài),再減至0,OUT又改變狀態(tài),重新裝入計(jì)數(shù)值循環(huán)此過程,因此,在這種情況下,輸出有(N+1)/2個(gè)CLK個(gè)高電平,(N-1)/2個(gè)CLK個(gè)低電平;
③GATE信號(hào)能使計(jì)數(shù)過程重新開始,當(dāng)GATE=0時(shí),停止計(jì)數(shù),當(dāng)GATE變高后,計(jì)數(shù)器重新裝入初值開始計(jì)數(shù),尤其是當(dāng)GATE=0時(shí),若OUT此時(shí)為低,則立即變高,其它動(dòng)作同上;
④在計(jì)數(shù)期間改變計(jì)數(shù)值不影響現(xiàn)行的計(jì)數(shù)過程,一般情況下,新的計(jì)數(shù)值是在現(xiàn)行半周結(jié)束后才裝入計(jì)數(shù)器。但若中間遇到有GATE脈沖,則在此脈沖后即裝入新值開始計(jì)數(shù)。從波形圖中不難看出,工作方式3有如下特點(diǎn):5.方式4(軟件觸發(fā)的選通信號(hào)發(fā)生器)
在這種方式下,也是當(dāng)CPU寫入控制字后,OUT立即變高,寫入計(jì)數(shù)值開始計(jì)數(shù),當(dāng)計(jì)數(shù)到0后,OUT變低,經(jīng)過一個(gè)CLK脈沖后,OUT變高,這種計(jì)數(shù)是一次性的(與方式0有相似之處),只有當(dāng)寫入新的計(jì)數(shù)值后才開始下一次計(jì)數(shù)。方式4工作波形:5.方式4(軟件觸發(fā)的選通信號(hào)發(fā)生器)
從波形圖中不難看出,工作方式4有如下特點(diǎn):
①當(dāng)計(jì)數(shù)值為N時(shí),則間隔N+1個(gè)CLK脈沖輸出一個(gè)負(fù)脈沖(計(jì)數(shù)一次有效);
②GATE=0時(shí),禁止計(jì)數(shù),GATE=1時(shí),恢復(fù)繼續(xù)計(jì)數(shù);③在計(jì)數(shù)過程中重新裝入新的計(jì)數(shù)值,則該值是立即有效的(若為16位計(jì)數(shù)值,則裝入第一個(gè)字節(jié)時(shí)停止計(jì)數(shù),裝入第二個(gè)字節(jié)后開始按新值計(jì)數(shù))。6.方式5(硬件觸發(fā)的選通信號(hào)發(fā)生器)
在這種方式下,當(dāng)控制字寫入后,OUT立刻變高,寫入計(jì)數(shù)值后并不立即開始計(jì)數(shù),而是由GATE的上升沿觸發(fā)啟動(dòng)計(jì)數(shù)的,當(dāng)計(jì)數(shù)到0時(shí),輸出變低,經(jīng)過一個(gè)CLK之后,輸出恢復(fù)為高,計(jì)數(shù)停止,若再有GATE脈沖來,則重新裝入計(jì)數(shù)值開始計(jì)數(shù),上述過程重復(fù)。方式5的波形見圖所示。與方式1有相似之處。6.方式5(硬件觸發(fā)的選通信號(hào)發(fā)生器)
①
在這種方式下,若設(shè)置的計(jì)數(shù)值是N,則在GATE脈沖后,經(jīng)過(N+1)個(gè)CLK才一個(gè)負(fù)脈沖;②若在計(jì)數(shù)過程中又來一個(gè)GATE脈沖,則重新裝入初值開始計(jì)數(shù),輸出不變,即計(jì)數(shù)值多次有效;③若在計(jì)數(shù)過程中修改計(jì)數(shù)值,則該計(jì)數(shù)值在下一個(gè)GATE脈沖后裝入開始按此值計(jì)數(shù)。從波形圖中不難看出,工作方式5有如下特點(diǎn):四、
8253的初始化編程及應(yīng)用以便選擇計(jì)數(shù)器和規(guī)定計(jì)數(shù)器的工作方式,任一計(jì)數(shù)通道的控制字都要從8253的控制端口寫入。某個(gè)計(jì)數(shù)器寫入控制字后,任何時(shí)候都可以按控制字中的RW1、RW2規(guī)定寫入計(jì)數(shù)初值。寫入計(jì)數(shù)初值時(shí),還必須注意:如果在方式控制字中的BCD位為1,則寫入的計(jì)數(shù)初值應(yīng)為十六進(jìn)制數(shù)。在計(jì)數(shù)過程中,若要讀取當(dāng)前的計(jì)數(shù)值,則需要采用以下方法。先寫入一個(gè)方式控制字,該方式控制字SC1、SC2指明要讀取的計(jì)數(shù)通道,RW1、RW2設(shè)為00;然后再按照初始化該計(jì)數(shù)器時(shí)的讀/寫方法讀取計(jì)數(shù)值。1.寫入控制字2.寫入計(jì)數(shù)初值3.讀計(jì)數(shù)值8253是一個(gè)可編程的芯片,有一個(gè)8位的控制字寄存器,在初始化編程時(shí),由CPU向8253的控制字寄存器寫入一個(gè)控制字,用來選擇計(jì)數(shù)器,設(shè)置工作方式、計(jì)算方法以及CPU訪問計(jì)算器的讀/寫方法等。8253控制字的格式如圖所示。
其中:D7、D6用于選擇定時(shí)器;D5、D4用于確定時(shí)間常數(shù)的讀/寫格式;D3、D2、D1用來設(shè)定計(jì)數(shù)器的工作方式;D0用來設(shè)定計(jì)數(shù)方式.1.8253控制字格式:四、
8253的初始化編程及應(yīng)用
輸入數(shù)字鍵1~8發(fā)出不同頻率的聲音,模擬電子琴的功能。調(diào)整程序中分頻系數(shù)和延時(shí)時(shí)間參數(shù),可以獲得不同的聲音效果。
PC系統(tǒng)分配給主板上的8253的I/O端口地址是40H~43H,圖8-10描繪了這一部分接口電路的原理框圖。系統(tǒng)輸入時(shí)鐘頻率為1193.18kHz,它的3個(gè)計(jì)數(shù)器分別用于:①地址為40H的計(jì)數(shù)通道0用于產(chǎn)生系統(tǒng)時(shí)鐘的基本定時(shí)中斷,輸出方波序列的頻率為18.2Hz;【例題8.6】:四、
8253的初始化編程及應(yīng)用
PC揚(yáng)聲器電路框圖:四、
8253的初始化編程及應(yīng)用
②地址為41H的計(jì)數(shù)通道1用于產(chǎn)生DRAM存儲(chǔ)器系統(tǒng)刷新信號(hào),輸出負(fù)脈沖序列的頻率為68.2878kHz;③地址為42H的計(jì)數(shù)通道2用于為機(jī)內(nèi)揚(yáng)聲器提供發(fā)聲音調(diào),輸出方波序列的頻率約為100Hz。
任何一臺(tái)PC都內(nèi)含一只小型揚(yáng)聲器,用于發(fā)出各種信號(hào)音或報(bào)警聲。邏輯與門電路用于控制揚(yáng)聲器聲音的通斷,編程這一邏輯門就可以調(diào)整揚(yáng)聲器通斷時(shí)間產(chǎn)生不同的聲音效果。邏輯與門由8255A端口B的PB0和PB1兩位來控制,“1”接通、“0”關(guān)閉,該端口的地址為61H。由于端口B余下的6位還用作系統(tǒng)其他的控制,因此在編程中應(yīng)注意保護(hù)這6位的狀態(tài)不受任何影響。四、
8253的初始化編程及應(yīng)用
DATASEGMENTMESSAGEDB'Use1...8toplaythemusic!','$'FREQUDW262,294,330,347,392,440,494,524;
不同頻率對(duì)應(yīng)的分頻系數(shù)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,MESSAGE
【例題8.6】:四、
8253的初始化編程及應(yīng)用MOVAH,09HINT21H;顯示MESSAGE緩沖器中的字符串
MOVAL,10110110B;選擇工作方式3,使用計(jì)數(shù)器2OUT43H,AL;通過AL將控制字寫入43H端口
NEXT:MOVAH,7INT21H;鍵盤輸入無(wú)回顯
CMPAL,'1'
JBEXITCMPAL,'8'JAEXIT;輸入字符非1~8的數(shù)字鍵則退出程序續(xù):
四、
8253的初始化編程及應(yīng)用
SUBAL,30H;數(shù)字1~8的ASCII減去30HMOVAH,0MOVBX,AXSUBBX,1SHLBX,1;計(jì)算分頻系數(shù)的偏移地址
MOVCX,FREQU[BX];取出頻率值MOVAX,34DCH
MOVDX,12H;DX:AX=1234DCH=1193180Hz時(shí)鐘
四、
8253的初始化編程及應(yīng)用
DIVCX;(DXAX)/CX的商→AXMOVBX,AXOUT42H,AL;商的低8位送入計(jì)數(shù)通道2MOVAL,AHOUT42H,AL;商的高8位送入計(jì)數(shù)通道2
INAL,61H;讀取8255的狀態(tài),以控制PB0和PB1ORAL,03H;把PB0和PB1置1
OUT61H,AL;使揚(yáng)聲器發(fā)聲四、
8253的初始化編程及應(yīng)用MOVCX,0FFFFHDELAY:MOVDX,1000H;延時(shí)時(shí)間參數(shù)DEC_DX:DECDXJNZDEC_DXLOOPDELAY;延時(shí)
INAL,61H;重新讀取61H端口的狀態(tài)ANDAL,11111100B;把PB0和PB1置0OUT61H,AL;關(guān)閉揚(yáng)聲器JMPNEXTEXIT:MOVAH,4CH;返回DOS
INT21HCODEENDSENDSTART8.2DMA控制器8237A返回1、DMA的基本原理2、8237A的內(nèi)部結(jié)構(gòu)和引腳3、8237A的工作方式和傳輸類型4、8237A的初始化編程及應(yīng)用)
前面介紹的微機(jī)系統(tǒng)中各種常用的數(shù)據(jù)輸入輸出方法,包括方式,前三種方式適用于CPU與慢速及中速外設(shè)之間的數(shù)據(jù)交換。但當(dāng)高速外設(shè)要與系統(tǒng)內(nèi)存或者要在系統(tǒng)內(nèi)存的不同區(qū)域之間,進(jìn)行大量數(shù)據(jù)的快速傳送時(shí),前三種方式就不能滿足于數(shù)據(jù)傳輸?shù)囊蟆?/p>
為了提高數(shù)據(jù)傳送的速率,人們提出了直接存儲(chǔ)器存取(DMA)的數(shù)據(jù)傳送控制方式,即在一定時(shí)間段內(nèi),由DMA控制器(DMAC)取代CPU,獲得總線控制權(quán),來實(shí)現(xiàn)內(nèi)存與外設(shè)或者內(nèi)存的不同區(qū)域之間大量數(shù)據(jù)快速傳送的一種數(shù)據(jù)傳送方式。典型的DMA控制器(DMAC)的工作原理如圖6.6所示。在DMA方式下,數(shù)據(jù)傳送的工作過程大致如下:8.2.1DMA的基本原理(1)首先,外設(shè)向DMAC發(fā)出DMA傳送請(qǐng)求。
(2)DMAC通過連接到CPU的HOLD信號(hào)向CPU提出DMA請(qǐng)求。
(3)CPU在完成當(dāng)前總線操作后,立即響應(yīng)DMAC占用總線的請(qǐng)求。CPU的響應(yīng)包括兩個(gè)方面:一方面,CPU將立即放棄總線控制權(quán)(CPU將將控制總線、數(shù)據(jù)總線和地址總線浮空);另一方面,CPU將有效的HLDA信號(hào)加到DMAC上,通知DMAC自己已經(jīng)讓出了總線的控制權(quán)。
(4)CPU放棄總線控制權(quán)后(即CPU將總線浮空后),DMAC接管系統(tǒng)總線的控制權(quán),并向外設(shè)送出DMA的應(yīng)答信號(hào)。
(5)DMAC送出地址信號(hào)和控制信號(hào),實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存不同區(qū)域之間大量數(shù)據(jù)的快速傳送。
(6)DMAC將規(guī)定的數(shù)據(jù)字節(jié)傳送完之后,通過向CPU發(fā)出HOLD信號(hào),撤消對(duì)CPU的DMA請(qǐng)求。CPU收到此信號(hào),一方面使HLDA無(wú)效,另一方面又重新開始控制總線,實(shí)現(xiàn)正常取指令、分析指令、執(zhí)行指令的操作。8.2.1DMA的基本原理DMAC的工作原理框圖
8237A的內(nèi)部結(jié)構(gòu)8237A的內(nèi)部結(jié)構(gòu)如圖8-12所示,主要由4個(gè)獨(dú)立的DMA通道組成。每個(gè)通道有方式寄存器、請(qǐng)求寄存器、屏蔽寄存器、基地址寄存器、現(xiàn)行地址寄存器、基字節(jié)數(shù)寄存器和現(xiàn)行字節(jié)數(shù)寄存器組成。8237A內(nèi)部還包括4個(gè)通道公用的命令寄存器和狀態(tài)寄存器等。此外,還有讀/寫邏輯、時(shí)序和控制邏輯、優(yōu)先權(quán)編碼邏輯等。8.2.28237A的內(nèi)部結(jié)構(gòu)和引腳8.2.28237A的內(nèi)部結(jié)構(gòu)和引腳圖8-12
8237A的內(nèi)部結(jié)構(gòu)框圖
8237A的數(shù)據(jù)線、地址線都有三態(tài)緩沖器,可以接管或釋放總線。內(nèi)部的優(yōu)先權(quán)編碼器單元可以對(duì)同時(shí)有DMA請(qǐng)求的通道進(jìn)行優(yōu)先權(quán)編碼,確定優(yōu)先權(quán)級(jí)別。各通道公用一個(gè)控制寄存器和狀態(tài)寄存器。其中暫存器在8237A完成存儲(chǔ)器到存儲(chǔ)器的傳送時(shí)用于保存數(shù)據(jù)。完成傳送后,暫存器總是保存前一次存儲(chǔ)器傳送的最后一個(gè)字節(jié)的內(nèi)容。8237A是具有40個(gè)引腳的雙列直插式集成電路芯片,其引腳如圖8-13所示。圖8-138237A的引腳3.8237A的寄存器
8237A有4根地址輸入線A0~A3,其片內(nèi)有16個(gè)端口可供CPU訪問。各寄存器的端口地址和軟件命令尋址如表6-1所示。A0寫操作(
為0時(shí))讀操作(
為0時(shí))0000通道0地址寄存器通道0現(xiàn)行地址寄存器0001通道0字節(jié)數(shù)寄存器通道0現(xiàn)行字節(jié)數(shù)寄存器0010通道1地址寄存器通道1現(xiàn)行地址寄存器0011通道1字節(jié)數(shù)寄存器通道1現(xiàn)行字節(jié)數(shù)寄存器0100通道2地址寄存器通道2現(xiàn)行地址寄存器0101通道2字節(jié)數(shù)寄存器通道2現(xiàn)行字節(jié)數(shù)寄存器0110通道3地址寄存器通道3現(xiàn)行地址寄存器0111通道3字節(jié)數(shù)寄存器通道3現(xiàn)行字節(jié)數(shù)寄存器1000命令寄存器狀態(tài)寄存器1001請(qǐng)求寄存器—1010單通道屏蔽字—1011方式寄存器—1100清先/后觸發(fā)器命令—1101復(fù)位命令暫存器1110清屏蔽寄存器命令—1111綜合屏蔽字—各寄存器功能如下:
用來保存DMA傳送時(shí)本通道所用到的數(shù)據(jù)段地址初值,該初值是由CPU對(duì)8237A進(jìn)行初始化編程時(shí)寫入,但CPU不能通過輸入指令讀出基地址寄存器的值。
用來保存DMA傳送過程中當(dāng)前地址值。初始時(shí)該寄存器的值與基地址寄存器相同,每次DMA傳送后其內(nèi)容自動(dòng)增1或減1?,F(xiàn)行地址寄存器的值可由CPU通過兩條輸入指令連續(xù)讀出,每次8位。若8237A編程設(shè)定為自動(dòng)預(yù)置,則在每次DMA操作結(jié)束發(fā)出EOP信號(hào)后,現(xiàn)行地址寄存器將根據(jù)基地址寄存器的內(nèi)容自動(dòng)恢復(fù)初始值。
用來保存整個(gè)DMA操作過程中要傳送數(shù)據(jù)的字節(jié)數(shù),這個(gè)寄存器的初值由CPU在編程時(shí)寫入,并且該寄存器的內(nèi)容也不能被CPU讀出。
(1)基地址寄存器(2)現(xiàn)行地址寄存器(3)基字節(jié)數(shù)寄存器各寄存器功能如下:
(4)現(xiàn)行字節(jié)數(shù)寄存器:用來保存當(dāng)前要傳送的字節(jié)數(shù),初始時(shí)該寄存器的值與基字節(jié)數(shù)寄存器相同,每次DMA傳送后,此寄存器內(nèi)容減1,當(dāng)它的值減為零時(shí),將發(fā)出EOP信號(hào),表明DMA操作結(jié)束。這個(gè)寄存器的值可由CPU讀出。在自動(dòng)預(yù)置狀態(tài)下,EOP有效時(shí)現(xiàn)行字節(jié)數(shù)寄存器的值可根據(jù)基字節(jié)數(shù)寄存器的內(nèi)容自動(dòng)恢復(fù)為起始狀態(tài)。
(5)暫存器:在存儲(chǔ)器到存儲(chǔ)器的傳送方式下,暫存器用于保存從源存儲(chǔ)單元讀出的數(shù)據(jù)。
(6)方式寄存器:用于在CPU對(duì)8237A初始化編程時(shí)設(shè)定8237A的工作方式、地址增減、是否自動(dòng)預(yù)置、傳輸類型及通道選擇。每個(gè)通道有一個(gè)8位的方式寄存器,但是它們占用同一個(gè)端口地址,用來存放方式字,依靠方式控制字本身的特征位來區(qū)分寫入不同的通道,用來規(guī)定通道的工作方式。圖8-14方式寄存器格式圖8-15命令寄存器格式各寄存器功能如下:請(qǐng)求寄存器用于在軟件控制下產(chǎn)生一個(gè)DMA請(qǐng)求,就如同外部DREQ請(qǐng)求一樣,格式如圖6.11所示.為請(qǐng)求字的格式,D0D1的不同編碼用來表示向不同通道發(fā)出DMA請(qǐng)求。在軟件編程時(shí),這些請(qǐng)求是不可屏蔽的,利用命令字即可實(shí)現(xiàn)使8237按照命令字的D0D1所指的通道,完成D2所規(guī)定的操作,這種軟件請(qǐng)求只用于通道工作在數(shù)據(jù)塊傳送方式之下。8237的屏蔽字有兩種形式:?jiǎn)蝹€(gè)通道屏蔽字和四通道屏蔽字。單通道屏蔽字的格式如圖6-12所示,利用這個(gè)屏蔽字,每次只能選擇一個(gè)通道。其中D0D1的編碼指示所選的通道,D2=l表示禁止該通道接收DREQ請(qǐng)求,當(dāng)D2=0時(shí)允許DREQ請(qǐng)求。四通道屏蔽字的格式如圖6.13所示,可以利用這個(gè)屏蔽字同時(shí)對(duì)8237的4個(gè)通道的屏蔽字進(jìn)行操作,故又稱為主屏蔽字。它與單通道屏蔽字占用不同的I/O接口地址,以此加以區(qū)分。
(8)請(qǐng)求寄存器(9)屏蔽寄存器圖8-16請(qǐng)求寄存器格式圖8-17單通道屏蔽字格式圖8-18四通道屏蔽字格式圖8-19狀態(tài)寄存器的格式8.2.38237A的工作方式和傳輸類型1.8237A的工作方式2.8237A的DMA傳輸類型1.8237A的工作方式
(1)單字節(jié)傳送方式:每次DMA操作僅傳送一個(gè)字節(jié)的數(shù)據(jù),完成一個(gè)字節(jié)的數(shù)據(jù)傳送后,8237A將當(dāng)前地址寄存器的內(nèi)容加1或減1,并將當(dāng)前字節(jié)數(shù)寄存器的內(nèi)容減1,每傳送完這一個(gè)字節(jié),DMAC就將總線控制權(quán)交回CPU。(2)數(shù)據(jù)塊傳送方式:在這種傳送方式下,DMAC一旦獲得總線控制權(quán),便開始連續(xù)傳送數(shù)據(jù)。每傳送一個(gè)字節(jié),自動(dòng)修改當(dāng)前地址及當(dāng)前字節(jié)數(shù)寄存器的內(nèi)容,直到將所有規(guī)定的字節(jié)全部傳送完,或收到外部
信號(hào),DMAC才結(jié)束傳送,將總線控制權(quán)交給CPU,一次所傳送數(shù)據(jù)塊的最大長(zhǎng)度可達(dá)64KB,數(shù)據(jù)塊傳送結(jié)束后可自動(dòng)初始化。(3)請(qǐng)求傳送方式:只要DREQ有效,DMA傳送就一直進(jìn)行,直到連續(xù)傳送到字節(jié)計(jì)數(shù)器為0或外部輸入使
變低或DREQ變?yōu)闊o(wú)效時(shí)為止。(4)級(jí)聯(lián)傳送方式:利用這種方式可以把多個(gè)8237連接在一起,以便擴(kuò)充系統(tǒng)的DMA通道數(shù)。下一級(jí)的HRQ接到上一級(jí)的某一通道的DREQ上,而上一級(jí)的響應(yīng)信號(hào)DACK可接下一級(jí)的HLDA上。在級(jí)聯(lián)方式下,當(dāng)?shù)诙?jí)8237的請(qǐng)求得到響應(yīng)時(shí),第一級(jí)8237僅應(yīng)輸出HRQ信號(hào)而不能輸出地址及控制信號(hào),因?yàn)?,第二?jí)的8237才是真正的主控制器,而第一級(jí)的8237僅應(yīng)起到傳遞DREQ請(qǐng)求信號(hào)及DACK應(yīng)答信號(hào)的作用。2.8237A的DMA傳輸類型
(1)I/O接口到存儲(chǔ)器的傳送。
(2)存儲(chǔ)器到I/O接口。
(3)存儲(chǔ)器到存儲(chǔ)器。8237A工作前應(yīng)先由CPU對(duì)其進(jìn)行初始化編程,設(shè)定工作方式及內(nèi)部各寄存器的值。初始化編程包括:輸出總清除命令、設(shè)置基地址與現(xiàn)行地址寄存器、設(shè)置基字節(jié)數(shù)寄存器與現(xiàn)行字節(jié)數(shù)寄存器、寫入方式寄存器、寫入屏蔽寄存器、寫入命令寄存器。若不使用軟件請(qǐng)求,在完成上述編程后,由各通道的DMA請(qǐng)求信號(hào)DREQ啟動(dòng)DMA傳送過程;若使用軟件請(qǐng)求,需將請(qǐng)求寄存器的內(nèi)容寫入指定通道后,開始DMA傳送過程。在對(duì)8237A初始化之前,通常必須對(duì)8237A進(jìn)行復(fù)位操作,利用系統(tǒng)總線上的RESET信號(hào)或軟件命令對(duì)A3A2AlA0為1101的地址進(jìn)行寫操作,均可使8237復(fù)位。復(fù)位后,8237內(nèi)部的屏蔽寄存器被置位而其它所有寄存器被清0,復(fù)位操作使8237進(jìn)入空閑狀態(tài),這時(shí)才可以對(duì)8237進(jìn)行初始化操作。
8.2.48237A的初始化編程及應(yīng)用【例8.7】在IBMPC/XT中,利用8237A通道0輸出存儲(chǔ)器地址進(jìn)行DRAM的刷新操作,其DMA傳送程序如下:
MOVAL,00H
OUTDMA+0DH,AL;DMAC復(fù)位命令
MOVAL,00H;固定優(yōu)先權(quán),DREQ高有效、DACK低有效、滯后寫、正常時(shí)序
OUTDMA+08H,AL;DMAC命令字寫入命令寄存器
MOVAL,00H
OUTDMA+00H,AL;寫入通道0的地址寄存器低字節(jié)
OUTDMA+00H,AL;寫入通道0的地址寄存器高字節(jié)
MOVAL,0FFH
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年數(shù)據(jù)庫(kù)服務(wù)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年坐姿與脊椎保護(hù)椅墊企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年新品文教品鑒會(huì)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年即食蔬菜條行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年廚電產(chǎn)品回收再利用行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 護(hù)目鏡的紫外線防護(hù)功能與材料選擇考核試卷
- 建筑物拆除與城市排水工程建設(shè)考核試卷
- 影視錄放設(shè)備的智能電池保護(hù)優(yōu)化技術(shù)發(fā)展趨勢(shì)考核試卷
- 化學(xué)礦的礦產(chǎn)資源與礦場(chǎng)治理考核試卷
- 建筑外墻裝飾材料施工技術(shù)考核試卷
- 山東省威海乳山市(五四制)2023-2024學(xué)年八年級(jí)下學(xué)期期末考試化學(xué)試題(解析版)
- 中壓電力線載波通信技術(shù)規(guī)范
- 周志華-機(jī)器學(xué)習(xí)-Chap01緒論-課件
- YB∕T 4146-2016 高碳鉻軸承鋼無(wú)縫鋼管
- 多圖中華民族共同體概論課件第十三講先鋒隊(duì)與中華民族獨(dú)立解放(1919-1949)根據(jù)高等教育出版社教材制作
- 第三單元《交流平臺(tái)與初試身手》課件語(yǔ)文六年級(jí)下冊(cè)
- (2024年)TPM培訓(xùn)講義課件
- 高考英語(yǔ)單詞3500(亂序版)
- 《社區(qū)康復(fù)》課件-第五章 脊髓損傷患者的社區(qū)康復(fù)實(shí)踐
- 北方、南方戲劇圈的雜劇文檔
- 康復(fù)科st科出科小結(jié)
評(píng)論
0/150
提交評(píng)論