《硬件課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告—交通燈指揮系統(tǒng)設(shè)計(jì)_第1頁
《硬件課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告—交通燈指揮系統(tǒng)設(shè)計(jì)_第2頁
《硬件課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告—交通燈指揮系統(tǒng)設(shè)計(jì)_第3頁
《硬件課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告—交通燈指揮系統(tǒng)設(shè)計(jì)_第4頁
《硬件課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告—交通燈指揮系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、硬件課程設(shè)計(jì)交通燈指揮系統(tǒng)設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 成員:(信安08-3班)(信安08-2班)指導(dǎo)老師: 日期:2010-12-31交通燈指揮系統(tǒng)課程設(shè)計(jì)一、 需求分析紅綠交通燈是我們?nèi)粘I罱?jīng)常見到也是必不可少的,隨著城市社會(huì)經(jīng)濟(jì)的發(fā)展,城市道路交通供給和需求的矛盾日益突出,并引發(fā)很多交通問題。當(dāng)今,紅綠燈安裝在各個(gè)交通路口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。1968年,聯(lián)合國道路交通和道路標(biāo)志信號(hào)協(xié)定對(duì)各種信號(hào)燈的含義作了規(guī)定。綠燈時(shí)通行信號(hào),面對(duì)綠燈的車輛可以直行、左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。面對(duì)

2、黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口。我們設(shè)計(jì)的交通燈就是依據(jù)上述思路控制十字路口南北東西四個(gè)方向車輛通行的。二、 設(shè)計(jì)思路通過可編程并行接口芯片8255a和可編程定時(shí)器/計(jì)數(shù)器芯片8253以及中斷控制器8279實(shí)現(xiàn)十字路口交通燈的模擬控制,進(jìn)一步掌握并行接口和定時(shí)器/計(jì)時(shí)器以及數(shù)碼管控制的實(shí)際應(yīng)用。三、 具體分工我們小組共有兩個(gè)人,分別是柴婷婷(信安08-3班)、孫國營(信安08-2班)。柴婷婷主要負(fù)責(zé)軟件部分和最終報(bào)告的形成,孫國營主要負(fù)責(zé)查找參考資料、硬件部分、芯片連接以及程序調(diào)試。四、 實(shí)驗(yàn)內(nèi)容編寫一個(gè)交通燈控制程序,實(shí)現(xiàn)東西路口與南北路口狀

3、態(tài)燈的轉(zhuǎn)換。其中紅燈亮,表示該道路禁止通行;黃燈亮表示該道路上未過停車線的車輛禁止通行,已過停車線的車輛繼續(xù)通行;綠燈表示該道路 允許通行。十字路口交通燈控制圖簡化圖五、 技術(shù)指示1、用實(shí)驗(yàn)箱中提供的發(fā)光二極管(紅綠黃各兩支、共六支)作為南北路口(紅綠黃各一支)和東西路口(紅綠黃各一支)的模擬交通燈。2、用可編程并行接口芯片8255a控制模擬交通燈的亮與滅和數(shù)碼管的倒計(jì)時(shí)顯示。3、用可編程定時(shí)器/計(jì)數(shù)器芯片8253實(shí)現(xiàn)模擬交通燈亮與滅的時(shí)間延遲的控制。4、用數(shù)碼管作為模擬交通燈亮與滅的時(shí)間延遲控制的倒計(jì)時(shí)顯示。5、用匯編語言編程使六個(gè)燈按交通燈變化規(guī)律“亮/滅”。交通燈變化要求:(1)南北燈綠

4、,東西紅燈同時(shí)亮30秒,且數(shù)碼管30秒倒計(jì)時(shí)顯示。(2)南北黃燈閃爍5秒,同時(shí)東西路紅燈繼續(xù)亮,且數(shù)碼管5秒倒計(jì)時(shí)顯示。(3)南北路紅燈、東西路綠燈同時(shí)亮30秒,且數(shù)碼管30秒倒計(jì)時(shí)顯示。六、實(shí)驗(yàn)原理 通過8253計(jì)數(shù),每1ms刷新一次,cx計(jì)數(shù)不為零,計(jì)數(shù)值減1,刷新1000次,持續(xù)1秒鐘(其中輸入始終脈沖為1khz)。pa7pa0控制二極管的亮滅,pb7pb0控制數(shù)碼管的顯示。通過設(shè)置控制字,使8255a的c口高四位輸出,低四位輸入。pc4和pc5對(duì)數(shù)碼管進(jìn)行位控,讓兩位十進(jìn)制數(shù)同時(shí)顯示。在黃燈顯示的時(shí)候,通過判斷使黃燈亮?xí)r滅,滅時(shí)亮,以此設(shè)置黃燈閃爍。8255a芯片引腳功能reset:復(fù)

