2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  硬件課程設(shè)計(jì)實(shí)踐報(bào)告</p><p>  題 目: 模擬交通燈控制系統(tǒng) </p><p>  班 級(jí): </p><p>  學(xué) 號(hào): </p><p>  姓 名: </

2、p><p>  指導(dǎo)教師: </p><p>  2013年 10 月 </p><p><b>  目 錄</b></p><p>  1交通燈開發(fā)背景及路況分析3</p><p>  1.1交通燈開發(fā)背景3</p><p>

3、;  1.2交通燈狀態(tài)變化分析··································&

4、#183;·······3</p><p>  1.3交通燈持續(xù)時(shí)間分析·······················

5、;···················3</p><p>  2 小組成員分工合作情況4</p><p><b>  2.1學(xué)生一4</b></p><p

6、><b>  2.2學(xué)生二4</b></p><p>  3 電路設(shè)計(jì)及主要功能4</p><p><b>  3.1功能簡介4</b></p><p>  3.1.1總體設(shè)計(jì)···········&#

7、183;····································

8、·······4</p><p>  3.1.2功能子模塊························

9、······························4</p><p><b>  3.2原理簡介

10、5</b></p><p>  3.2.1 8254芯片簡介····························

11、83;·····················5 3.2.2 8255芯片簡介···········&#

12、183;····································

13、··11</p><p>  3.2.3 8259芯片簡介····························&

14、#183;·····················13</p><p>  3.3系統(tǒng)實(shí)踐詳細(xì)分析·········

15、;··································15</p>&

16、lt;p>  3.4硬件連接示意圖·································&#

17、183;···········15</p><p>  4 系統(tǒng)軟件實(shí)現(xiàn)16</p><p>  4.1主體流程圖16</p><p>  4.2程序源代碼········&

18、#183;····································

19、;···18</p><p>  4.3運(yùn)行結(jié)果分析24</p><p>  5學(xué)生個(gè)人報(bào)告······················&#

20、183;··························24</p><p>  5.1子程序·····

21、;····································

22、83;············24</p><p>  5.2分析與測(cè)試··················

23、3;·······························28</p><p>  5.3結(jié)論與體

24、會(huì)····································

25、83;·············28</p><p>  參考文獻(xiàn)··················&#

26、183;····································

27、·28</p><p>  1 交通燈開發(fā)背景及路況分析</p><p>  1.1交通燈開發(fā)背景</p><p>  交通在人們的日常生活中占有重要的地位,隨著人們社會(huì)活動(dòng)的日益頻繁,交通也成了日常生活的一部分,在交通燈出現(xiàn)以前,如何有效的緩解交通壓力以及避免不必要的交通事故,這成了一個(gè)城市擁有良好的交通治安的前提。交通信號(hào)燈的出現(xiàn),使交通得以有效管制

28、,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。</p><p>  1.2交通燈狀態(tài)變化分析</p><p><b>  上午模式:</b></p><p>  1. 東西方向?yàn)榧t,南北方向?yàn)榫G,亮50秒。</p><p>  2. 東西方向?yàn)榧t,南北方向?yàn)樽蠊眨?0秒</p><p

29、>  3. 東西方向?yàn)辄S,南北方向?yàn)榧t,亮3秒</p><p>  4. 南北方向?yàn)榧t,東西方向?yàn)榫G,亮50秒。</p><p>  5. 南北方向?yàn)榧t,東西方向?yàn)樽蠊?,?0秒</p><p>  6.南北方向?yàn)辄S,東西方向?yàn)榧t,亮3秒</p><p>  7.重新由第一個(gè)狀態(tài)開始,不斷地循環(huán)。</p><p>

30、;<b>  下午模式:</b></p><p>  1. 東西方向?yàn)榧t,南北方向?yàn)榫G,亮40秒。</p><p>  2. 東西方向?yàn)榧t,南北方向?yàn)樽蠊眨?0秒</p><p>  3. 東西方向?yàn)辄S,南北方向?yàn)榧t,亮3秒</p><p>  4. 南北方向?yàn)榧t,東西方向?yàn)榫G,亮40秒。</p><

31、;p>  5. 南北方向?yàn)榧t,東西方向?yàn)樽蠊?,?0秒</p><p>  6.南北方向?yàn)辄S,東西方向?yàn)榧t,亮3秒</p><p>  7.重新由第一個(gè)狀態(tài)開始,不斷地循環(huán)。</p><p>  1.3交通燈持續(xù)時(shí)間分析</p><p>  按照實(shí)際情況來設(shè)置紅綠燈的交替。</p><p>  2 小組成員分工合

32、作情況</p><p><b>  2.1學(xué)生一: </b></p><p>  主要負(fù)責(zé)8259芯片的編寫,利用中斷調(diào)用實(shí)現(xiàn)上下午模式的切換。編寫8254,利用8255對(duì)8254波形的正負(fù)檢查實(shí)現(xiàn)定時(shí)1秒的功能。</p><p><b>  2.2學(xué)生二: </b></p><p>  負(fù)責(zé)利用8

33、255實(shí)現(xiàn)數(shù)碼管的顯示功能,利用led燈的輸出狀態(tài)實(shí)現(xiàn)交通燈的紅綠燈的模擬。</p><p>  3. 電路設(shè)計(jì)及主要功能</p><p><b>  3.1功能簡介</b></p><p><b>  3.1.1總體設(shè)計(jì)</b></p><p>  本實(shí)驗(yàn)包含的模塊為,8259切換模塊, 8254

