交通管理系統(tǒng)的設(shè)計用計算機硬件實驗系統(tǒng)完成



交通管理系統(tǒng)的設(shè)計(用計算機硬件實驗系統(tǒng)完成) 1 設(shè)計的主要內(nèi)容設(shè)計編制一個十字路口交通監(jiān)督與管理系統(tǒng),用計算機硬件實驗系統(tǒng)中的LED和開關(guān)模擬實現(xiàn)交通管理要求,基本功能描述如下:1)交通路線分為人行道、干線和支線,人行道有紅燈和綠燈,干線和支線有紅燈、黃燈和綠燈 2)人行道由一個按鍵控制,當(dāng)人按下按鍵后,在正常干線和支線的綠燈時間結(jié)束后,人行道綠燈亮,干線和支線紅燈亮,維持10秒后,人行道紅燈亮,干線和支線由以下情況決定 3)正常情況下只允許干線通車,即干線綠燈亮,支線紅燈亮 4)當(dāng)支線上有一輛及以上車輛時請設(shè)計合理的紅黃綠燈變化規(guī)則,要求干線由綠燈變紅燈規(guī)律為:綠燈變?yōu)辄S燈,持續(xù)三秒后,變?yōu)榧t燈;支線的紅燈變?yōu)榫G燈5)若在支線的綠燈亮25秒期間干線M(大于)4輛車到,則應(yīng)允許干線車輛通過此時支線綠變?yōu)辄S燈,持續(xù)3秒后,干線由紅變?yōu)榫G燈6)當(dāng)支線綠燈亮了25秒后,支線由綠變?yōu)辄S燈,持續(xù)3秒后,變?yōu)榧t燈;干線有紅變?yōu)榫G燈,即返回正常情況,允許干線的車輛通過7)當(dāng)干線由紅燈變?yōu)榫G燈后,必須維持25秒后才能返回第三步2 任務(wù)分工 在這次課程設(shè)計過程中我們小組的分工如下:任務(wù)負(fù)責(zé)人方案設(shè)計袁 雙、李 莫主程序1(交通管理系統(tǒng))李 莫、袁 雙主程序2(交通監(jiān)督系統(tǒng))周瑜忻、王志瑜設(shè)計報告袁 雙、王志瑜程序匯總、調(diào)試周瑜忻、李 莫3 優(yōu)化功能在完成交通管理系統(tǒng)的基本功能的設(shè)計以后,我們小組通過討論,決定加入以下完善和優(yōu)化功能:1、設(shè)計了較為合理的支線紅黃綠燈變化規(guī)則,當(dāng)干線轉(zhuǎn)為支線時,若支線來車,計給予支線10秒通行時間,時間到支線通行時間結(jié)束;若線持續(xù)來車,支線通行時間擴充到10秒(倒計時),直到通行25秒,支線通行結(jié)束。
2、考慮夜間特殊時段通行,我們設(shè)計了干線和支線黃燈閃爍,人行道燈滅:表示車輛慢行,人行道注意路況小心通行3、擴充干線、支線和人行道交通違規(guī)監(jiān)督功能:①在主干線通行的時候,判斷支線和人行道是否有人闖紅燈,如果有,亮燈警視,并記錄支干道闖紅燈車輛數(shù)量;②在支線通行的時候,判斷主干線和人行道是否有人闖紅燈,如果有,亮燈警視,并記錄主干道闖紅燈車輛數(shù)量;③在人行道通行的時候,判斷主干道和支干道是否有人闖紅燈,如果有,亮燈警視,并記錄主干道和支干道紅燈車輛數(shù)量4 操作說明 在程序開始運行后,系統(tǒng)的初始狀態(tài)為干線正常運行,干線綠燈亮,支線和人行道紅燈亮具體操作方式如下:(k1:特殊時段控制鍵;k2:人行道控制鍵;k3:支線來車;k4:干線來車;8個二極管代表干線、支線和人行道的紅黃綠燈;8段LED顯示到計時間) 1、初始狀態(tài)下,人行道控制鍵按k2下,則當(dāng)干線或支線運行結(jié)束后轉(zhuǎn)為人行道通行(時間10秒),此時干線、直線紅燈亮,人行道黃燈亮 2、人行道通行結(jié)束后,自動轉(zhuǎn)為干線通行,按下k3,代表支線來車,當(dāng)干線通行25秒結(jié)束后干線綠燈滅轉(zhuǎn)黃燈持續(xù)3秒后紅燈亮,人行道紅燈亮,支線綠燈亮。
3、當(dāng)支線通行第一個10秒內(nèi),同時k1 、k3按下代表支線又有持續(xù)來車,此時支線通行時間返回擴充到10秒,直到通行滿25秒后結(jié)束 4、按下k1代表進入特殊時段,此時干線、支線黃燈閃爍,當(dāng)同時按下k1 k2 k3 k4代表退出特殊時段 5、監(jiān)督功能部分,當(dāng)主干道亮紅燈的時候,按下K2時,支干道警示燈L2亮,按下K3時,L2 L3亮;當(dāng)支干道亮紅燈的時候,按下K1時,主干道警示燈L1亮,按下K3時,L2 L3亮;當(dāng)人行道亮紅燈的時候,按下K1時,主干道警示燈L1亮,按下K2時,L2亮5 設(shè)計方案 根據(jù)設(shè)計要求,我們采用模塊化的編程思路,這樣便于分工協(xié)作,程序便于調(diào)試 1)主程序1(交通管理系統(tǒng)) 該模塊主要是用來實現(xiàn)交通管理系統(tǒng)的邏輯判斷功能,包括判斷開關(guān)、調(diào)用相應(yīng)的子程序,具體的判斷邏輯如下:首先循環(huán)判斷是否特殊時段控制鍵k1按下,若按下則調(diào)用黃燈閃爍子程序;若未按下程序自動調(diào)用干線運行程序,在此過程則循環(huán)掃描是否有支線和人行道控制開關(guān)按下,如沒有開關(guān)按下則循環(huán)調(diào)用干線運行程序,如有開關(guān)按下則調(diào)用對應(yīng)的子程序程序統(tǒng)一采用8254可編程硬件延時,A口作為輸出控制8段LED顯示,B口作為輸出控制二極管C口低四位作為輸入口控制開關(guān),高四位作為輸出口控制8段LED位選。
2)主程序2(交通監(jiān)督系統(tǒng))先對十字路口主干道和枝干道紅燈信號進行判斷,如果紅燈亮?xí)r,再對主干道和枝干道闖紅燈車輛信號進行判斷,如果有車輛闖紅燈,給與紅燈亮的警示信號,并且在LED上記錄主干道和枝干道闖紅燈數(shù)量6 程序流程圖由于我們所設(shè)計的交通管理及監(jiān)督系統(tǒng)的功能模塊較多,且主程序以循環(huán)掃描支撐,主程序流程圖較為復(fù)雜,所以我們將主程序與子程序分為兩個部分繪制了程序流程圖 (1)主程序1(交通管理)流程圖所有燈滅主干道黃燈子程序人行橫道通行子程序黃燈閃爍子程序主干道黃燈子程序支路黃燈子程序K2=1?L=0?支路通行子程序主干道黃燈子程序K3=1?K1=1?支路黃燈子程序主干道黃燈子程序人行橫道通行子程主干道黃燈子程序主干道黃燈子程序人行橫道通行子程K1=1?K2=1?L=0?K2=1?K3=1?K2=1?支路通行子程序主干道通行子程序開始黃燈閃爍子程序 Y N Y Y N Y主干道綠燈,支路紅燈,人行道紅燈 N 延時1秒 N Y Y N N Y人行橫道通行子程序 Y NK2=1? N Y Y 延時1秒 N N Y(2)主程序2(交通監(jiān)督系統(tǒng))流程圖開始LED是否為A否否否否否否否是是是是亮1,2號燈是否有人闖紅燈亮2號燈,LED顯示計數(shù)是否有車闖紅燈人行道是否紅燈亮支干道是否紅燈亮亮1號燈,LED顯示計數(shù)是否有車闖紅燈主干道是否紅燈亮給SI,DI數(shù)值表地址 顯示個位個位是否為零?十位是否為零?個位減1十位減1個位加9,跳出子程序,開始個位SI=5十位DI=2顯示十位(3)干線通行子程序流程圖 N Y Y N(4)干線黃燈子程序流程圖開始LED個位賦值為3十位賦值為0延時1秒顯示十位顯示個位個位減1個位是否為0否是主干道黃燈亮子程序結(jié)束(5)支路黃燈子程序流程圖開始LED個位賦值為3十位賦值為0延時1秒顯示十位顯示個位個位減1個位是否為0否是支干道黃燈亮子程序結(jié)束(6)人行橫道通行子程序流程圖LED個位賦值為0十位賦值為1延時1秒顯示十位顯示個位十位減1,個位加9個位是否為0否是干道綠燈燈亮比較個位是否為0個位減1是否子程序結(jié)束開始7問題總結(jié)及心得體會(1)9月6日下午(閱讀設(shè)計任務(wù),理解設(shè)計要求,完成方案設(shè)計):問題:當(dāng)支線上有一輛及以上車輛時如何設(shè)計出合理的紅黃綠燈變化規(guī)則,小組討論出現(xiàn)分歧。
一種想法為當(dāng)支線只要有車來(無論車輛多少),當(dāng)主線通行時間結(jié)束,人行道無人,支線就通車25秒;另一種想法為無論支線來車多少,當(dāng)主線通行時間結(jié)束,人行道無人,支線先只給予10秒通行時間,若后續(xù)支線又有車來,則通行時間擴充到10秒,直到支線通車25秒就結(jié)束通行,若后續(xù)支線無車倆來,則支線就只通行10秒后轉(zhuǎn)為主線通行或人行道通行方案:經(jīng)過小組討論一致認(rèn)為該問題意在設(shè)計出合理的支線通行規(guī)則,應(yīng)充分考慮合理性,若選擇第一種就有可能造成支線通行時間過長,造成交通時間浪費;而第二種想法就合理的考慮到了支線路況車輛多少的情況,合理的避免了不必要的交通時間浪費最后一致同意第二種方案2)9月10日(優(yōu)化功能方案設(shè)計)(交通監(jiān)督系統(tǒng)):問題:我們想設(shè)計一個交通違章監(jiān)督功能:記錄并顯示干線、支線和人行道上的違章交通情況,由于在設(shè)計基礎(chǔ)功能時已將實驗板上的輸入輸出口用完,沒有多余輸出口作為交通違章信息傳輸口方案:將基礎(chǔ)功能的交通管理系統(tǒng)與優(yōu)化功能的交通監(jiān)督系統(tǒng)分別在兩塊實驗板上實現(xiàn),并將兩塊實驗板聯(lián)機將交通管理系統(tǒng)的干線、支線和人行道的輸出口引入到交通監(jiān)督系統(tǒng)的干線、支線和人行道信息輸入口這樣交通監(jiān)督系統(tǒng)從管理系統(tǒng)讀到實時的交通信息來判段干線、支線和人行道是否有違章情況。
3)9月13-15日(程序完成,進行調(diào)試):問題1:第一次程序編譯鏈接都成功,調(diào)試時實驗板完全不能顯示,不清楚差錯出在實驗板還是程序有問題方案:經(jīng)過大家認(rèn)真討論一致認(rèn)為實驗板未讀入程序,說明程序輸入輸出控制字有誤,經(jīng)檢查初始化控制字有誤問題2:調(diào)試時實驗板LED顯示亂碼且不穩(wěn)定,由于程序太長,上時間無法找出程序問題,失誤在于,我們在編完各子程序時應(yīng)分塊調(diào)試,既是排除錯誤方案:將有LED顯示的各子程序分塊進行調(diào)試發(fā)現(xiàn)LED的延時顯示程序有誤,改延時子程序為應(yīng)用8254可編程硬件延時 問題3:在統(tǒng)一調(diào)試功能時,有些功能一會能實現(xiàn)一會不能實現(xiàn),不穩(wěn)定 方案:逐一檢查硬件(導(dǎo)線、插口),最后確定為部分導(dǎo)線插口接觸不良 這次的課程設(shè)計,由于我們小組的分工明確而且組員們都十分的認(rèn)真,所以我們可以較早的完成,我也認(rèn)識到團隊的重要,團隊需要個人,個人也離不開團隊,必須發(fā)揚團結(jié)協(xié)作的精神某個人的離群都可能導(dǎo)致導(dǎo)致整項工作的失敗團隊設(shè)計中只有一個人知道原理是遠遠不夠的,必須讓每個人都知道,否則一個人的錯誤,就有可能導(dǎo)致整個工作失敗因此這次課程設(shè)計是我們又一次難得的學(xué)習(xí)機會! 自動化學(xué)院2007級四班 袁雙 20075156在為期兩周的課程設(shè)計中,我為了完成設(shè)計遇到了很多困難。
在克服困難的過程中,我對已經(jīng)學(xué)習(xí)的知識有了更深入的理解,對一些不是學(xué)的很好的知識點也有了更加深入的理解并且在這種理論聯(lián)系實際的過程中,對我們已經(jīng)學(xué)習(xí)的知識在實際生產(chǎn)中的應(yīng)用也有了大致的了解對我的個人的綜合能力的提示有很大的幫助我們組的課程設(shè)計題目是交通監(jiān)督和管理系統(tǒng)這個課題非常方便和實際相聯(lián)系我們在構(gòu)想我們的系統(tǒng)的時候我們從簡單的紅綠燈變化聯(lián)想到了交通管理系統(tǒng)除了信號燈實際情況下還有哪些附屬設(shè)備,再聯(lián)想如何實現(xiàn)監(jiān)督功能在這個過程中我們集思廣議,最后我們的系統(tǒng)由監(jiān)督系統(tǒng)和管理系統(tǒng)復(fù)合組成并且由我和另外一個同學(xué)袁雙負(fù)責(zé)主系統(tǒng),我負(fù)責(zé)編譯程序,他幫我看并提出意見并和我討論如何修改在交通管理系統(tǒng)的程序的編譯的時候,我遇見了相當(dāng)多的問題例如怎么讓支路通行的過程更加的智能化最后我聯(lián)想到我上過的一門課程《智能交通》在課上,老師曾經(jīng)說過一個類似的問題,支路通行的時候給他10秒的時間如果有車來了,再給他延時幾秒霎時間我想到了怎么做了我最后讓支路通行的時候初始給10秒時間,如果有車來,就把通行時間變成10秒再另置一個計時器,讓他在支路開始通行的時候就計時,如果滿了25秒就退出程序并令一個特殊的變量L=0而且這么做不但程序更加智能、人性化,還解決了支路通行子程序結(jié)束后的返回主程序判斷它是否是滿25秒結(jié)束的。
除了這個問題之外主干道滿25秒之后應(yīng)該怎么辦也讓我傷透了腦筋,最后我決定讓主干道通行滿25秒后,不在倒計時且讓信號燈閃爍提示駕駛員謹(jǐn)慎駕駛并且做一個大循環(huán)不停的檢測是否有人按下人行橫道開關(guān),支路是否有車來最后也是我遇見的最麻煩的一件事情,怎么才可以讓系統(tǒng)的時間準(zhǔn)確倒計時25秒就真的是25秒最后我不停在書上尋找,最后找到了一個方法利用電腦里面自帶的8254和8259來做,把0給8254計數(shù)器,那么他的計數(shù)時間為十八分之一秒然后給8254一個初始的數(shù)18就可以完成一秒的倒計時了在這個工作中我遇見的問題,以后工作也有可能遇見,在這種理論聯(lián)系實際的課程之中,我的能力得到了提升,知識得到了拓寬,對實際問題的思考方式也更加的有邏輯性 自動化學(xué)院2007級四班李 莫 20075023經(jīng)過這兩個星期的課程設(shè)計,我從中復(fù)習(xí)了大三上學(xué)習(xí)的計算機硬件技術(shù)基礎(chǔ),并運用其中的知識設(shè)計了十字路口交通燈系統(tǒng)這兩個星期的實習(xí),通過和組員的配合,我們做出了十字路口交通燈的系統(tǒng),并且對這個系統(tǒng)的功能進行了一個非常富有創(chuàng)造性的添加功能,就是我們用一個板實現(xiàn)了十字路口交通燈的基本功能的同時,用另外一塊板實現(xiàn)了對違規(guī)車輛和行人的監(jiān)督功能。
在實現(xiàn)功能的過程中,我們遇到了重重困阻,但是團隊的力量是強大的,這是我們能夠順利做成這個課程設(shè)計的主要因素每個組員都發(fā)揮了重要的作用在討論設(shè)計的功能如何實現(xiàn)的時候,我們的積極的發(fā)揮自己所學(xué)習(xí)的知識以及豐富的創(chuàng)造能力和靈活的運用所學(xué)習(xí)的知識,將我們所要實現(xiàn)的功能大體上形成了一個框架在設(shè)計的過程中,困難是難免的比如在實現(xiàn)每個環(huán)節(jié)的嵌套的過程中,對第一個環(huán)節(jié)進行判斷以后,沒有跳轉(zhuǎn)到下一個環(huán)節(jié),結(jié)果發(fā)現(xiàn)系統(tǒng)只能對主干道的闖紅燈進行判斷,不能對支干道闖紅燈的進行判斷,這個問題困擾了很長一段時間,后來才發(fā)現(xiàn)自己出了這么一個低級的錯誤在調(diào)試的時候,無論怎么按鍵,系統(tǒng)都沒有反應(yīng),但是看程序是沒有錯誤的,進行單步調(diào)試,系統(tǒng)還是毫無反應(yīng),結(jié)果后來才發(fā)現(xiàn)是接線的時候有兩條線接反了,才導(dǎo)致了系統(tǒng)無法進行判斷在對違章車輛的顯示的時候,在兩個數(shù)字顯示不一樣的時候,顯示的數(shù)字會發(fā)生異常,對程序進行了仔細的觀察和思考,沒有發(fā)現(xiàn)任何的不對,進行單步調(diào)試的時候才發(fā)現(xiàn),顯示LED1的過后,跳轉(zhuǎn)到顯示LED5的時候要先顯示LED1上的數(shù)字然后過一會才回顯示LED5應(yīng)該顯示的數(shù)字,這樣讓我不知道是什么問題,后來我問我的組員,他才給我說是要加一個延時程序才能杜絕這種事情的發(fā)生,但是延時又不能太長不然會影響顯示的速度,但是也不能過短,這樣不能解決這個問題。
后來加了一個1000的延時才解決了這個問題通過這次課程設(shè)計,我鞏固了計算機硬件技術(shù)基礎(chǔ)的知識,更重要的是我更加感受到了團隊合作的重要性,一個人的力量終究是有限的,在一個團隊中,團隊的力量不單單是每個人能力的綜合,而是每個人力量的乘積 自動化學(xué)院2007級四班周瑜析 20075041這次我們負(fù)責(zé)的是交通燈的題目,當(dāng)拿到了任務(wù)書后,我們仔細分析了題目,然后組員之間仔細討論了這個題目.后來就需要我們研究如何確定輸入輸出.很顯然開關(guān)應(yīng)該作為輸入,小燈作為交通燈應(yīng)該作為輸出.現(xiàn)在主要討論行車,行人交通燈之間的關(guān)系.然后主流交通與支路交通之間的關(guān)系. 設(shè)計的問題來了:當(dāng)人行道上有人,支路上有車時,或者支路正在通車,人行道上有人,主干道有大于等于四輛車時,誰的優(yōu)先權(quán)更高仔細研究過后,再考慮實際的交通情況,再加上題目的要求“當(dāng)行人按下控制鍵后,在正常干線或支線綠燈時間結(jié)束后,人行道變綠燈”,一致得出結(jié)論,行人優(yōu)先,故在主干或支干通車時都要檢測是否有行人鍵按下首先要整理出程序的流程圖假設(shè)在干線綠燈時,有行人按鍵,那么在干線綠燈25秒之后應(yīng)讓行人通行,但是在行人通行之后又要返回到干線綠燈。
這個時候又有行人按鍵,支線來車的話,由于剛才設(shè)定的人有優(yōu)先權(quán),那么又是行人通行于是邊有可能造成:干線—人行道—干線—人行道這一循環(huán),致使干線不能通過還有如有車不按交通燈仔細行車的監(jiān)管問題.我就是負(fù)責(zé)交通監(jiān)管方面的問題此次設(shè)計,我們不僅要判斷主干道和支干道以及人行道是否有違規(guī)現(xiàn)象,而且還要統(tǒng)計違規(guī)車輛的個數(shù)因此此次設(shè)計,要涉及很多與硬件相關(guān)的知識,比如說最常見的循環(huán)延時,還有要值得注意的是確定8255控制字.這個編程序最基礎(chǔ)的東西,也是老師在課堂上講的比較多的 以前在學(xué)習(xí)的時候,對這些硬件相關(guān)的知識還不是很了解,但在此次實驗之后,我有了新的認(rèn)識和理解,加強了對相關(guān)知識的熟悉和了解并學(xué)到了以前不知道的知識譬如說子程序的調(diào)用,8254延時功能的級連,都是我以前都不怎么理解的東西還有就是中斷,我在跟我同學(xué)討論相關(guān)知識,還是不怎么明白,感覺很困難總之,在這次實驗之后,我對匯編語言有了新的認(rèn)識,掌握了大概的程序設(shè)計方法,還強化了自己處理實際問題的能力 自動化學(xué)院2007級四班 王志瑜 200751298程序清單.486DATA SEGMENTS DB 09HL DB 05HDISNM DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88H,83H,0C6H,0A1H,86H,8EHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,20BH ;控制字 MOV AL,81H OUT DX,AL *******************主程序1(交通管理系統(tǒng))***********************T1: MOV CX,1000T100: LOOP T100 MOV DX,20AH ;判斷特殊時間黃燈閃爍開關(guān) IN AL,DX AND AL,01H CMP AL,01H JE T10 JMP T11T10: CALL Yellow ;黃燈閃爍子程序T11: CALL LmG ;調(diào)用主干道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T2 CALL LmY ;調(diào)用主干道黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T2: MOV DX,20AH ;判斷支線開關(guān) IN AL,DX AND AL,04H CMP AL,04H JNE T40 JE T21T21: CALL LmY ;調(diào)用主干道黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL CALL LbG ;調(diào)用支路通行子程序 CALL LbY ;調(diào)用支路黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支路通行時間是否滿25秒 CMP AL,00H JE T3 JMP T1T3: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T1 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T40: MOV DX,20AH IN AL,DX AND AL,04H CMP AL,04H JNE T401 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LbG ;調(diào)用支線通行子程序 CALL LbY ;調(diào)用支線黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支線通行時間是否滿25秒 CMP AL,00H JE T3 JMP T1T401: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T402 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1**********延時程序************T402: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXT41: INT 1AH ;讀日時鐘中斷向量 CMP BX,DX JE T42 MOV AL,32H ;主干道綠燈,支路紅燈,人行道紅燈 MOV DX,209H OUT DX,AL MOV DX,20AH ;判斷特殊時間黃燈閃爍開關(guān) IN AL,DX AND AL,01H CMP AL,01H JE T411 JMP T41T411: CALL Yellow ;黃燈閃爍子程序 JMP T1T412: JMP T41T42: MOV DX,20AH ;判斷支線是否來車 IN AL,DX AND AL,04H CMP AL,04H JNE T421 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LbG ;調(diào)用支線通行子程序 CALL LbY ;調(diào)用支線黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支線通行時間是否滿25秒 CMP AL,00H JE T3 JMP T1T421: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T422 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T422: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXT43: INT 1AH CMP BX,DX JE T40 MOV AL,00H ;所有燈滅 MOV DX,209H OUT DX,AL JMP T43*******************特殊時段子程序***********************Yellow PROC NEAR ;黃燈閃爍子程序Y0: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXY1: INT 1AH ;讀日時鐘 CMP BX,DX JE Y2R1: MOV DX,209H ;主干道黃燈,支路黃燈,人行橫道燈滅 MOV AL,48H OUT DX,AL MOV DX,20AH ;判斷是否退出特殊時段 IN AL,DX AND AL,0FH CMP AL,0FH JE R3 JMP Y1Y2: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXY3: INT 1AH ;讀日時鐘 CMP BX,DX JE Y0R2: MOV DX,209H ;所有燈滅 MOV AL,00H OUT DX,AL MOV DX,20AH ;判斷是否退出特殊時段 IN AL,DX AND AL,0FH CMP AL,0FH JE R3 JMP Y3R3: RET Yellow ENDP******************干線通行子程序**********************LmG PROC NEAR ;主干道通行子程序 LEA SI,DISNM ADD SI,5 LEA DI,DISNM ADD DI,2K0: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXK1: INT 1AH CMP BX,DX JE K2K12: MOV CX,1000K120: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,10H MOV DX,20AH OUT DX,AL LOOP K120 MOV CX,1000K121: MOV AL,[SI] ;顯示個位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,20H OUT DX,AL LOOP K121 MOV AL,32H MOV DX,209H OUT DX,AL JMP K1 K2: LEA BX,DISNM ;判斷個位是否為零 CMP BX,SI JE K3 DEC SI ;個位減1 JMP K0K3: LEA BX,DISNM ;判斷十位是否為零 CMP DI,BX JE K4 DEC DI ;十位減1 ADD SI,9 ;個位加9 JMP K0K4: RET LmG ENDP******************干線黃燈閃爍子程序**********************LmY PROC NEAR ;主干道黃燈子程序 LEA SI,DISNM ;LED個位數(shù)為3 ADD SI,3 LEA DI,DISNM ;LEC十位數(shù)為0Q5: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXQ6: INT 1AH CMP BX,DX JE Q7 MOV CX,1000 Q61: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,10H MOV DX,20AH OUT DX,AL LOOP Q61 MOV CX,1000Q62: MOV AL,[SI] ;顯示個位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,20H OUT DX,AL LOOP Q62 MOV AL,52H MOV DX,209H OUT DX,AL JMP Q6 Q7: DEC SI ;個位減1 LEA BX,DISNM ;判斷個位是否為零 CMP BX,SI JE Q8 JMP Q5Q8: RETLmY ENDP*******************人行道通行子程序***********************LpG PROC NEAR LEA SI,DISNM ;給人行道通行時間10s ADD SI,0 LEA DI,DISNM ADD DI,1W0: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXW1: INT 1AH CMP BX,DX JE W2 MOV CX,1000W11: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,40H MOV DX,20AH OUT DX,AL LOOP W11 MOV CX,1000W12: MOV AL,[SI] ;顯示個位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,80H OUT DX,AL LOOP W12 MOV AL,91H MOV DX,209H OUT DX,AL JMP W1W2: LEA BX,DISNM ;判斷個位是否為0 CMP BX,SI JE W3 DEC SI JMP W0W3: LEA BX,DISNM ;判斷十位是否為0 CMP DI,BX JE W4 DEC DI ADD SI,9 JMP W0W4: RETLpG ENDP *******************支線通行子程序***********************LbG PROC NEAR LEA SI,DISNM ;支線通車10s ADD SI,0 LEA DI,DISNM ADD DI,1 MOV AL,05H ;令L=5 MOV L,AL MOV AL,19H ;令S=25 MOV S,AL E0: MOV AL,36H ;8254可編程硬件延時1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXE1: INT 1AH CMP BX,DX JE E2 MOV CX,1000TD1: MOV AL,[DI] ;顯十位數(shù) MOV DX,208H OUT DX,AL MOV AL,20H MOV DX,20AH OUT DX,AL LOOP TD1 MOV CX,1000TD2: MOV AL,[SI] ;顯個位數(shù) MOV DX,208H OUT DX,AL MOV AL,40H MOV DX,20AH OUT DX,AL LOOP TD2 MOV AL,86H MOV DX,209H OUT DX,AL MOV DX,20AH ;判斷主干通行條件是否達成 IN AL,DX AND AL,08H CMP AL,08H JE E4 MOV DX,20AH ;判斷支路是否繼續(xù)來車 IN AL,DX AND AL,05H CMP AL,05H JE E6E11: JMP E1E2: LEA AX,DISNM ;判斷個位是否為0 CMP AX,SI JE E3 DEC SI MOV AL,S ;判斷是否滿25秒 CMP AL,00H JE E5 MOV AL,S ;S=S-1 DEC AL MOV S,AL JMP E0 E3: LEA AX,DISNM ;判斷十位是否為0 CMP AX,DI JE E4 DEC DI ADD SI,9 MOV AL,S ;判斷是否滿25s CMP AL,00H JE E5 MOV AL,S ;s=s-1 DEC AL MOV S,AL JMP E0E4: RETE5: MOV AL,00H ;令L=0 MOV L,AL JMP E4E6: LEA SI,DISNM ;持續(xù)來車支線通車擴充到10s ADD SI,0 LEA DI,DISNM ADD DI,1 JMP E11LbG ENDP******************支線黃燈閃爍子程序********************LbY PROC NEAR LEA SI,DISNM ;支線黃燈時間顯示 ADD SI,3 LEA DI,DISNMG5: MOV AL,36H OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXG6: INT 1AH CMP BX,DX JE G7 MOV CX,1000 G61: MOV AL,[DI] ;顯十位數(shù) MOV DX,208H OUT DX,AL MOV AL,20H MOV DX,20AH OUT DX,AL LOOP G61 MOV CX,1000G62: MOV AL,[SI] ;顯個位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,40H OUT DX,AL LOOP G62 MOV AL,8AH MOV DX,209H OUT DX,AL JMP G6 G7: LEA BX,DISNM ;判斷個位是否為0 CMP BX,SI JE G8 DEC SI JMP G5G8: RETLbY ENDPCODE ENDS END START***********************主程序2(交通監(jiān)督系統(tǒng))************************.486 DATA SEGMENTMESS1 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88HDATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;初始化程序 MOV DS,AX MOV DX,20BH MOV AL,89H OUT DX,AL A1: MOV DX,209H ;給SI初始地址。