5、位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有i/o口均被置成輸入方式。 cs:芯片選擇信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/cs=0時(shí),表示芯片被選中,允許8255與cpu進(jìn)行通訊;/cs=1時(shí),8255無法與cpu做數(shù)據(jù)傳輸. rd:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/rd=0且/cs=0時(shí),允許8255通過數(shù)據(jù)總線向cpu發(fā)送數(shù)據(jù)或狀態(tài)信息,即cpu從8255讀取信息或數(shù)據(jù)。 wr:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),即/wr=0且/cs=0時(shí),允許cpu將數(shù)據(jù)或控制字寫入8255。 d0d7:三態(tài)雙向數(shù)據(jù)總線,8255與cpu數(shù)據(jù)傳送的通道,當(dāng)cp

6、u 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 pa0pa7:端口a輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。 pb0pb7:端口b輸入輸出線,一個(gè)8位的i/o鎖存器, 一個(gè)8位的輸入輸出緩沖器。 pc0pc7:端口c輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口c可以通過工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口a和端口b配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。' a0,a1:地址選擇線,用來選擇8255的pa口,pb口,pc口

7、和控制寄存器. 當(dāng)a0=0,a1=0時(shí),pa口被選擇; 當(dāng)a0=0,a1=1時(shí),pb口被選擇; 當(dāng)a0=1,a1=0時(shí),pc口被選擇; 當(dāng)a0=1.a1=1時(shí),控制寄存器被選擇.8253芯片 工作原理8253具有3個(gè)獨(dú)立的計(jì)數(shù)通道,采用減1計(jì)數(shù)方式。在門控信號(hào)有效時(shí),每輸入1個(gè)計(jì)數(shù)脈沖,通道作1次計(jì)數(shù)操作。當(dāng)計(jì)數(shù)脈沖是已知周期的時(shí)鐘信號(hào)時(shí),計(jì)數(shù)就成為定時(shí)。 一、8253內(nèi)部結(jié)構(gòu) 8253芯片有24條引腳,封裝在雙列直插式陶瓷管殼內(nèi)。 1.數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器與系統(tǒng)總線連接,8位雙向,與cpu交換信息的通道。這是8253與cpu之間的數(shù)據(jù)接口,它由8位雙向三態(tài)緩沖存儲(chǔ)器構(gòu)成,是cpu與

8、8253之間交換信息的必經(jīng)之路。 2.讀寫控制 讀寫控制分別連接系統(tǒng)的ior#和iow#, 由cpu控制著訪問8253的內(nèi)部通道。接收cpu送入的讀寫控制信號(hào), 并完成對(duì)芯片內(nèi)部各功能部件的控制功能, 因此, 它實(shí)際上是8253芯片內(nèi)部的控制器。a1a0:端口選擇信號(hào),由cpu輸入。8253內(nèi)部有3個(gè)獨(dú)立的通道和一個(gè)控制字寄存器, 它們構(gòu)成8253芯片的4個(gè)端口,cpu可對(duì)3個(gè)通道進(jìn)行讀寫操作3對(duì)控制字寄存器進(jìn)行寫操作。 這4個(gè)端口地址由最低2位地址碼a1a0來選擇。如表9.3.1所示。 3.通道選擇 (1) cs#片選信號(hào),由cpu輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 (2)