34、定時(shí)模塊,八段數(shù)碼管顯示,led燈顯示模塊,各個(gè)模塊都通過總線連接到CPU,與CPU進(jìn)行通信,最后通過編寫匯編程序執(zhí)行相應(yīng)的命令,來控制整個(gè)交通燈的運(yùn)作。</p><p>  其中8254定時(shí)模塊實(shí)現(xiàn)定時(shí)一秒的功能,數(shù)碼管由8255控制顯示數(shù)字,LED燈也由8255控制模擬東西方向與南北方向的紅綠燈狀態(tài),8259實(shí)現(xiàn)上下午模式切換功能。</p><p>  3.1.2 功能子模塊</

35、p><p>  3.1.2.1 8254定時(shí)與數(shù)碼管顯示</p><p>  本實(shí)驗(yàn)由8255通過test指令來檢測(cè)8254的輸出波形的正負(fù),當(dāng)為正時(shí)由數(shù)碼管循環(huán)顯示當(dāng)前數(shù)字,當(dāng)為負(fù)依然循環(huán)顯示當(dāng)前數(shù),當(dāng)再次變?yōu)檎龝r(shí),數(shù)碼管顯示數(shù)字減一,循環(huán)至0時(shí),執(zhí)行下一指令。本實(shí)驗(yàn)把這一功能封裝到一個(gè)子程序中完成調(diào)用。</p><p>  3.1.2.2 LED燈顯示</

36、p><p>  本實(shí)驗(yàn)由8255控制完成led燈的顯示情況,借此來實(shí)現(xiàn)紅綠燈的模擬。</p><p>  3.1.2.3 8259中斷子程序</p><p>  包括上下午兩個(gè)中斷子程序,通過中斷的端口檢測(cè)是否有中斷申請(qǐng)來啟用上下午模式。</p><p><b>  3.2原理簡介</b></p><p

37、>  3.2.1 8254芯片簡介</p><p>  3.2.1.1 8254 功能介紹</p><p>  intel8254是NMOS工藝制成的可編程計(jì)數(shù)器/定時(shí)器,有幾種芯片型號(hào),外形引腳及功能都是兼容的,只是工作的最高計(jì)數(shù)速率有所差異,例如8254(2.6MHz),8254-5(5MHz)。</p><p>  圖2-1 8254引腳圖</

38、p><p>  8254內(nèi)部有三個(gè)計(jì)數(shù)器,分別稱為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2,他們的機(jī)構(gòu)完全相同。每個(gè)計(jì)數(shù)器的輸入和輸出都決定于設(shè)置在控制寄存器中的控制字,互相之間工作完全獨(dú)立。每個(gè)計(jì)數(shù)器通過三個(gè)引腳和外部聯(lián)系,一個(gè)為時(shí)鐘輸入端CLK,一個(gè)為門控信號(hào)輸入端GATE,另一個(gè)為輸出端OUT。每個(gè)計(jì)數(shù)器內(nèi)部有一個(gè)8位的控制寄存器,還有一個(gè)16位的計(jì)數(shù)初值寄存器CR、一個(gè)計(jì)數(shù)執(zhí)行部件CE和一個(gè)輸出鎖存器OL。 </p

39、><p>  執(zhí)行部件實(shí)際上是一個(gè)16位的減法計(jì)數(shù)器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過程序設(shè)置的。輸出鎖存器的值是通過程序設(shè)置的。輸出鎖存器OL用來鎖存計(jì)數(shù)執(zhí)行部件CE的內(nèi)容,從而使CPU可以對(duì)此進(jìn)行讀操作。順便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器來用。 </p><p>  3.2.1.2 8254工作原理</p><p

40、>  8254具有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í)。 </p><p>  3.2.1.3 8254內(nèi)部結(jié)構(gòu) </p><p>  8254芯片有24條引腳,封裝在雙列直插式陶瓷管殼內(nèi)。</p><p>  圖2-2 8254內(nèi)部結(jié)構(gòu)框圖</

41、p><p> ?。?)數(shù)據(jù)總線緩沖器 </p><p>  數(shù)據(jù)總線緩沖器與系統(tǒng)總線連接,8位雙向,與CPU交換信息的通道。這是8254與CPU之間的數(shù)據(jù)接口,它由8位雙向三態(tài)緩沖存儲(chǔ)器構(gòu)成,是CPU與8254之間交換信息的必經(jīng)之路。 </p><p><b> ?。?)讀/寫控制 </b></p><p>  表2.1 8

42、254 端口選擇</p><p>  讀/寫控制分別連接系統(tǒng)的IOR#和IOW#, 由CPU控制著訪問8254的內(nèi)部通道。接收CPU送入的讀/寫控制信號(hào), 并完成對(duì)芯片內(nèi)部各功能部件的控制功能, 因此, 它實(shí)際上是8254芯片內(nèi)部的控制器。A1A0:端口選擇信號(hào),由CPU輸入。8254內(nèi)部有3個(gè)獨(dú)立的通道,加上控制字寄存器,構(gòu)成8254芯片的4個(gè)端口,CPU可對(duì)3個(gè)通道進(jìn)行讀/寫操作3對(duì)控制字寄存器進(jìn)行寫操作。

