

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 硬件課程設計實踐報告</p><p> 題 目: 模擬交通燈控制系統(tǒng) </p><p> 班 級: </p><p> 學 號: </p><p> 姓 名: </
2、p><p> 指導教師: </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ù)時間分析·······················
5、;···················3</p><p> 2 小組成員分工合作情況4</p><p><b> 2.1學生一4</b></p><p
6、><b> 2.2學生二4</b></p><p> 3 電路設計及主要功能4</p><p><b> 3.1功能簡介4</b></p><p> 3.1.1總體設計···········
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)實踐詳細分析·········
15、;··································15</p>&
16、lt;p> 3.4硬件連接示意圖·································
17、183;···········15</p><p> 4 系統(tǒng)軟件實現(xiàn)16</p><p> 4.1主體流程圖16</p><p> 4.2程序源代碼········&
18、#183;····································
19、;···18</p><p> 4.3運行結(jié)果分析24</p><p> 5學生個人報告······················
20、183;··························24</p><p> 5.1子程序·····
21、;····································
22、83;············24</p><p> 5.2分析與測試··················
23、3;·······························28</p><p> 5.3結(jié)論與體
24、會····································
25、83;·············28</p><p> 參考文獻··················
26、183;····································
27、·28</p><p> 1 交通燈開發(fā)背景及路況分析</p><p> 1.1交通燈開發(fā)背景</p><p> 交通在人們的日常生活中占有重要的地位,隨著人們社會活動的日益頻繁,交通也成了日常生活的一部分,在交通燈出現(xiàn)以前,如何有效的緩解交通壓力以及避免不必要的交通事故,這成了一個城市擁有良好的交通治安的前提。交通信號燈的出現(xiàn),使交通得以有效管制
28、,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。</p><p> 1.2交通燈狀態(tài)變化分析</p><p><b> 上午模式:</b></p><p> 1. 東西方向為紅,南北方向為綠,亮50秒。</p><p> 2. 東西方向為紅,南北方向為左拐,亮20秒</p><p
29、> 3. 東西方向為黃,南北方向為紅,亮3秒</p><p> 4. 南北方向為紅,東西方向為綠,亮50秒。</p><p> 5. 南北方向為紅,東西方向為左拐,亮20秒</p><p> 6.南北方向為黃,東西方向為紅,亮3秒</p><p> 7.重新由第一個狀態(tài)開始,不斷地循環(huán)。</p><p>
30、;<b> 下午模式:</b></p><p> 1. 東西方向為紅,南北方向為綠,亮40秒。</p><p> 2. 東西方向為紅,南北方向為左拐,亮10秒</p><p> 3. 東西方向為黃,南北方向為紅,亮3秒</p><p> 4. 南北方向為紅,東西方向為綠,亮40秒。</p><
31、;p> 5. 南北方向為紅,東西方向為左拐,亮10秒</p><p> 6.南北方向為黃,東西方向為紅,亮3秒</p><p> 7.重新由第一個狀態(tài)開始,不斷地循環(huán)。</p><p> 1.3交通燈持續(xù)時間分析</p><p> 按照實際情況來設置紅綠燈的交替。</p><p> 2 小組成員分工合
32、作情況</p><p><b> 2.1學生一: </b></p><p> 主要負責8259芯片的編寫,利用中斷調(diào)用實現(xiàn)上下午模式的切換。編寫8254,利用8255對8254波形的正負檢查實現(xiàn)定時1秒的功能。</p><p><b> 2.2學生二: </b></p><p> 負責利用8
33、255實現(xiàn)數(shù)碼管的顯示功能,利用led燈的輸出狀態(tài)實現(xiàn)交通燈的紅綠燈的模擬。</p><p> 3. 電路設計及主要功能</p><p><b> 3.1功能簡介</b></p><p><b> 3.1.1總體設計</b></p><p> 本實驗包含的模塊為,8259切換模塊, 8254
34、定時模塊,八段數(shù)碼管顯示,led燈顯示模塊,各個模塊都通過總線連接到CPU,與CPU進行通信,最后通過編寫匯編程序執(zhí)行相應的命令,來控制整個交通燈的運作。</p><p> 其中8254定時模塊實現(xiàn)定時一秒的功能,數(shù)碼管由8255控制顯示數(shù)字,LED燈也由8255控制模擬東西方向與南北方向的紅綠燈狀態(tài),8259實現(xiàn)上下午模式切換功能。</p><p> 3.1.2 功能子模塊</
35、p><p> 3.1.2.1 8254定時與數(shù)碼管顯示</p><p> 本實驗由8255通過test指令來檢測8254的輸出波形的正負,當為正時由數(shù)碼管循環(huán)顯示當前數(shù)字,當為負依然循環(huán)顯示當前數(shù),當再次變?yōu)檎龝r,數(shù)碼管顯示數(shù)字減一,循環(huán)至0時,執(zhí)行下一指令。本實驗把這一功能封裝到一個子程序中完成調(diào)用。</p><p> 3.1.2.2 LED燈顯示</
36、p><p> 本實驗由8255控制完成led燈的顯示情況,借此來實現(xiàn)紅綠燈的模擬。</p><p> 3.1.2.3 8259中斷子程序</p><p> 包括上下午兩個中斷子程序,通過中斷的端口檢測是否有中斷申請來啟用上下午模式。</p><p><b> 3.2原理簡介</b></p><p
37、> 3.2.1 8254芯片簡介</p><p> 3.2.1.1 8254 功能介紹</p><p> intel8254是NMOS工藝制成的可編程計數(shù)器/定時器,有幾種芯片型號,外形引腳及功能都是兼容的,只是工作的最高計數(shù)速率有所差異,例如8254(2.6MHz),8254-5(5MHz)。</p><p> 圖2-1 8254引腳圖</
38、p><p> 8254內(nèi)部有三個計數(shù)器,分別稱為計數(shù)器0、計數(shù)器1和計數(shù)器2,他們的機構(gòu)完全相同。每個計數(shù)器的輸入和輸出都決定于設置在控制寄存器中的控制字,互相之間工作完全獨立。每個計數(shù)器通過三個引腳和外部聯(lián)系,一個為時鐘輸入端CLK,一個為門控信號輸入端GATE,另一個為輸出端OUT。每個計數(shù)器內(nèi)部有一個8位的控制寄存器,還有一個16位的計數(shù)初值寄存器CR、一個計數(shù)執(zhí)行部件CE和一個輸出鎖存器OL。 </p
39、><p> 執(zhí)行部件實際上是一個16位的減法計數(shù)器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通過程序設置的。輸出鎖存器的值是通過程序設置的。輸出鎖存器OL用來鎖存計數(shù)執(zhí)行部件CE的內(nèi)容,從而使CPU可以對此進行讀操作。順便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器來用。 </p><p> 3.2.1.2 8254工作原理</p><p
40、> 8254具有3個獨立的計數(shù)通道,采用減1計數(shù)方式。在門控信號有效時,每輸入1個計數(shù)脈沖,通道作1次計數(shù)操作。當計數(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)緩沖存儲器構(gòu)成,是CPU與8254之間交換信息的必經(jīng)之路。 </p><p><b> (2)讀/寫控制 </b></p><p> 表2.1 8
42、254 端口選擇</p><p> 讀/寫控制分別連接系統(tǒng)的IOR#和IOW#, 由CPU控制著訪問8254的內(nèi)部通道。接收CPU送入的讀/寫控制信號, 并完成對芯片內(nèi)部各功能部件的控制功能, 因此, 它實際上是8254芯片內(nèi)部的控制器。A1A0:端口選擇信號,由CPU輸入。8254內(nèi)部有3個獨立的通道,加上控制字寄存器,構(gòu)成8254芯片的4個端口,CPU可對3個通道進行讀/寫操作3對控制字寄存器進行寫操作。
43、這4個端口地址由最低2位地址碼A1和A0來選擇。如表所示。 </p><p><b> (3)通道選擇 </b></p><p> ?、貱S——片選信號,由CPU輸入,低電平有效,通常由端口地址的高位地址譯碼形成。 </p><p> ?、赗D、WR——讀/寫控制命令,由CPU輸入, 低電平有效。RD效時,CPU讀取由A1、A0所選定的通道內(nèi)
44、計數(shù)器的內(nèi)容。WR有效時,CPU將計數(shù)值寫入各個通道的計數(shù)器中, 或者是將方式控制字寫入控制字寄存器中。CPU對8254的讀/寫操作。 </p><p> ?。?)計數(shù)通道0~2 </p><p> 每個計數(shù)通道內(nèi)含1個16位的初值寄存器、減1計數(shù)器和1個16位的(輸出)鎖存器。8254內(nèi)部包含3個功能完全相同的通道,每個通道內(nèi)部設有一個16位計數(shù)器,可進行二進制或十進制(BCD碼)計數(shù)
45、。采用二進制計數(shù)時, 寫入的初值范圍為0000H~0FFFFH,最大計數(shù)值是0000H,代表65536。 采用BCD碼計數(shù)時,寫入的初值范圍為0000~9999,最大計數(shù)值是0000,代表10000。與此計數(shù)器相對應,每個通道內(nèi)設有一個16位計數(shù)值鎖存器。必要時可用來鎖存計數(shù)值。(特別說明:8254計數(shù)器的值先減1再判斷是否為0,為0就中斷了,所以最大初始值為0,這樣減1以后,不為0,所以為最大的,取決于CF標志位) </p>
46、;<p> 當某通道用作計數(shù)器時,應將要求計數(shù)的次數(shù)預置到該通道的計數(shù)器中、被計數(shù)的事件應以脈沖方式從CLK端輸入, 每輸入一個計數(shù)脈沖,計數(shù)器內(nèi)容減“1”,待計數(shù)值計到“0”。 OUT端將有輸出。表示計數(shù)次數(shù)到。當某個通道用作定時器時。 由CLK輸入一定頻率的時鐘脈沖。根據(jù)要求定時的時間長短確定所需的計數(shù)值。并預置到計數(shù)器中,每輸入一個時鐘脈沖,計數(shù)器內(nèi)容減“1”, 待計數(shù)值計到“0”。OUT將有輸出,表示定時時間到。
47、允許從CLK輸入的時鐘頻在1~2MHz范圍內(nèi)。因此,任一通道作計數(shù)器用或作定時器用,其內(nèi)部操作完全相同,區(qū)別僅在于前者是由計數(shù)脈沖進行減“1”計數(shù)。 而后者是內(nèi)時鐘脈沖進行減“1”計數(shù)。作計數(shù)器時, 要求計數(shù)的次數(shù)可直接作為計數(shù)器的初值預置到減“1”計數(shù)器中。作定時器時, 計數(shù)器的初值即定時系數(shù)應根據(jù)要求定時的時間進行如下運算才能得到: </p><p> 定時系數(shù)=需要定時的時間/時鐘脈沖周期</p&g
48、t;<p> ?、僭O置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設置的通道及工作方式; </p><p> ?、谟嫈?shù)/定時:向通道寫入計數(shù)值,啟動計數(shù)操作; </p><p> ③讀取當前的計數(shù)值:向指定通道讀取當前計數(shù)器值時,8254將計數(shù)器值存入鎖存器,從鎖存器向外提供當前的計數(shù)器值,計數(shù)器則繼續(xù)作計數(shù)操作。 </p><p>
49、?、苡嫈?shù)到:當計數(shù)器減1為0時,通過引腳OUT向外輸出“到”的脈沖信號。 </p><p> 計數(shù)初值輸入存放在初值寄存器中,計數(shù)開始或重裝入時被復制到計數(shù)器中。 </p><p> 鎖存器在非鎖存狀態(tài),其值隨計數(shù)器的變化而變化;一旦鎖存了計數(shù)器的當前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。 </p><p> (5)方式選擇控制字 </p>
50、<p> 圖2-3 8254方式控制字</p><p> 8254的初始化編程就是對其工作方式的確定。具體實現(xiàn)就是在8254上電后,由CPU向8254的控制寄存器寫入一個控制字,就可以規(guī)定8254的工作方式、計數(shù)值的長度以及計數(shù)所用的數(shù)制等,另外根據(jù)要求將計數(shù)值寫入8254的相應通道。 </p><p> 8254的一個方式控制字只決定一個技術(shù)通道的工作模式。 </p
51、><p> 3.2.1.4 8254的通道工作方式 </p><p> 8254中各通道可有6種可供選擇的工作方式,以完成定時、計數(shù)或脈沖發(fā)生器等多種功能。在這次設計中我們只用到了方式2和方式3,8254的這兩種工作方式如下: </p><p> (1)方式2:速率波發(fā)生器 </p><p> 工作方式2被稱作速率波發(fā)生器。進入這種工作
52、方式, OUT輸出高電平,裝入計數(shù)值n后如果GATE為高電平,則立即開始計數(shù),OUT保持為高電平不變; 待計數(shù)值減到“1”和“0”之間, OUT將輸出寬度為一個CLK周期的負脈沖,計數(shù)值為“0”時,自動重新裝入計數(shù)初值n,實現(xiàn)循環(huán)計數(shù),OUT將輸出一定頻率的負脈沖序列, 其脈沖寬度固定為一個CLK周期, 重復周期為CLK周期的n倍。 </p><p> 如果在減“1”計數(shù)過程中,GATE變?yōu)闊o效(輸入0電平),
53、則暫停減“1”計數(shù),待GATE恢復有效后,從初值n開始重新計數(shù)。這樣會改變輸出脈沖的速率。</p><p> 如果在操作過程中要求改變輸出脈沖的速率,CPU可在任何時候,重新寫人新的計數(shù)值, 它不會影響正在進行的減“1”計數(shù)過程,而是從下一個計數(shù)操作用期開始按新的計數(shù)值改變輸出脈沖的速率。</p><p> ?。?)方式3:方波發(fā)生器 </p><p> 工作方
54、式3被稱作方波發(fā)生器。任一通道工作在方式3, 只在計數(shù)值n為偶數(shù),則可輸出重復周期為n、占空比為1:1的方波。 </p><p> 進入工作方式3,OUT輸出低電平, 裝入計數(shù)值后,OUT立即跳變?yōu)楦唠娖?。如果當GATE為高電平, 則立即開始減“1”計數(shù),OUT保持為高電平,若n為偶數(shù),則當計數(shù)值減到n/2時,OUT跳變?yōu)榈碗娖?,一直保持到計?shù)值為“0”,系統(tǒng)才自動重新置入計數(shù)值n,實現(xiàn)循環(huán)計數(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”計數(shù)過程,直到GATE再次有效,重新從初值n開始減“l(fā)”計數(shù)。 </p><p> 如果要求改變輸出方波的速率, 則CPU可在任
56、何時候重新裝入新的計數(shù)初值n,并從下一個計數(shù)操作周期開始改變輸出方波的速率。 </p><p> 3. 2.1.5 讀取計數(shù)器的當前值 </p><p> ?、胖苯幼x計數(shù)器:輸出鎖存器在非鎖存狀態(tài)會跟隨計數(shù)器計數(shù)的變化而變化,直接讀計數(shù)器是從鎖存器得到計數(shù)器的當前值。但由于計數(shù)器處于工作狀態(tài),讀出值不一定能穩(wěn)定。 </p><p><b> ⑵先鎖存再
57、讀?。?lt;/b></p><p> ①通過方式選擇控制字對指定通道(SC1、SC0)的計數(shù)值鎖入鎖存器(RL1RL0=00), 鎖存器一旦鎖存了當前計數(shù)值,就不再隨計數(shù)器變化直到被讀取。</p><p> ②讀計數(shù)器通道(有鎖存器)。</p><p> 3. 2.1.6 8254的級聯(lián)和地址分配</p><p> 8353采
58、用級聯(lián)方式。此實驗中使用8254的0通道和1通道以實現(xiàn)級聯(lián)。</p><p> 通道0的工作在實驗中起到的作用是在OUT0端輸出一個比較合適的時鐘頻率,然后用通道1進行時間的控制。通道1在控制燈閃爍的時候采用的工作方式是方式3,這樣可以讓8255的A端口檢測到輸出端的方波信號。</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個8位的并行I/O端口,具有三種工作方式,被廣泛地使用于單片機的并行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:復位輸入線,當該輸入端外于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。</p><p> PA0~PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出
62、鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。</p><p> PB0~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 </p><p> PC0~PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作
63、為控制信號輸出或狀態(tài)信號輸入端口。</p><p> CS:片選信號線,當這個輸入引腳為低電平時,表示芯片被選中,允許8255與CPU進行通訊。</p><p> RD:讀信號線,當這個輸入引腳為低電平時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p> WR:寫入信號,當這個輸入引腳為低電平時,允許CP
64、U將數(shù)據(jù)或控制字寫8255。 </p><p> D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p><p> 3.2.2.4 8255的讀寫控制</p><p> 8255的讀/寫控制邏輯電路接受CPU 發(fā)來的控制口號RD、WR、RESET
65、和地址信號A1~A0。然后根據(jù)命令端口,控制信號的要求,將端口的數(shù)據(jù)讀出選信CPU或者將CPU 送來的數(shù)據(jù)寫入端口,各端口的工作狀態(tài)。如表所示。</p><p> 通過用輸出指令對8255A的控制字寄存器編程,寫入設定工作方式的控制字,可以讓3個數(shù)據(jù)口以不同的方式工作,端口A可工作于3種方式的任一種,端口B只能工作于方式0和方式1,端口C除了用于輸入輸出端口外,還能配合A口和B口工作,為這兩個端口的輸入輸出操作
66、提供聯(lián)系信號。</p><p> 3.2.3 8259芯片簡介</p><p> 中斷控制器是專門用來處理中斷的控制芯片。8259A就是一個可編程的8輸入端中斷控制器,它將中斷源按優(yōu)先級排隊、辨認中斷源和提供中斷向量的電路集成于一體,只要用軟件對它進行編程,就可以管理8級中斷。</p><p> 8259A中斷控制器包括8個主要功能部件:中斷請求寄存器 (IR
67、R)、中斷服務寄存器 (ISR)、中斷屏蔽寄存器(IMR) 、優(yōu)先級判別器 (PR) 、數(shù)據(jù)總線緩沖器 、讀/寫邏輯 、級聯(lián)緩沖器/比較器 、控制邏輯 </p><p> 圖 4-2 8259A的內(nèi)部結(jié)構(gòu)</p><p> 對8259A編程和初始化的時候,首先要寫初始化命令字ICW1-ICW4。</p><p> 寫ICW1以確定中斷請求信號類型,清除中斷屏
68、蔽寄存器,進行中斷優(yōu)先級排隊和確定系統(tǒng)是用單片還是多片。</p><p> 寫ICW2用來定義中斷向量的高五位類型碼。</p><p> ICW3可以定義主片8259A中斷請求線上IR0-IR7有無級聯(lián)的8259A從片。</p><p> 寫ICW4用來定義8259A工作時用8085模式還是8088模式,以及中斷服務寄存器復位方式等。</p>&
69、lt;p> 初始化命令字寫完以后,要寫8259A的控制命令字,它包括OCW1-OCW3。</p><p> 寫OCW1可以設置或清除對中斷源的屏蔽。</p><p> 寫OCW2設置優(yōu)先級是否進行循環(huán)、循環(huán)的方式和中斷結(jié)束的方式。8259A復位時自動設置IR0優(yōu)先權(quán)最高,IR7優(yōu)先權(quán)最低。</p><p> 寫OCW3用來設置查詢方式和特殊屏蔽方式,并
70、可以讀取8259A中斷寄存器的當前狀態(tài)。</p><p> 在本系統(tǒng)中,使用8259A的循環(huán)等待中斷工作方式。</p><p> 3.3 系統(tǒng)運行過程的詳細分析</p><p> 將8254的定時程序與數(shù)碼管的顯示程序分別封裝到一個子程序中,完成主程序的調(diào)用,其中,數(shù)字一秒減一的功能由8255通過test指令來檢測8254的輸出波形的正負,當為正時由數(shù)碼管循
71、環(huán)顯示當前數(shù)字,當為負依然循環(huán)顯示當前數(shù),當再次變?yōu)檎龝r,數(shù)碼管顯示數(shù)字減一,循環(huán)至0時,就完成本次子程序的調(diào)用,進行主程序中的下一條指令。主程序開始就通過8255控制led燈的顯示狀態(tài),接著調(diào)用檢測顯示程序完成數(shù)碼管倒計時顯示功能,完成后跳到下一狀態(tài),依次進行。</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)軟件實現(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 ;非自動結(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)計數(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 ;設8254通道1工作方式2</p><p><b> out dx,al</b></p><p> mov ax,1000 ;寫入循環(huán)計數(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 ;判斷中斷是否已響應</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運行結(jié)果分析</b></p><p> 開始運行時,首先選擇上下午模式,在選擇一個模式之后,
120、比如說上午,東西方向為紅,南北方向為綠,亮50秒。東西方向為紅,南北方向為左拐,亮20秒。東西方向為黃,南北方向為紅,亮3秒。 南北方向為紅,東西方向為綠,亮50秒。 南北方向為紅,東西方向為左拐,亮20秒。南北方向為黃,東西方向為紅,亮3秒。重新由第一個狀態(tài)開始,不斷地循環(huán)。在執(zhí)行另一模式時,必須重啟實驗箱,然后重復上述過程。</p><p> 5.學生個人實踐報告</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 ;非自動結(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)計數(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 ;設8254通道1工作方式2</p><p><b> out dx,al</b></p><p> mov ax,1000 ;寫入循環(huán)計數(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 ;判斷中斷是否已響應</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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設計---模擬交通燈控制系統(tǒng)
- 交通燈課程設計--交通燈控制系統(tǒng)設計
- 交通燈控制系統(tǒng)課程設計報告
- eda交通燈課程設計---交通燈控制系統(tǒng)
- 交通燈控制系統(tǒng)課程設計
- 課程設計--交通燈控制系統(tǒng)
- eda交通燈課程設計---交通燈控制系統(tǒng)的設計
- 交通燈控制系統(tǒng)課程設計
- 交通燈控制系統(tǒng) 課程設計
- 交通燈控制系統(tǒng)課程設計
- 交通燈課程設計---交通控制系統(tǒng)設計
- 課程設計--交通燈控制系統(tǒng)設計
- 課程設計---交通燈控制系統(tǒng)設計
- 硬件課程設計---交通燈設計報告
- eda課程設計報告--交通燈控制系統(tǒng)設計
- 課程設計-交通燈控制系統(tǒng)設計
- eda交通燈課程設計--cpld實現(xiàn)交通燈控制系統(tǒng)
- 交通燈模擬控制課程設計
- 基于plc交通燈控制系統(tǒng)課程設計報告
- 智能交通燈控制系統(tǒng)設計課程設計
評論
0/150
提交評論