9、 rd#、wr#讀寫控制命令,由cpu輸入, 低電平有效。rd#效時(shí),cpu讀取由a1a0所選定的通道內(nèi)計(jì)數(shù)器的內(nèi)容。wr#有效時(shí),cpu將計(jì)數(shù)值寫入各個(gè)通道的計(jì)數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。cpu對(duì)8253的讀寫操作如表9.3.2所示。 4.計(jì)數(shù)通道02 每個(gè)計(jì)數(shù)通道內(nèi)含1個(gè)16位的初值寄存器、減1計(jì)數(shù)器和1個(gè)16位的(輸出)鎖存器。8253內(nèi)部包含3個(gè)功能完全相同的通道,每個(gè)通道內(nèi)部設(shè)有一個(gè)16位計(jì)數(shù)器,可進(jìn)行二進(jìn)制或十進(jìn)制(bcd碼)計(jì)數(shù)。采用二進(jìn)制計(jì)數(shù)時(shí), 最大計(jì)數(shù)值是ffffh, 采用bcd碼計(jì)數(shù)時(shí)。 最大計(jì)數(shù)值是9999。與此計(jì)數(shù)器相對(duì)應(yīng), 每個(gè)通道內(nèi)設(shè)有一個(gè)16

10、位計(jì)數(shù)值鎖存器。必要時(shí)可用來鎖存計(jì)數(shù)值。 當(dāng)某通道用作計(jì)數(shù)器時(shí),應(yīng)將要求計(jì)數(shù)的次數(shù)預(yù)置到該通道的計(jì)數(shù)器中、被計(jì)數(shù)的事件應(yīng)以脈沖方式從clk端輸入, 每輸入一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器內(nèi)容減“1”,待計(jì)數(shù)值計(jì)到“0”。 out端將有輸出。表示計(jì)數(shù)次數(shù)到。當(dāng)某個(gè)通道用作定時(shí)器時(shí)。 由clk輸入一定頻率的時(shí)鐘脈沖。根據(jù)要求定時(shí)的時(shí)間長短確定所需的計(jì)數(shù)值。并預(yù)置到計(jì)數(shù)器中,每輸入一個(gè)時(shí)鐘脈沖,計(jì)數(shù)器內(nèi)容減“1”, 待計(jì)數(shù)值計(jì)到“0”。out將有輸出,表示定時(shí)時(shí)間到。允許從clk輸入的時(shí)鐘頻在12mhz范圍內(nèi)。因此,任一通道作計(jì)數(shù)器用或作定時(shí)器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計(jì)數(shù)脈沖進(jìn)行減“1”計(jì)數(shù)。

11、 而后者是內(nèi)時(shí)鐘脈沖進(jìn)行減“1”計(jì)數(shù)。作計(jì)數(shù)器時(shí), 要求計(jì)數(shù)的次數(shù)可直接作為計(jì)數(shù)器的初值預(yù)置到減“1”計(jì)數(shù)器中。作定時(shí)器時(shí), 計(jì)數(shù)器的初值即定時(shí)系數(shù)應(yīng)根據(jù)要求定時(shí)的時(shí)間進(jìn)行如下運(yùn)算才能得到: 定時(shí)系數(shù)需要定時(shí)的時(shí)間時(shí)鐘脈沖周期 設(shè)置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; 計(jì)數(shù)/定時(shí):向通道寫入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)操作; 讀取當(dāng)前的計(jì)數(shù)值:向指定通道讀取當(dāng)前計(jì)數(shù)器值時(shí),8253將計(jì)數(shù)器值存入鎖存器,從鎖存器向外提供當(dāng)前的計(jì)數(shù)器值,計(jì)數(shù)器則繼續(xù)作計(jì)數(shù)操作。 計(jì)數(shù)到:當(dāng)計(jì)數(shù)器減1為0時(shí),通過引腳outi向外輸出“到”的脈沖信號(hào)。 計(jì)數(shù)初值輸入存放在初值寄存器中,

12、計(jì)數(shù)開始或重裝入時(shí)被復(fù)制到計(jì)數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計(jì)數(shù)器的變化而變化;一旦鎖存了計(jì)數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 5.方式選擇控制字 二、8253的通道工作方式 8253中各通道可有6種可供選擇的工作方式, 以完成定時(shí)、計(jì)數(shù)或脈沖發(fā)生器等多種功能。8253的各種工作方式如下: 1.方式0:計(jì)數(shù)結(jié)束則中斷 工作方式0被稱為計(jì)數(shù)結(jié)束中斷方式,它的定時(shí)波形如圖9.3.4所示。當(dāng)任一通道被定義為工作方式0時(shí), outi輸出為低電平;若門控信號(hào)gate為高電平,當(dāng)cpu利用輸出指令向該通道寫入計(jì)數(shù)值wr#有效時(shí),outi仍保持低電平,然后計(jì)數(shù)器開始減“1”計(jì)數(shù), 直到