43、這4個(gè)端口地址由最低2位地址碼A1和A0來選擇。如表所示。 </p><p><b>  (3)通道選擇 </b></p><p> ?、貱S——片選信號(hào),由CPU輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 </p><p> ?、赗D、WR——讀/寫控制命令,由CPU輸入, 低電平有效。RD效時(shí),CPU讀取由A1、A0所選定的通道內(nèi)

44、計(jì)數(shù)器的內(nèi)容。WR有效時(shí),CPU將計(jì)數(shù)值寫入各個(gè)通道的計(jì)數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。CPU對(duì)8254的讀/寫操作。 </p><p> ?。?)計(jì)數(shù)通道0~2 </p><p>  每個(gè)計(jì)數(shù)通道內(nèi)含1個(gè)16位的初值寄存器、減1計(jì)數(shù)器和1個(gè)16位的(輸出)鎖存器。8254內(nèi)部包含3個(gè)功能完全相同的通道,每個(gè)通道內(nèi)部設(shè)有一個(gè)16位計(jì)數(shù)器,可進(jìn)行二進(jìn)制或十進(jìn)制(BCD碼)計(jì)數(shù)

45、。采用二進(jìn)制計(jì)數(shù)時(shí), 寫入的初值范圍為0000H~0FFFFH,最大計(jì)數(shù)值是0000H,代表65536。 采用BCD碼計(jì)數(shù)時(shí),寫入的初值范圍為0000~9999,最大計(jì)數(shù)值是0000,代表10000。與此計(jì)數(shù)器相對(duì)應(yīng),每個(gè)通道內(nèi)設(shè)有一個(gè)16位計(jì)數(shù)值鎖存器。必要時(shí)可用來鎖存計(jì)數(shù)值。(特別說明:8254計(jì)數(shù)器的值先減1再判斷是否為0,為0就中斷了,所以最大初始值為0,這樣減1以后,不為0,所以為最大的,取決于CF標(biāo)志位) </p>

46、;<p>  當(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í)間到。

47、允許從CLK輸入的時(shí)鐘頻在1~2MHz范圍內(nèi)。因此,任一通道作計(jì)數(shù)器用或作定時(shí)器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計(jì)數(shù)脈沖進(jìn)行減“1”計(jì)數(shù)。 而后者是內(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)算才能得到: </p><p>  定時(shí)系數(shù)=需要定時(shí)的時(shí)間/時(shí)鐘脈沖周期</p&g

48、t;<p>  ①設(shè)置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; </p><p> ?、谟?jì)數(shù)/定時(shí):向通道寫入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)操作; </p><p> ?、圩x取當(dāng)前的計(jì)數(shù)值:向指定通道讀取當(dāng)前計(jì)數(shù)器值時(shí),8254將計(jì)數(shù)器值存入鎖存器,從鎖存器向外提供當(dāng)前的計(jì)數(shù)器值,計(jì)數(shù)器則繼續(xù)作計(jì)數(shù)操作。 </p><p> 

49、?、苡?jì)數(shù)到:當(dāng)計(jì)數(shù)器減1為0時(shí),通過引腳OUT向外輸出“到”的脈沖信號(hào)。 </p><p>  計(jì)數(shù)初值輸入存放在初值寄存器中,計(jì)數(shù)開始或重裝入時(shí)被復(fù)制到計(jì)數(shù)器中。 </p><p>  鎖存器在非鎖存狀態(tài),其值隨計(jì)數(shù)器的變化而變化;一旦鎖存了計(jì)數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 </p><p>  (5)方式選擇控制字 </p>

50、<p>  圖2-3 8254方式控制字</p><p>  8254的初始化編程就是對(duì)其工作方式的確定。具體實(shí)現(xiàn)就是在8254上電后,由CPU向8254的控制寄存器寫入一個(gè)控制字,就可以規(guī)定8254的工作方式、計(jì)數(shù)值的長度以及計(jì)數(shù)所用的數(shù)制等,另外根據(jù)要求將計(jì)數(shù)值寫入8254的相應(yīng)通道。 </p><p>  8254的一個(gè)方式控制字只決定一個(gè)技術(shù)通道的工作模式。 </p

51、><p>  3.2.1.4 8254的通道工作方式 </p><p>  8254中各通道可有6種可供選擇的工作方式,以完成定時(shí)、計(jì)數(shù)或脈沖發(fā)生器等多種功能。在這次設(shè)計(jì)中我們只用到了方式2和方式3,8254的這兩種工作方式如下: </p><p>  (1)方式2:速率波發(fā)生器 </p><p>  工作方式2被稱作速率波發(fā)生器。進(jìn)入這種工作

52、方式, OUT輸出高電平,裝入計(jì)數(shù)值n后如果GATE為高電平,則立即開始計(jì)數(shù),OUT保持為高電平不變; 待計(jì)數(shù)值減到“1”和“0”之間, OUT將輸出寬度為一個(gè)CLK周期的負(fù)脈沖,計(jì)數(shù)值為“0”時(shí),自動(dòng)重新裝入計(jì)數(shù)初值n,實(shí)現(xiàn)循環(huán)計(jì)數(shù),OUT將輸出一定頻率的負(fù)脈沖序列, 其脈沖寬度固定為一個(gè)CLK周期, 重復(fù)周期為CLK周期的n倍。 </p><p>  如果在減“1”計(jì)數(shù)過程中,GATE變?yōu)闊o效(輸入0電平),