13、計(jì)數(shù)值為“0”,此刻outi將輸出由低電平向高電平跳變,可用它向cpu發(fā)出中斷請(qǐng)求,outi端輸出的高電平一直維持到下次再寫入計(jì)數(shù)值為止。 在工作方式0情況下,門控信號(hào)gate用來控制減“1”計(jì)數(shù)操作是否進(jìn)行。當(dāng)gate=1時(shí),允許減“1”計(jì)數(shù);gate=0時(shí),禁止減“1”計(jì)數(shù); 計(jì)數(shù)值將保持gate有效時(shí)的數(shù)值不變, 待gate重新有效后,減“1”計(jì)數(shù)繼續(xù)進(jìn)行。 顯然,利用工作方式0既可完成計(jì)數(shù)功能, 也可完成定時(shí)功能。當(dāng)用作計(jì)數(shù)器時(shí),應(yīng)將要求計(jì)數(shù)的次數(shù)預(yù)置到計(jì)數(shù)器中,將要求計(jì)數(shù)的事件以脈沖方式從clki端輸入, 由它對(duì)計(jì)數(shù)器進(jìn)行減“1”計(jì)數(shù),直到計(jì)數(shù)值為0,此刻outi輸出正跳變, 表示計(jì)

14、數(shù)次數(shù)到。當(dāng)用作定時(shí)器時(shí),應(yīng)把根據(jù)要求定時(shí)的時(shí)間和clki的周期計(jì)算出定時(shí)系數(shù),預(yù)置到計(jì)數(shù)器中。從clki,輸入的應(yīng)是一定頻率的時(shí)鐘脈沖,由它對(duì)計(jì)數(shù)器進(jìn)行減“1”計(jì)數(shù), 定時(shí)時(shí)間從寫入計(jì)數(shù)值開始,到計(jì)數(shù)值計(jì)到“0”為止,這時(shí)outi輸出正跳變,表示定時(shí)時(shí)間到。 有一點(diǎn)需要說明,任一通道工作在方式0情況下, 計(jì)數(shù)器初值一次有效,經(jīng)過一次計(jì)數(shù)或定時(shí)后如果需要繼續(xù)完成計(jì)數(shù)或定時(shí)功能,必須重新寫入計(jì)數(shù)器的初值。 2.方式1:單脈沖發(fā)生器 工作方式1被稱作可編程單脈沖發(fā)生器,其定義波形如圖9.3.5。進(jìn)入這種工作方式, cpu裝入計(jì)數(shù)值n后outi輸出高電平, 不管此時(shí)的gate輸入是高電平還是低電平,

15、 都不開始減“1”計(jì)數(shù),必須等到gate由低電平向高電平跳變形成一個(gè)上升沿后,計(jì)數(shù)過程才會(huì)開始。與此同時(shí),outi輸出由高電平向低電平跳變,形成了輸出單脈沖的前沿,待計(jì)數(shù)值計(jì)到“0”, outi輸出由低電平向高電平跳變,形成輸出單脈沖的后沿, 因此,由方式l所能輸出單脈沖的寬度為clki周期的n倍。 如果在減“1”計(jì)數(shù)過程中, gate由高電平跳變?yōu)榈碗姾?,這并不影響計(jì)數(shù)過程,仍繼續(xù)計(jì)數(shù);但若重新遇到gate的上升沿,則從初值開始重新計(jì)數(shù), 其效果會(huì)使輸出的單脈沖加寬,如教材圖9-22(b)中的第2個(gè)單脈沖。 這種工作方式下,計(jì)數(shù)值也是一次有效,每輸入一次計(jì)數(shù)值,只產(chǎn)生一個(gè)負(fù)極性單脈沖。 3.