53、則暫停減“1”計(jì)數(shù),待GATE恢復(fù)有效后,從初值n開始重新計(jì)數(shù)。這樣會(huì)改變輸出脈沖的速率。</p><p>  如果在操作過程中要求改變輸出脈沖的速率,CPU可在任何時(shí)候,重新寫人新的計(jì)數(shù)值, 它不會(huì)影響正在進(jìn)行的減“1”計(jì)數(shù)過程,而是從下一個(gè)計(jì)數(shù)操作用期開始按新的計(jì)數(shù)值改變輸出脈沖的速率。</p><p> ?。?)方式3:方波發(fā)生器 </p><p>  工作方

54、式3被稱作方波發(fā)生器。任一通道工作在方式3, 只在計(jì)數(shù)值n為偶數(shù),則可輸出重復(fù)周期為n、占空比為1:1的方波。 </p><p>  進(jìn)入工作方式3,OUT輸出低電平, 裝入計(jì)數(shù)值后,OUT立即跳變?yōu)楦唠娖健H绻?dāng)GATE為高電平, 則立即開始減“1”計(jì)數(shù),OUT保持為高電平,若n為偶數(shù),則當(dāng)計(jì)數(shù)值減到n/2時(shí),OUT跳變?yōu)榈碗娖剑恢北3值接?jì)數(shù)值為“0”,系統(tǒng)才自動(dòng)重新置入計(jì)數(shù)值n,實(shí)現(xiàn)循環(huán)計(jì)數(shù)。這時(shí)OUT端輸

55、出的周期為n×CLK周期,占空比為1:1的方波序列; 若n為奇數(shù), 則OUT端輸出周期為n×CLK周期,占空比為((n+1)/2)/((n-1)/2)的近似方波序列。 </p><p>  如果在操作過程中, GATE變?yōu)闊o效,則暫停減“1”計(jì)數(shù)過程,直到GATE再次有效,重新從初值n開始減“l(fā)”計(jì)數(shù)。 </p><p>  如果要求改變輸出方波的速率, 則CPU可在任

56、何時(shí)候重新裝入新的計(jì)數(shù)初值n,并從下一個(gè)計(jì)數(shù)操作周期開始改變輸出方波的速率。 </p><p>  3. 2.1.5 讀取計(jì)數(shù)器的當(dāng)前值 </p><p> ?、胖苯幼x計(jì)數(shù)器:輸出鎖存器在非鎖存狀態(tài)會(huì)跟隨計(jì)數(shù)器計(jì)數(shù)的變化而變化,直接讀計(jì)數(shù)器是從鎖存器得到計(jì)數(shù)器的當(dāng)前值。但由于計(jì)數(shù)器處于工作狀態(tài),讀出值不一定能穩(wěn)定。 </p><p><b> ?、葡孺i存再

57、讀?。?lt;/b></p><p> ?、偻ㄟ^方式選擇控制字對(duì)指定通道(SC1、SC0)的計(jì)數(shù)值鎖入鎖存器(RL1RL0=00), 鎖存器一旦鎖存了當(dāng)前計(jì)數(shù)值,就不再隨計(jì)數(shù)器變化直到被讀取。</p><p> ?、谧x計(jì)數(shù)器通道(有鎖存器)。</p><p>  3. 2.1.6 8254的級(jí)聯(lián)和地址分配</p><p>  8353采

58、用級(jí)聯(lián)方式。此實(shí)驗(yàn)中使用8254的0通道和1通道以實(shí)現(xiàn)級(jí)聯(lián)。</p><p>  通道0的工作在實(shí)驗(yàn)中起到的作用是在OUT0端輸出一個(gè)比較合適的時(shí)鐘頻率,然后用通道1進(jìn)行時(shí)間的控制。通道1在控制燈閃爍的時(shí)候采用的工作方式是方式3,這樣可以讓8255的A端口檢測(cè)到輸出端的方波信號(hào)。</p><p>  3.2.1.7 8254使用情況</p><p>  3.2.2

59、. 8255芯片簡介</p><p>  3.2.2.1 8255的基本工作原理</p><p>  8255 是Intel公司生產(chǎn)的可編程輸入輸出接口芯片,它是具有3個(gè)8位的并行I/O端口,具有三種工作方式,被廣泛地使用于單片機(jī)的并行I/O端口。</p><p>  ●  工作方式0:基本輸入輸出方式</p><p>

60、  ●  工作方式1:選通輸入輸出方式</p><p>  ● 工作方式2:雙向傳送方式</p><p>  圖2-4 8255引腳圖</p><p>  圖2-5 8255工作方式控制字</p><p>  圖2-6 8255 C口按位置位控制字</p><p>  3.2.2.2

61、 8255的內(nèi)部結(jié)構(gòu)</p><p>  圖2-7 8255內(nèi)部結(jié)構(gòu)</p><p>  3.2.2.3 8255引腳功能說明</p><p>  RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。</p><p>  PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出

62、鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。</p><p>  PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器。 </p><p>  PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作