16、方式2:速率波發(fā)生器 工作方式2被稱作速率波發(fā)生器,其定時(shí)波形如圖9.3.6所示。進(jìn)入這種工作方式, outi輸出高電平,裝入計(jì)數(shù)值n后如果gate為高電平,則立即開始計(jì)數(shù),outi保持為高電平不變; 待計(jì)數(shù)值減到“1”和“0”之間, outi將輸出寬度為一個(gè)clki周期的負(fù)脈沖,計(jì)數(shù)值為“0”時(shí),自動(dòng)重新裝入計(jì)數(shù)初值n,實(shí)現(xiàn)循環(huán)計(jì)數(shù),outi將輸出一定頻率的負(fù)脈沖序列, 其脈沖寬度固定為一個(gè)clki周期, 重復(fù)周期為clki周期的n倍。 如果在減“1”計(jì)數(shù)過程中,gate變?yōu)闊o效(輸入0電平),則暫停減“1”計(jì)數(shù),待gate恢復(fù)有效后,從初值n開始重新計(jì)數(shù)。這樣會(huì)改變輸出脈沖的速率。 如果在

17、操作過程中要求改變輸出脈沖的速率,cpu可在任何時(shí)候,重新寫人新的計(jì)數(shù)值, 它不會(huì)影響正在進(jìn)行的減“1”計(jì)數(shù)過程,而是從下一個(gè)計(jì)數(shù)操作用期開始按新的計(jì)數(shù)值改變輸出脈沖的速率。 4.方式3:方波發(fā)生器 工作方式3被稱作方波發(fā)生器,其定時(shí)波型如圖9.3.7所示。任一通道工作在方式3, 只在計(jì)數(shù)值n為偶數(shù),則可輸出重復(fù)周期為n、占空比為1:1的方波。 進(jìn)入工作方式3,outi輸出低電平, 裝入計(jì)數(shù)值后,outi立即跳變?yōu)楦唠娖?。如果?dāng)gate為高電平, 則立即開始減“1”計(jì)數(shù),outi保持為高電平,若n為偶數(shù),則當(dāng)計(jì)數(shù)值減到n/2時(shí),outi跳變?yōu)榈碗娖?,一直保持到?jì)數(shù)值為“0”,系統(tǒng)才自動(dòng)重新置入

18、計(jì)數(shù)值n,實(shí)現(xiàn)循環(huán)計(jì)數(shù)。這時(shí)outi端輸出的周期為n×clki周期,占空比為1:1的方波序列; 若n為奇數(shù), 則outi端輸出周期為n×clki周期,占空比為(n+1)/2)/(n-1)/2)的近似方波序列。 如果在操作過程中, gate變?yōu)闊o效,則暫停減“1”計(jì)數(shù)過程,直到gate再次有效,重新從初值n開始減“l(fā)”計(jì)數(shù)。 如果要求改變輸出方波的速率, 則cpu可在任何時(shí)候重新裝入新的計(jì)數(shù)初值n,并從下一個(gè)計(jì)數(shù)操作周期開始改變輸出方波的速率。 5.方式4:軟件觸發(fā)方式計(jì)數(shù) 工作方式4被稱作軟件觸發(fā)方式,其定時(shí)波形如圖9.3.8所示。進(jìn)入工作方式4,outi輸出高電平。 裝入

19、計(jì)數(shù)值n后, 如果gate為高電平,則立即開始減“1”計(jì)數(shù),直到計(jì)數(shù)值減到“0”為止,outi輸出寬度為一個(gè)clki周期的負(fù)脈沖。由軟件裝入的計(jì)數(shù)值只有一次有效,如果要繼續(xù)操作, 必須重新置入計(jì)數(shù)初值n。如果在操作的過程中,gate變?yōu)闊o效,則停止減“1”計(jì)數(shù), 到gate再次有效時(shí),重新從初值開始減“1”計(jì)數(shù)。 顯然,利用這種工作方式可以完成定時(shí)功能,定時(shí)時(shí)間從裝入計(jì)數(shù)值n開始,則outi輸出負(fù)脈沖(表示定時(shí)時(shí)間到),其定時(shí)時(shí)間n×clk周期。 這種工作方式也可完成計(jì)數(shù)功能,它要求計(jì)數(shù)的事件以脈沖的方式從clki輸入,將計(jì)數(shù)次數(shù)作為計(jì)數(shù)初值裝入后,由clki端輸入的計(jì)數(shù)脈沖進(jìn)行減“

20、1”計(jì)數(shù),直到計(jì)數(shù)值為“0”,由outt端輸出負(fù)脈沖(表示計(jì)數(shù)次數(shù)到)。 當(dāng)然也可利用outj向cfu發(fā)出中斷請(qǐng)求。 因此工作方式4與工作方式0很相似,只是方式0在outi端輸出正階躍信號(hào)、方式4在outi端輸出負(fù)脈沖信號(hào)。 6.方式5:硬件觸發(fā)方式計(jì)數(shù) 工作方式5被稱為硬件觸發(fā)方式,其定時(shí)波形如圖9.3.9所示。進(jìn)入工作方式5, outi輸出高電平, 硬件觸發(fā)信號(hào)由gate端引入。 因此,開始時(shí)gate應(yīng)輸入為0, 裝入計(jì)數(shù)初值n后,減“1”計(jì)數(shù)并不工作,一定要等到硬件觸發(fā)信號(hào)由gate端引入一個(gè)正階躍信號(hào),減“1”計(jì)數(shù)才會(huì)開始,待計(jì)數(shù)值計(jì)到“0”, outi將輸出負(fù)脈沖,其寬度固定為一個(gè)c

21、lki周期,表示定時(shí)時(shí)間到或計(jì)數(shù)次數(shù)到。 這種工作方式下,當(dāng)計(jì)數(shù)值計(jì)到“0”后, 系統(tǒng)將自動(dòng)重新裝入計(jì)數(shù)值n,但并不開始計(jì)數(shù), 一定要等到由gate端引入的正跳沿,才會(huì)開始進(jìn)行減“1”計(jì)數(shù), 因此這是一種完全由gate端引入的觸發(fā)信號(hào)控制下的計(jì)數(shù)或定時(shí)功能。如果由clki輸入的是一定頻率的時(shí)鐘脈沖,那么可完成定時(shí)功能,定時(shí)時(shí)間從gate上升沿開始,到outi端輸出負(fù)脈沖結(jié)束。如果從clki端輸入的是要求計(jì)數(shù)的事件,則可完成計(jì)數(shù)功能,計(jì)數(shù)過程從gate上升沿開始,到outi輸出負(fù)脈沖結(jié)束。gate可由外部電路或控制現(xiàn)場產(chǎn)生,故硬件觸發(fā)方式由此而得名。 如果需要改變計(jì)數(shù)初值, cpu可在任何時(shí)候用

22、輸出指令裝入新的計(jì)數(shù)初值m,它將不影響正在進(jìn)行的操作過程, 而是到下一個(gè)計(jì)數(shù)操作周期才會(huì)按新的計(jì)數(shù)值進(jìn)行操作。 從上述各工作方式可看出,gate作為各通道的門控信號(hào),對(duì)于各種不同的工作方式,它所起的作用各不相同。在8253的應(yīng)用中,必須正確使用gate信號(hào),才能保證各通道的正常操作。 7.讀取計(jì)數(shù)器的當(dāng)前值 直接讀計(jì)數(shù)器:輸出鎖存器在非鎖存狀態(tài)會(huì)跟隨計(jì)數(shù)器計(jì)數(shù)的變化而變化,直接讀計(jì)數(shù)器是從鎖存器得到計(jì)數(shù)器的當(dāng)前值。但由于計(jì)數(shù)器處于工作狀態(tài),讀出值不一定能穩(wěn)定。 先鎖存再讀?。和ㄟ^方式選擇控制字對(duì)指定通道(sc1、sc0)的計(jì)數(shù)值鎖入鎖存器(rl1rl0=00), 鎖存器一旦鎖存了當(dāng)前計(jì)數(shù)值,就

23、不再隨計(jì)數(shù)器變化直到被讀取。讀計(jì)數(shù)器通道(有鎖存器)。六、 分析與測試port_a8255 equ 200h ;8255a端口地址port_b8255 equ 201h ;8255b端口地址port_c8255 equ 202h ;8255c端口地址port_cs8255 equ 203h ;8255控制端口地址controlmode8255 equ 10001001b ;a口方式0,輸出,b口方式0,輸出,c口低4位輸入,高4位輸入port_a8253 equ 208h ;8253計(jì)時(shí)器0端口地址port_b8253 equ 209h ;8253計(jì)時(shí)器1端口地址port_c8253 equ