63、為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。</p><p>  CS:片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊。</p><p>  RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p>  WR:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許CP

64、U將數(shù)據(jù)或控制字寫8255。 </p><p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p><p>  3.2.2.4 8255的讀寫控制</p><p>  8255的讀/寫控制邏輯電路接受CPU 發(fā)來的控制口號(hào)RD、WR、RESET

65、和地址信號(hào)A1~A0。然后根據(jù)命令端口,控制信號(hào)的要求,將端口的數(shù)據(jù)讀出選信CPU或者將CPU 送來的數(shù)據(jù)寫入端口,各端口的工作狀態(tài)。如表所示。</p><p>  通過用輸出指令對(duì)8255A的控制字寄存器編程,寫入設(shè)定工作方式的控制字,可以讓3個(gè)數(shù)據(jù)口以不同的方式工作,端口A可工作于3種方式的任一種,端口B只能工作于方式0和方式1,端口C除了用于輸入輸出端口外,還能配合A口和B口工作,為這兩個(gè)端口的輸入輸出操作

66、提供聯(lián)系信號(hào)。</p><p>  3.2.3 8259芯片簡介</p><p>  中斷控制器是專門用來處理中斷的控制芯片。8259A就是一個(gè)可編程的8輸入端中斷控制器,它將中斷源按優(yōu)先級(jí)排隊(duì)、辨認(rèn)中斷源和提供中斷向量的電路集成于一體,只要用軟件對(duì)它進(jìn)行編程,就可以管理8級(jí)中斷。</p><p>  8259A中斷控制器包括8個(gè)主要功能部件:中斷請(qǐng)求寄存器 (IR

67、R)、中斷服務(wù)寄存器 (ISR)、中斷屏蔽寄存器(IMR) 、優(yōu)先級(jí)判別器 (PR) 、數(shù)據(jù)總線緩沖器 、讀/寫邏輯 、級(jí)聯(lián)緩沖器/比較器 、控制邏輯 </p><p>  圖 4-2 8259A的內(nèi)部結(jié)構(gòu)</p><p>  對(duì)8259A編程和初始化的時(shí)候,首先要寫初始化命令字ICW1-ICW4。</p><p>  寫ICW1以確定中斷請(qǐng)求信號(hào)類型,清除中斷屏

68、蔽寄存器,進(jìn)行中斷優(yōu)先級(jí)排隊(duì)和確定系統(tǒng)是用單片還是多片。</p><p>  寫ICW2用來定義中斷向量的高五位類型碼。</p><p>  ICW3可以定義主片8259A中斷請(qǐng)求線上IR0-IR7有無級(jí)聯(lián)的8259A從片。</p><p>  寫ICW4用來定義8259A工作時(shí)用8085模式還是8088模式,以及中斷服務(wù)寄存器復(fù)位方式等。</p>&

69、lt;p>  初始化命令字寫完以后,要寫8259A的控制命令字,它包括OCW1-OCW3。</p><p>  寫OCW1可以設(shè)置或清除對(duì)中斷源的屏蔽。</p><p>  寫OCW2設(shè)置優(yōu)先級(jí)是否進(jìn)行循環(huán)、循環(huán)的方式和中斷結(jié)束的方式。8259A復(fù)位時(shí)自動(dòng)設(shè)置IR0優(yōu)先權(quán)最高,IR7優(yōu)先權(quán)最低。</p><p>  寫OCW3用來設(shè)置查詢方式和特殊屏蔽方式,并

70、可以讀取8259A中斷寄存器的當(dāng)前狀態(tài)。</p><p>  在本系統(tǒng)中,使用8259A的循環(huán)等待中斷工作方式。</p><p>  3.3 系統(tǒng)運(yùn)行過程的詳細(xì)分析</p><p>  將8254的定時(shí)程序與數(shù)碼管的顯示程序分別封裝到一個(gè)子程序中,完成主程序的調(diào)用,其中,數(shù)字一秒減一的功能由8255通過test指令來檢測(cè)8254的輸出波形的正負(fù),當(dāng)為正時(shí)由數(shù)碼管循

71、環(huán)顯示當(dāng)前數(shù)字,當(dāng)為負(fù)依然循環(huán)顯示當(dāng)前數(shù),當(dāng)再次變?yōu)檎龝r(shí),數(shù)碼管顯示數(shù)字減一,循環(huán)至0時(shí),就完成本次子程序的調(diào)用,進(jìn)行主程序中的下一條指令。主程序開始就通過8255控制led燈的顯示狀態(tài),接著調(diào)用檢測(cè)顯示程序完成數(shù)碼管倒計(jì)時(shí)顯示功能,完成后跳到下一狀態(tài),依次進(jìn)行。</p><p><b>  3.4硬件連接</b></p><p><b>  8255<

72、;/b></p><p>  3.4.1 8255連接示意圖</p><p>  3.4.2 8259 連接示意圖</p><p>  3.4.3 8254連接示意圖</p><p><b>  4.系統(tǒng)軟件實(shí)現(xiàn)</b></p><p><b>  4.1主體流程圖</b

73、></p><p><b>  4.2程序源代碼</b></p><p>  ;*******************</p><p>  ;* 8254分頻 *</p><p>  ;*******************</p><p>  io8254a E