24、20ah ;8253計(jì)時(shí)器2端口地址port_cs8253 equ 20bh ;8253計(jì)時(shí)器控制端口地址clock0mode equ 00110100b ;計(jì)時(shí)器0的工作模式,0通道,先讀寫低字節(jié)后讀寫高字節(jié),方式2,2進(jìn)制計(jì)數(shù)clock0count equ 62500 ;計(jì)時(shí)器0的計(jì)數(shù)值clock1mode equ 01110000b ;計(jì)時(shí)器1的工作模式,1通道,先讀寫低字節(jié)后讀寫高字節(jié),方式0,2進(jìn)制計(jì)數(shù)clock1count equ 16 ;計(jì)時(shí)器1的計(jì)數(shù)值data_k equ 10 ;10進(jìn)制z8279 equ 212h ;8279命令字地址d8279 equ 210h ;8279

25、數(shù)據(jù)端口地址ledmod equ 00h ;左邊輸入,8位顯示,外部譯碼8位ledfeq equ 38h ;掃描頻率clock1end equ 04h ;截獲8255c口第三位輸入信息用于檢測clock1是否計(jì)時(shí)完畢code segment;主函數(shù)main proc far assume cs:code,ds:codestart: push cs pop ds call init8255 ;初始化8255 mov cx,0 ;清零mainloop: push cx lea bx,light ;將light的值賦給bx add bx,cx mov al,bx mov ah,00h mov dx,

26、port_b8255 out dx,allittleloop: call initclock0 ;初始化計(jì)時(shí)器0 call initclock1 ;初始化計(jì)時(shí)器1 call checkclock0over ;檢測定時(shí)器1是否定時(shí)1秒結(jié)束,從而截獲pc2的信息 lea bx,time pop cx cmp cx,00h je inc0 cmp cx,01h je inc1 cmp cx,02h je inc0 cmp cx,03h je inc1 jmp otherdealinc0: jmp maindealinc1: add bx,1maindeal: push cx mov al,bx mo

27、v ah,00h push bx push ax call display ;8279的顯示 pop ax dec ax ;ax=ax-1 pop bx mov bx,al cmp ax,00h jl resetdata ;比較后小于這個(gè)數(shù)就跳轉(zhuǎn)到這里 jmp littleloopresetdata: ;選擇亮不同的燈,0-3分別表示light的四種類型 pop cx inc cx cmp cx,00h je resetdata2 cmp cx,01h je resetdata1 cmp cx,02h je resetdata2 cmp cx,03h je resetdata1 jmp res

28、etdata2resetdata1: mov ax,5 lea bx,time add bx,1 jmp resetdata3 resetdata2: cmp cx,3 ja otherdeal mov ax,30 lea bx,time resetdata3: push cx mov bx,al pop cx jmp mainloop otherdeal: mov cx,0 lea bx,time mov ax,30 mov bx,al add bx,1 mov ax,5 mov bx,al jmp mainloop main endp;檢測定時(shí)器1是否定時(shí)1秒結(jié)束checkclock0ov

29、er proc near mov dx,port_c8255 ;8255c口地址compare: in al,dx and al,clock1end ;檢測計(jì)數(shù)器1是否工作結(jié)束(通過與運(yùn)算截獲第三位) cmp al,00h ;比較該位是否為低電平 je compare retcheckclock0over endp;這個(gè)函數(shù)負(fù)責(zé)將提取出的變量a的值輸出到led上,最大8位display proc near ;初始化8279 mov di,ax ;保存頻率至bx mov al,ledmod ;左邊輸入,八位顯示,外部譯碼八位顯示 mov dx,z8279 out dx,al mov al,led

30、feq ;掃描頻率 out dx,al;向led輸出數(shù)據(jù),顯示結(jié)果 mov cx,2first1: mov ax,di ;保存頻率至ax mov dx,00h mov si,data_k div si mov di,ax ;將商保存至bx mov ax,dx ;將余數(shù)保存至ax lea bx,led add ax,bx mov bx,ax mov ax,bxoutput1: mov dx,d8279 ;8279數(shù)據(jù)端口 out dx,al dec cx cmp cx,0 ja continu1 jmp next1continu1: jmp first1next1: mov cx,6 mov ax,00h mov dx,d8279cycle: out dx,al loop cycle ret display endp;初始化8255init8255 proc near mov dx,port_cs8255 ;8255控制口地址 mov al,controlmode8255 ;8255方式字 out dx,al retin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論