74、QU 280H</p><p>  io8254b EQU 281H</p><p>  io82534c EQU 283H</p><p>  I8259_1 EQU 2B0H ;8259的ICW1端口地址</p><p>  I8259_2 EQU 2B1H ;8259的ICW

75、2端口地址</p><p>  I8259_3 EQU 2B1H ;8259的ICW3端口地址</p><p>  I8259_4 EQU 2B1H ;8259的ICW4端口地址</p><p>  O8259_1 EQU 2B1H ;8259的OCW1端口地址</p><p>  O82

76、59_2 EQU 2B0H ;8259的OCW2端口地址</p><p>  O8259_3 EQU 2B0H ;8259的OCW3端口地址</p><p>  ;*******************</p><p>  ;* 8255 *</p><p>  ;***************

77、****</p><p>  PORTCON EQU 28BH ;8255控制端</p><p>  PORTA EQU 288H ;8255A口地址</p><p>  PORTC EQU 28AH ;8255C口地址</p><p>  PORTB EQU

78、289H ;8255B口地址</p><p>  DATA SEGMENT </p><p>  LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH</p><p><b>  DATA ENDS</b></p><p>  STACKS SEGMENT<

79、/p><p><b>  S DW ?</b></p><p><b>  G DW ?</b></p><p>  ENDS STACKS</p><p>  CODE SEGMENT </p><p>  ASSUME CS:CODE,DS:DATA,SS:STACKS<

80、;/p><p><b>  START:</b></p><p>  MOV DX,I8259_1 ;初始化8259的ICW1</p><p>  MOV AL,13H ;邊沿觸發(fā)、單片8259、需要ICW4</p><p>  OUT DX,AL</p><

81、p>  MOV DX,I8259_2 ;初始化8259的ICW4</p><p>  MOV AL,0B0H ;非自動(dòng)結(jié)束EOI</p><p>  OUT DX,AL</p><p>  ;MOV AL,00H</p><p>  ;OUT DX,AL</p><p

82、>  MOV AL,03H</p><p>  OUT DX,AL</p><p>  MOV DX,O8259_1 ;初始化8259的OCW1</p><p>  MOV AL,00H ;打開IR0和IR1的屏蔽位</p><p>  OUT DX,AL</p><p

83、><b>  ;8254初始化</b></p><p>  mov dx,io8254c ;向8254寫控制字</p><p>  mov al,36h ;使0通道為工作方式3</p><p><b>  out dx,al</b></p><p>  mov ax,100

84、0 ;寫入循環(huán)計(jì)數(shù)初值1000</p><p>  mov dx,io8254a</p><p>  out dx,al ;先寫入低字節(jié)</p><p><b>  mov al,ah</b></p><p>  out dx,al ;后寫入高字節(jié)</p><p&

85、gt;  mov dx,io8254c</p><p>  mov al,76h ;設(shè)8254通道1工作方式2</p><p><b>  out dx,al</b></p><p>  mov ax,1000 ;寫入循環(huán)計(jì)數(shù)初值1000</p><p>  mov dx,io8254b</p

86、><p>  out dx,al ;先寫低字節(jié)</p><p><b>  mov al,ah</b></p><p>  out dx,al ;后寫高字節(jié)</p><p><b>  ;8255初始化</b></p><p>  MOV AX,STA

87、CKS</p><p><b>  MOV SS,AX</b></p><p>  MOV AX,DATA</p><p><b>  MOV DS,AX</b></p><p>  MOV DX,PORTCON</p><p>  MOV AL,88H</p>

88、<p><b>  OUT DX,AL</b></p><p>  LEA SI,LED</p><p>  QUERY PROC NEAR</p><p>  MOV AH,1 ;判斷是否有按鍵按下</p><p><b>  INT 16H</b>&

89、lt;/p><p>  JNZ QUIT ;有按鍵則退出</p><p>  MOV DX,O8259_3 ;向8259的OCW3發(fā)送查詢命令</p><p>  MOV AL,0CH</p><p>  OUT DX,AL</p><p>  IN AL,DX

90、 ;讀出查詢字</p><p>  MOV AH,AL</p><p>  AND AL,80H</p><p>  TEST AL,80H ;判斷中斷是否已響應(yīng)</p><p>  JZ QUERY </p><p>  MOV AL,AH <

91、/p><p>  AND AL,07H</p><p>  CMP AL,06H</p><p><b>  JE Z1</b></p><p>  CMP AL,07H</p><p><b>  JE P</b></p><p>  JM

92、P QUERY</p><p><b>  Z1:CALL Z</b></p><p><b>  JNE P</b></p><p><b>  RET</b></p><p>  QUERY ENDP</p><p><b>  EO

93、I: </b></p><p>  MOV DX,O8259_2 ;向8259發(fā)送中斷結(jié)束命令</p><p>  MOV AL,20H</p><p>  OUT DX,AL</p><p>  JMP QUERY</p><p>  QUIT: MOV AX,4C00H

94、 ;結(jié)束程序退出</p><p><b>  INT 21H</b></p><p>  CALL QUERY</p><p><b>  P:</b></p><p>  MOV AL,10010001B ;東西紅,南北左拐</p><p><

95、;b>  MOV S,2H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  

96、MOV AL,10000001B ;東西紅,南北綠</p><p><b>  MOV S,4H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p

97、><p>  CALL JIANCE</p><p>  MOV AL,00100010B ;東西黃,南北紅</p><p><b>  MOV S,0H</b></p><p><b>  MOV G,3H</b></p><p>  MOV DX,PORTB </p

98、><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,00101100B ;東西左拐,南北紅</p><p><b>  MOV S,2H</b></p><p><b>  MOV G,0H

99、</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,00100100B ;東西綠,南北紅</p><p><b>  MOV S,4

100、H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,01000001

101、B ;東西紅,南北黃</p><p><b>  MOV S,0H</b></p><p><b>  MOV G,3H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>

102、  CALL JIANCE</p><p><b>  JMP P</b></p><p>  Z PROC NEAR</p><p><b>  Z:</b></p><p>  MOV AL,10010001B ;東西紅,南北左拐</p><p><b> 

103、 MOV S,1H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,

104、10000001B ;東西紅,南北綠</p><p><b>  MOV S,3H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p>&

105、lt;p>  CALL JIANCE</p><p>  MOV AL,00100010B ;東西黃,南北紅</p><p><b>  MOV S,0H</b></p><p><b>  MOV G,3H</b></p><p>  MOV DX,PORTB </p>&

106、lt;p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,00101100B ;東西左拐,南北紅</p><p><b>  MOV S,1H</b></p><p><b>  MOV G,0H</b&

107、gt;</p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,00100100B ;東西綠,南北紅</p><p><b>  MOV S,3H</b

108、></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p>  MOV AL,01000001B ;東西

109、紅,南北黃</p><p><b>  MOV S,0H</b></p><p><b>  MOV G,3H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL

110、JIANCE</p><p><b>  JMP Z</b></p><p><b>  RET</b></p><p><b>  Z ENDP</b></p><p>  XIANSHI PROC NEAR</p><p>  MOV DX,P

111、ORTC</p><p>  MOV AL,00H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,PORTA</p><p><b>  MOV BX,S</b></p><p>  MOV AL,[SI+BX]</p>

112、<p><b>  OUT DX,AL</b></p><p>  MOV DX,PORTC</p><p>  MOV AL,02H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,PORTC</p><p>  MO

113、V AL,00H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,PORTA</p><p><b>  MOV BX,G</b></p><p>  MOV AL,[SI+BX]</p><p><b>  OUT DX,

114、AL</b></p><p>  MOV DX,PORTC</p><p>  MOV AL,01H</p><p><b>  OUT DX,AL</b></p><p><b>  RET</b></p><p>  XIANSHI ENDP</p>

115、;<p>  JIANCE PROC NEAR </p><p><b>  P1:</b></p><p>  CALL XIANSHI</p><p>  MOV DX,PORTC</p><p><b>  IN AL,DX</b></p><p

116、>  AND AL,40H</p><p>  CMP AL,40H</p><p><b>  JE P1</b></p><p><b>  P2:</b></p><p>  CALL XIANSHI</p><p>  MOV DX,PORTC</p&g

117、t;<p><b>  IN AL,DX</b></p><p>  AND AL,40H</p><p>  CMP AL,40H</p><p><b>  JNE P2</b></p><p><b>  DEC G</b></p><

118、p><b>  JNS P1</b></p><p><b>  MOV G,9H</b></p><p><b>  DEC S</b></p><p><b>  JNS P1</b></p><p><b>  RET</b&g

119、t;</p><p>  JIANCE ENDP</p><p>  CODE ENDS </p><p><b>  END START</b></p><p><b>  4.3運(yùn)行結(jié)果分析</b></p><p>  開始運(yùn)行時(shí),首先選擇上下午模式,在選擇一個(gè)模式之后,

120、比如說上午,東西方向?yàn)榧t,南北方向?yàn)榫G,亮50秒。東西方向?yàn)榧t,南北方向?yàn)樽蠊眨?0秒。東西方向?yàn)辄S,南北方向?yàn)榧t,亮3秒。 南北方向?yàn)榧t,東西方向?yàn)榫G,亮50秒。 南北方向?yàn)榧t,東西方向?yàn)樽蠊?,?0秒。南北方向?yàn)辄S,東西方向?yàn)榧t,亮3秒。重新由第一個(gè)狀態(tài)開始,不斷地循環(huán)。在執(zhí)行另一模式時(shí),必須重啟實(shí)驗(yàn)箱,然后重復(fù)上述過程。</p><p>  5.學(xué)生個(gè)人實(shí)踐報(bào)告</p><p>&

121、lt;b>  5.1子程序</b></p><p>  ;*******************</p><p>  ;* 8254分頻 *</p><p>  ;*******************</p><p>  io8253a equ 280h</p><p>

122、  io8253b equ 281h</p><p>  io8253c equ 283h</p><p>  I8259_1 EQU 2B0H ;8259的ICW1端口地址</p><p>  I8259_2 EQU 2B1H ;8259的ICW2端口地址</p><p>  I

123、8259_3 EQU 2B1H ;8259的ICW3端口地址</p><p>  I8259_4 EQU 2B1H ;8259的ICW4端口地址</p><p>  O8259_1 EQU 2B1H ;8259的OCW1端口地址</p><p>  O8259_2 EQU 2B0H ;8259的

124、OCW2端口地址</p><p>  O8259_3 EQU 2B0H ;8259的OCW3端口地址</p><p>  CODE SEGMENT</p><p>  ;*******************</p><p>  ;* 8255 *</p><p>  ;*********

125、**********</p><p>  PORTCON EQU 28BH ;8255控制端</p><p>  PORTA EQU 288H ;8255A口地址</p><p>  PORTC EQU 28AH ;8255C口地址</p><p>  PORTB EQU 289

126、H ;8255B口地址</p><p>  DATA SEGMENT </p><p>  LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH</p><p><b>  DATA ENDS</b></p><p>  STACKS SEGMENT</p

127、><p><b>  S DW ?</b></p><p><b>  G DW ?</b></p><p>  ENDS STACKS</p><p>  CODE SEGMENT </p><p>  ASSUME CS:CODE,DS:DATA,SS:STACKS</

128、p><p><b>  START:</b></p><p>  MOV DX,I8259_1 ;初始化8259的ICW1</p><p>  MOV AL,13H ;邊沿觸發(fā)、單片8259、需要ICW4</p><p>  OUT DX,AL</p><p&

129、gt;  MOV DX,I8259_2 ;初始化8259的ICW4</p><p>  MOV AL,0B0H ;非自動(dòng)結(jié)束EOI</p><p>  OUT DX,AL</p><p>  ;MOV AL,00H</p><p>  ;OUT DX,AL</p><p&g

130、t;  MOV AL,03H</p><p>  OUT DX,AL</p><p>  MOV DX,O8259_1 ;初始化8259的OCW1</p><p>  MOV AL,00H ;打開IR0和IR1的屏蔽位</p><p>  OUT DX,AL</p><p&g

131、t;<b>  ;8254初始化</b></p><p>  mov dx,io8253c ;向8254寫控制字</p><p>  mov al,36h ;使0通道為工作方式3</p><p><b>  out dx,al</b></p><p>  mov ax,1000

132、 ;寫入循環(huán)計(jì)數(shù)初值1000</p><p>  mov dx,io8253a</p><p>  out dx,al ;先寫入低字節(jié)</p><p><b>  mov al,ah</b></p><p>  out dx,al ;后寫入高字節(jié)</p><p>

133、;  mov dx,io8253c</p><p>  mov al,76h ;設(shè)8254通道1工作方式2</p><p><b>  out dx,al</b></p><p>  mov ax,1000 ;寫入循環(huán)計(jì)數(shù)初值1000</p><p>  mov dx,io8253b</p&g

134、t;<p>  out dx,al ;先寫低字節(jié)</p><p><b>  mov al,ah</b></p><p>  out dx,al ;后寫高字節(jié)</p><p><b>  ;8255初始化</b></p><p>  MOV AX,STACK

135、S</p><p><b>  MOV SS,AX</b></p><p>  MOV AX,DATA</p><p><b>  MOV DS,AX</b></p><p>  MOV DX,PORTCON</p><p>  MOV AL,88H</p>&

136、lt;p><b>  OUT DX,AL</b></p><p>  LEA SI,LED</p><p>  QUERY PROC NEAR</p><p>  MOV AH,1 ;判斷是否有按鍵按下</p><p><b>  INT 16H</b><

137、;/p><p>  JNZ QUIT ;有按鍵則退出</p><p>  MOV DX,O8259_3 ;向8259的OCW3發(fā)送查詢命令</p><p>  MOV AL,0CH</p><p>  OUT DX,AL</p><p>  IN AL,DX

138、 ;讀出查詢字</p><p>  MOV AH,AL</p><p>  AND AL,80H</p><p>  TEST AL,80H ;判斷中斷是否已響應(yīng)</p><p>  JZ QUERY </p><p>  MOV AL,AH </p

139、><p>  AND AL,07H</p><p>  CMP AL,06H</p><p><b>  JE Z1</b></p><p>  CMP AL,07H</p><p><b>  JE P</b></p><p>  JMP

140、 QUERY</p><p><b>  Z1:CALL Z</b></p><p><b>  JNE P</b></p><p><b>  RET</b></p><p>  QUERY ENDP</p><p><b>  EOI:

141、 </b></p><p>  MOV DX,O8259_2 ;向8259發(fā)送中斷結(jié)束命令</p><p>  MOV AL,20H</p><p>  OUT DX,AL</p><p>  JMP QUERY</p><p>  QUIT: MOV AX,4C00H

142、 ;結(jié)束程序退出</p><p><b>  INT 21H</b></p><p>  CALL QUERY</p><p><b>  P:</b></p><p>  MOV AL,10010001B ;東西紅,南北左拐</p><p><b

143、>  MOV S,2H</b></p><p><b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p><

144、b>  JMP P</b></p><p>  Z PROC NEAR</p><p><b>  Z:</b></p><p>  MOV AL,10010001B ;東西紅,南北左拐</p><p><b>  MOV S,1H</b></p><p&g

145、t;<b>  MOV G,0H</b></p><p>  MOV DX,PORTB </p><p><b>  OUT DX,AL</b></p><p>  CALL JIANCE</p><p><b>  JMP Z</b></p><p>

146、<b>  RET</b></p><p><b>  Z ENDP</b></p><p>  JIANCE PROC NEAR </p><p><b>  P1:</b></p><p>  CALL XIANSHI</p><p> 

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論