版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《微機實驗及課程設(shè)計》</p><p><b> 課程設(shè)計報告</b></p><p><b> 停車場出入管理系統(tǒng)</b></p><p> 姓 名: 學(xué) 號: </p><p> 專
2、 業(yè): 電類強化班 實 驗 室: </p><p> 組 別: 同組人員: </p><p> 設(shè)計時間:2013 年 5月28日 —— 2013年 6月 4 日</p><p> 評定成績:
3、 審閱教師: </p><p> 目 錄</p><p> 一. 課程設(shè)計目的與要求……………………………………………………………………2</p><p> 二.方案論證與原理設(shè)計………………………………………………………………………2</p><p> 三.詳細(機理)設(shè)計…………
4、……………………………………………………………3</p><p> 四.方案實現(xiàn)與測試(或調(diào)試)……………………………………………………………7</p><p> 五.分析與總結(jié)………………………………………………………………………………8</p><p> 一. 課程設(shè)計目的與要求(含設(shè)計指標(biāo))</p><p> 1、設(shè)計項目名稱:
5、停車場出入管理系統(tǒng)</p><p><b> 2、目的:</b></p><p> 鞏固已學(xué)的微機原理與接口的基本知識;</p><p> 加強個人編程能力,學(xué)會用匯編語言編寫簡單使用的系統(tǒng)</p><p> 學(xué)會對8086,8253,8255等芯片的綜合應(yīng)用,實現(xiàn)對停車場的出入進行智能管理。</p>
6、<p><b> 3、基本要求:</b></p><p> 設(shè)計實現(xiàn)一停車場實時管理系統(tǒng)。要求實時顯示車位空閑情況(初值可修改,最多99輛),并分別控制A、B兩個出入口。每個出入口需要控制進出欄桿,并檢測車輛進出,修改統(tǒng)計、顯示車位空閑情況,并根據(jù)空閑情況控制進入。用2*2個開關(guān)模擬兩個出入口的車輛進出光電信號,2個LED燈模擬欄桿輸出控制(亮代表有效,禁止出入)。允許A口
7、進B口出,反之亦是。</p><p><b> 4、設(shè)計指標(biāo)</b></p><p> 要求用兩個數(shù)碼管實時顯示車位空閑數(shù)目(00~99);</p><p> 當(dāng)有空位時,如有車輛到來,則在檢測到信號(有效)后2秒鐘打開進入欄桿,待車進入(信號</p><p> 無效)后1秒鐘放下欄桿,空車位數(shù)減1修改;若無空位
8、,則車輛等待,直至有車位空出;</p><p> 當(dāng)有車出停車場時則在檢測到信號后2秒鐘打開出車欄桿,帶車離開3秒鐘放下欄桿,空車位數(shù)</p><p><b> 加1修改;</b></p><p> 車位發(fā)生變化時,PC上同步顯示記錄。</p><p><b> 5、拓展功能</b><
9、/p><p> 8*8點陣顯示進出箭頭,有車輛進出空時綠色,滿時紅色;</p><p> 自動記錄車將進出時間和屬性;</p><p> 考慮A、B、C、D四個出入口同時控制的情況,自動顯示空位數(shù),控制車輛</p><p> 二.方案論證與原理設(shè)計(或基本原理)</p><p> 對上述基本要求和設(shè)計指標(biāo)進行需求
10、分析,并基于所有的硬件資源,我們可以采用如下辦法進行實現(xiàn):對于光電信號的采集(開關(guān)模擬)可以通過8255C口輸入并進行判斷,對于欄桿的控制同樣可</p><p> 通過8255C口進行輸出控制;對于雙數(shù)碼管的顯示,可以采用動態(tài)顯示的方法,利用8255A口輸出數(shù)</p><p> 碼管的七段譯碼,B口輸出數(shù)碼管的動態(tài)片選信號。實時的空車位保存于通用寄存器中(如BX,BH</p>
11、;<p> 表示十位,BL表示個位);對于等待時間的控制,可以通過微機內(nèi)部的延遲得到,但若想要得到精確</p><p> 地時間,則可以利用8253定時器實現(xiàn),具體做法是利用雙通道計數(shù)器的級聯(lián)實現(xiàn)對1MHz時鐘信號的</p><p> 1000*1000分頻,得到1HZ的信號,即可得到1s精確延遲。</p><p> 程序的基本框架如下:<
12、;/p><p> 1、對系統(tǒng)進行初始化,顯示當(dāng)前空車位數(shù);</p><p> 2、利用輸入指令從8255C口低四位輸出光電信號。若檢測到有效信號,則對其判斷端口和進出性質(zhì);若無有效信號,則繼續(xù)檢測信號;</p><p> 3、對有效信號的性質(zhì)進行判定:若為出信號,則執(zhí)行出車程序(跳轉(zhuǎn)指令實現(xiàn));若為進信號,則先判斷是否有空位(判斷BX是否為0),若有空位,則執(zhí)行進
13、車程序,否則等待并檢測是否有出車信號,至有空位出現(xiàn);</p><p> 4、出車時首先需要一定得延遲,然后輸出控制打開柵欄信號,經(jīng)過一定的延遲之后,檢測出車信號是否無效(表明車已經(jīng)出去),無效則輸出關(guān)閉柵欄信號,修改計數(shù)值并顯示,否則繼續(xù)等待,重復(fù)檢測。進車和出車的流程差不多。</p><p> 三.詳細(機理)設(shè)計</p><p> 1、系統(tǒng)工作流程圖(如下
14、所示)</p><p> 2、關(guān)鍵部分程序片段</p><p> ?、俣丝谛盘柕臋z測和判斷控制</p><p> mov bh,a[0];數(shù)碼管的高位</p><p> mov bl,a[1];數(shù)碼管的低位</p><p> cmp bx,0000h;如果沒有空車位就轉(zhuǎn)向b</p>
15、<p><b> jz b</b></p><p> test al,08h;00001000</p><p><b> jz goon1</b></p><p> call testa1;a口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p> goon1: test al
16、,04h;00000100</p><p><b> jz goon2</b></p><p> call testa2</p><p> goon2: call testa3</p><p> mov bh,a[0]</p><p> mov bl,a[1]</p>
17、<p> cmp bx,0909h</p><p><b> jz loops</b></p><p> b:test al,02h;00000010</p><p><b> jz goon3</b></p><p> call testb1;b口開關(guān)1撥上,
18、監(jiān)測a口狀態(tài)</p><p> goon3: test al,01h;00000001</p><p><b> jz goon4</b></p><p> call testb2</p><p> goon4: call testb3</p><p><b> j
19、mp loops</b></p><p> exit: mov ah,4ch</p><p><b> int 21h</b></p><p> ?、谌胲嚦绦蚩刂疲訟口為例</p><p> testa1 proc near</p><p><b> push ax
20、</b></p><p> push dx ;a口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p> cmp state_a,00h ;空閑</p><p> jz state_a1 </p><p> cmp state_a,01h;a口狀態(tài)前</p>
21、;<p> jz timecheck_a2s</p><p><b> jmp exit1</b></p><p> state_a1: </p><p> mov dx,offset mess8;提示有車準(zhǔn)備進入</p><p> mov ah,09h</p><p>
22、;<b> int 21h</b></p><p> mov state_a,01h</p><p> mov dx,io8253b;計數(shù)器通道1地址,計數(shù)器賦2s</p><p> mov al,00h </p><p><b> out dx,al</b></p>
23、<p> mov al,08h ;clk1接的是out0,經(jīng)過兩次分頻,得出兩秒</p><p><b> out dx,al</b></p><p><b> jmp exit1</b></p><p> timecheck_a2s: </p><p> mov
24、dx,io8255d ;8255B口地址</p><p><b> in al,dx</b></p><p> and al,02h ;00000010b</p><p><b> jz exit1</b></p><p> mov dx,offset mess3<
25、/p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_a,02h</p><p> mov dx,io8255b ;開燈(欄桿打開)</p><p> mov al,0bh ;00001011(C
26、的5號口對應(yīng)于欄桿信號)</p><p><b> out dx,al</b></p><p> exit1: pop dx</p><p><b> pop ax</b></p><p><b> ret</b></p><p> testa
27、1 endp </p><p> ?、鄢鲕嚦绦蚩刂疲訟口為例</p><p> testb1 proc near;b口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p><b> push ax</b></p><p> push dx</p><p> cmp state_b,00
28、h</p><p> jz state_b1</p><p> cmp state_b,01h</p><p> jz timecheck_b2s</p><p><b> jmp exit4</b></p><p> state_b1: </p><p> m
29、ov dx,offset mess9;提示有車準(zhǔn)備離開</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_b,01h</p><p> mov dx,io8253c ;計數(shù)器賦2s</p><p&g
30、t; mov al,00h</p><p><b> out dx,al</b></p><p> mov al,08h</p><p><b> out dx,al</b></p><p><b> jmp exit4</b></p><p>
31、; timecheck_b2s: </p><p> mov dx,io8255d</p><p><b> in al,dx</b></p><p> and al,01h</p><p><b> jz exit4</b></p><p> mov dx,of
32、fset mess4</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_b,02h</p><p> mov dx,io8255b;開燈(欄桿打開)</p><p> mov al,09h</p&g
33、t;<p><b> out dx,al</b></p><p> exit4: pop dx</p><p><b> pop ax</b></p><p><b> ret</b></p><p> testb1 endp </p>&
34、lt;p> ?、軆晌粩?shù)碼管動態(tài)顯示程序</p><p> disp proc near;顯示子程序</p><p><b> push dx</b></p><p> mov di,offset led</p><p> mov byte ptr bz,bl</p><p><
35、b> add di,bz</b></p><p><b> mov al,00</b></p><p> mov dx,ioporta</p><p><b> out dx,al</b></p><p> mov al,2 ;選擇數(shù)碼管,低位
36、</p><p> mov dx,ioportb</p><p><b> out dx,al</b></p><p> mov al,byte ptr[di] ;LED顯示數(shù)字</p><p> mov dx,ioporta</p><p><b> out dx,al
37、</b></p><p> mov cx,3000</p><p> delay2: loop delay2</p><p> mov di,offset led</p><p> mov byte ptr bz,bh</p><p><b> add di,bz</b>&l
38、t;/p><p><b> mov al,00</b></p><p> mov dx,ioporta</p><p><b> out dx,al</b></p><p> mov al,4 ;選擇數(shù)碼管,高位</p><p> mov d
39、x,ioportb</p><p><b> out dx,al</b></p><p> mov al,byte ptr[di] ;LED顯示數(shù)字</p><p> mov dx,ioporta</p><p><b> out dx,al</b></p><
40、p> mov cx,3000</p><p> delay3: loop delay3</p><p><b> pop dx</b></p><p><b> ret</b></p><p><b> disp endp</b></p><
41、p> 方案實現(xiàn)與測試(或調(diào)試)</p><p> 1、用TD調(diào)試工具對每個子程序模塊進行單步斷點測試,觀察各寄存器,標(biāo)志寄存器的狀態(tài)是否正確,重點關(guān)注跳轉(zhuǎn)指令處是否跳轉(zhuǎn)正確。對中斷服務(wù)子程序模塊的調(diào)試重點檢查斷點的現(xiàn)場保護和現(xiàn)場的恢復(fù),觀察堆棧段的壓棧和出棧的情況。</p><p> 2、整個程序連接起來,系統(tǒng)調(diào)試,對照流程圖,確定各子程序的相互調(diào)用正確,條件轉(zhuǎn)移正確,數(shù)碼管的
42、顯示是否正確,是否能正常進入中斷服務(wù)子程序和返回中斷程序。一切正常后,對系統(tǒng)的功能逐一驗證,檢測每一項功能是否能正確執(zhí)行。</p><p> 3、在程序的調(diào)試過程中,發(fā)現(xiàn)了原始程序中的一些小問題(如條件轉(zhuǎn)移指令的跳轉(zhuǎn)范圍和修改計數(shù)值程序段等)并進行了更正。單步調(diào)試時程序很好的按照設(shè)計要求運行,各項要求均符合(除了精確延遲,因為是單步調(diào)試),實現(xiàn)了預(yù)定的功能。但是在動態(tài)運行時卻出現(xiàn)了問題,主要表現(xiàn)在計數(shù)值不穩(wěn)定,
43、實際進出一次車卻出現(xiàn)了進出幾次的記錄等等。經(jīng)過仔細分析發(fā)現(xiàn)可能是由于撥碼開關(guān)存在抖動現(xiàn)象,而CPU的運行頻率很高,因此微機實際捕捉到的開關(guān)狀態(tài)跳轉(zhuǎn)不止一次,這就導(dǎo)致了計數(shù)值的不穩(wěn)定和記錄的多次顯示。</p><p> 為此改用脈沖信號代替撥碼開關(guān)進行光電信號的模擬(脈沖信號進行了消抖處理),動態(tài)運行程序后發(fā)現(xiàn)實驗現(xiàn)象正常,各個功能均按要求得以實現(xiàn)。每產(chǎn)生一次脈沖信號,空位數(shù)都會相應(yīng)的減一或加一,同時PC機上顯示
44、相應(yīng)的記錄。當(dāng)按住脈沖開關(guān)不放時,對應(yīng)的柵欄控制燈始終為暗(表示打開),同時計數(shù)值保持不變,PC機上不顯示記錄,這就表明車正在進入(或駛出)中,直至其完全進入(或離開)才進行相關(guān)操作,符合設(shè)計者的意圖。</p><p><b> 硬件實物圖:</b></p><p><b> Pc顯示:</b></p><p><
45、;b> 五.分析與總結(jié)</b></p><p> 該系統(tǒng)已經(jīng)能夠基本完成所有的需求功能,且運行穩(wěn)定,因此具有一定的價值。當(dāng)然,程序中仍</p><p> 然有待改進的地方。主要如下:</p><p> 原來的基本要求是需要2s和3s的精確延遲。預(yù)先的設(shè)計也是如此。原本是想通過8253定時器產(chǎn)生精確地1s定時,具體的實現(xiàn)辦法是通過雙通道計數(shù)器
46、的級聯(lián)對1MHz的輸入信號進行1000*1000分頻,得到1Hz的信號,如此便可得到1s的精確定時。定時的結(jié)束不是通過中斷處理,而是在計數(shù)過程中不斷地對通道1的計數(shù)值進行檢測,當(dāng)其減小到0時表明一個周期結(jié)束。但在實際運行過程中卻出現(xiàn)問題,PC機警告程序中有無效的指令。在和輔導(dǎo)老師討論了之后覺得可能是由于通道1計數(shù)值處于0的時間太短(實際差不多應(yīng)為1ms,按理應(yīng)該足夠了),于是又將其out1端接至通道2計數(shù)器的時鐘端,這樣只要通道2的計數(shù)
47、減一(可以再每次計數(shù)前對其賦值為1,則只需判斷其是否為0即可),就表明一個周期結(jié)束,且由于通道2計數(shù)的保持時間有1s,CPU有足夠的時間進行判斷。但是在實際運行中PC機仍然是警告有無效指令。無奈之下只能利用指令的延遲來進行模擬(loop指令)。</p><p> 對于數(shù)碼管的動態(tài)顯示,由于需要不停地刷新數(shù)碼管的片選信號,所以disp(顯示)子程序就需</p><p> 要不停執(zhí)行。但是
48、程序中具有延遲片段(例如車進出時受到了延誤,程序則要不停地進行判斷),若時間過長則動態(tài)顯示就會被中斷,只會顯示一位。因此需要在程序段中不停地調(diào)用顯示子程序(從源程序中可以看出)。這方面有待改進。</p><p> 對于系統(tǒng)的拓展功能,由于要求提的有點令人費解(如要求1、2),我沒能理解,因此無法實現(xiàn)。</p><p> 另外,對于拓展功能3,將兩個出入口改為四個出入口,其他要求不變,因
49、此只需在程序中添加四出入口的控制轉(zhuǎn)移程序(安排原理和雙口差不多)和對應(yīng)的進出控制程序(這個可以復(fù)制雙出口程序的代碼,只需稍加改動即可)。這里只需要注意一點,那就是C口8位需要全部用來作為輸入,輸入8個撥碼開關(guān)的信號,因此8255的控制字要做對應(yīng)的改變。這里可以改用B口的高四位作柵欄的控制信號。</p><p><b> 參考書目:</b></p><p> 楊素行
50、,微型計算機系統(tǒng)及應(yīng)用,清華大學(xué)出版社,北京,2007年11月</p><p> 東南大學(xué)《微機系統(tǒng)與接口》課程組,微機實驗及課程設(shè)計教程(試用版2.0),東南大學(xué)初出版社,南京,2009年2月</p><p><b> 附錄:</b></p><p> data segment</p><p> ioport
51、equ 0ec00h-280h ;tpc卡中設(shè)備的io地址</p><p> io8253a equ ioport+280h ;計數(shù)器通道0地址</p><p> io8253b equ ioport+281h ;計數(shù)器通道1地址</p><p> io8253c equ ioport+282h ;計數(shù)器通道2地址&l
52、t;/p><p> io8253d equ ioport+283h ;8253控制寄存器地址</p><p> io8255a equ ioport+288h ;8255A口地址 </p><p> io8255b equ ioport+28bh ;8255控制寄存器端口地址
53、 </p><p> io8255c equ ioport+28ah ;8255C口地址</p><p> io8255d equ ioport+289h ;8255B口地址</p>&l
54、t;p> prothequ ioport+290h ;行選</p><p> protlrequ ioport+298h ;紅選</p><p> protlyequ ioport+2a0h ;黃選</p><p> num db 3,4 dup(0)</p><p>
55、 a db 00h,00h ;用于存放空閑車位的十位和個位</p><p> state_a db 00h ;標(biāo)志a口狀態(tài),0表示空閑,1表示狀態(tài)前,2標(biāo)志狀態(tài)中,3標(biāo)志狀態(tài)后</p><p> state_b db 00h ;標(biāo)志b口狀態(tài),0表示空閑,1表示狀態(tài)前,2標(biāo)志狀態(tài)中,3標(biāo)志狀態(tài)后 </p><p> led db 3fh
56、,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;八段LED</p><p> copyright DB ' *******************************************************',0DH,0AH</p><p> DB '* southe
57、ast university *',0DH,0AH</p><p> DB '*---------------------------------------------------- *',0DH,0AH </p><p> DB '* system on parking lo
58、t management *',0DH,0AH</p><p> DB '* version:2013-06-02 *',0DH,0AH</p><p> DB '*----------------------------------------------------
59、 *',0DH,0AH </p><p> DB '* Yangyang Zhengxiawen *',0DH,0AH</p><p> DB '* 61011108 61011308 *
60、39;,0Dh,0Ah</p><p> DB '*******************************************************',0Dh,0Ah,'$'</p><p> mess1 db 'Please decide the parks scale with input num(00~99):
61、9; ,0dh,0ah,'$'</p><p> mess2 db 'Illegal input!' ,0dh,0ah,'$'</p><p> mess3 db 'The car is entering...',0dh,0ah,'$'</p><p> mess4 db '
62、;The car is leaving...',0dh,0ah,'$'</p><p> mess5 db 'Space available:',0dh,0ah,'$'</p><p> mess6 db 'Sorry,the park has no space!',0dh,0ah,'$'</
63、p><p> mess7 db 'No car',0dh,0ah,'$'</p><p> mess8 db 'A car wants to enter',0dh,0ah,'$'</p><p> mess9 db 'A car wants to leave',0dh,0ah,'
64、;$'</p><p> mess10 db 'error input signals, please check 8255 inport',0dh,0ah,'$'</p><p> led_in db 00h,18h,30h,7fh,7fh,30h,18h,00h;箭頭進 </p><p> led_out d
65、b 00h,18h,0ch,0feh,0feh,0ch,18h,00h;箭頭出</p><p> led_no db 00h,03ch,5ah,99h,99h,5ah,3ch,00h;禁止</p><p><b> data ends</b></p><p> stacks segment stack</p><p
66、> db 100 dup (?)</p><p> stacks ends</p><p> code segment</p><p> assume cs:code,ds:data,ss:stacks</p><p> start: mov ax,data ;初始化寄存器</p>&l
67、t;p><b> mov ds,ax</b></p><p> mov ax,stacks</p><p><b> mov ss,ax</b></p><p> mov dx,io8253d ;計數(shù)器0工作方式3</p><p> mov al,36h
68、 ;00110110,先寫低字節(jié)再寫高字節(jié),方式3(方波發(fā)生器),二進制</p><p><b> out dx,al</b></p><p> mov al,70h ;01110000,計數(shù)器1,工作方式0</p><p><b> out dx,al</b></p>&l
69、t;p> mov al,0b0h ;10110000,計數(shù)器2,工作方式0</p><p><b> out dx,al</b></p><p> mov dx,io8253a ;計數(shù)器0初值1024(第一次分頻)</p><p> mov al,00h</p><p><b
70、> out dx,al</b></p><p> mov al,04h</p><p><b> out dx,al</b></p><p> mov dx,io8255b ;8255設(shè)置為A口及C口高四位輸出,B口及C口低四位出入</p><p> mov al,83h
71、 ;10000011 設(shè)置A口及C口高四位輸出,B口及C口低四位出入</p><p><b> out dx,al</b></p><p> mov dx,offset copyright</p><p> mov ah,09h</p><p><b> int 21h</b></p
72、><p> again: mov dx,offset mess1 ;提示信息</p><p> mov ah,09h ;系統(tǒng)調(diào)用,在電腦屏幕上顯示mess1</p><p><b> int 21h</b></p><p> mov dx,offset num ;系統(tǒng)調(diào)用
73、,從鍵盤輸入初始的"空車位數(shù)"到緩沖區(qū)</p><p> mov ah,0ah</p><p><b> int 21h</b></p><p> mov al,num[2] ;判斷輸入數(shù)值是否符合條件</p><p> cmp al,30h</p><p>
74、;<b> jb error</b></p><p> cmp al,39h</p><p><b> ja error</b></p><p> mov al,num[3]</p><p> cmp al,30h ;小于0的話就轉(zhuǎn)移到error</p>
75、;<p> jb error</p><p> cmp al,39h ;大于9的話就轉(zhuǎn)移到error</p><p><b> ja error</b></p><p> sub al,36h ;將ASCII碼轉(zhuǎn)換為數(shù)字</p><p> mov a[
76、1],al</p><p> mov al,num[2]</p><p> sub al,36h</p><p> mov a[0],al</p><p><b> jmp loops</b></p><p> error: mov dx,offset mess2</p>
77、<p> mov ah,09h</p><p><b> int 21h</b></p><p><b> jmp again</b></p><p> error2:mov dx,offset mess10</p><p> mov ah,09h</p><
78、p><b> int 21h</b></p><p><b> jmp again</b></p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>
79、>>>>>>>>>>>>>>>>>>>>>>>>>>> </p><p> loops: ;主循環(huán)</p><p> call show ;調(diào)用數(shù)碼管顯示</p><p&
80、gt; call disp_mat;點陣顯示相關(guān)圖示</p><p> mov ah,01 ;系統(tǒng)調(diào)用</p><p><b> int 16h</b></p><p><b> jnz exit</b></p><p> mov dx,io8255c;從8255
81、C口讀入數(shù)據(jù)</p><p><b> in al,dx</b></p><p> ;------------------------------</p><p> cmp al,0fh;排除不可能輸入的干擾,增加健壯性</p><p><b> jz error2</b><
82、/p><p> ;-------------------------------</p><p> mov bh,a[0] ;數(shù)碼管的高位</p><p> mov bl,a[1] ;數(shù)碼管的低位</p><p> cmp bx,0000h;如果沒有空車位就轉(zhuǎn)向b</p><p>&
83、lt;b> jz b</b></p><p> test al,08h ;00001000</p><p><b> jz goon1</b></p><p> call testa1 ;a口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p> goon1:test al,
84、04h;00000100</p><p><b> jz goon2</b></p><p> call testa2</p><p> goon2: call testa3</p><p> mov bh,a[0]</p><p> mov bl,a[1]</p>
85、<p> cmp bx,0909h</p><p><b> jz loops</b></p><p> b:test al,02h ;00000010</p><p><b> jz goon3</b></p><p> call testb1 ;
86、b口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p> goon3:test al,01h;00000001</p><p><b> jz goon4</b></p><p> call testb2</p><p> goon4: call testb3</p><p><
87、;b> jmp loops</b></p><p> exit: mov ah,4ch</p><p><b> int 21h</b></p><p> ;>>>>>>>>>>>>>>>>>>>>
88、;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> </p><p> testa1 proc near</p><p><b> push a
89、x</b></p><p> push dx ;a口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p> cmp state_a,00h ;空閑</p><p> jz state_a1 </p><p> cmp state_a,01h;a口狀態(tài)前</p>
90、;<p> jz timecheck_a2s</p><p><b> jmp exit1</b></p><p> state_a1: </p><p> mov dx,offset mess8;提示有車準(zhǔn)備進入</p><p> mov ah,09h</p><p&g
91、t;<b> int 21h</b></p><p> mov state_a,01h</p><p> mov dx,io8253b;計數(shù)器通道1地址,計數(shù)器賦2s</p><p> mov al,00h </p><p><b> out dx,al</b></p>
92、<p> mov al,08h ;clk1接的是out0,經(jīng)過兩次分頻,得出兩秒</p><p><b> out dx,al</b></p><p><b> jmp exit1</b></p><p> timecheck_a2s: </p><p> mo
93、v dx,io8255d;8255B口地址</p><p><b> in al,dx</b></p><p> and al,02h ;00000010b</p><p><b> jz exit1</b></p><p> mov dx,offset mess3<
94、;/p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_a,02h</p><p> mov dx,io8255b;開燈(欄桿打開)</p><p> mov al,0bh ;00001011(C的5號
95、口對應(yīng)于欄桿信號)</p><p><b> out dx,al</b></p><p> exit1: pop dx</p><p><b> pop ax</b></p><p><b> ret</b></p><p> testa1
96、endp </p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
97、;>>>>>>> </p><p> testa2 proc near</p><p><b> push ax</b></p><p><b> push dx</b></p><p> cmp state_a,02h</p><
98、;p><b> jnz exit2</b></p><p> mov dx,io8253b;計數(shù)器通道1地址</p><p> mov al,00h</p><p><b> out dx,al</b></p><p> mov al,04h ;計時1s</
99、p><p><b> out dx,al</b></p><p> mov state_a,03h</p><p> exit2: pop dx</p><p><b> pop ax</b></p><p><b> ret</b></p
100、><p> testa2 endp </p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&
101、gt;>>>>>>>>>>>>> </p><p> testa3 proc near</p><p><b> push ax</b></p><p><b> push dx</b></p><p> cmp
102、state_a,03h</p><p><b> jnz exit3</b></p><p> mov dx,io8255d ;8255B口地址</p><p><b> in al,dx</b></p><p> and al,02h</p><p>
103、 jz exit3 ;時間到</p><p> mov al,a[1]</p><p> mov ah,a[0]</p><p><b> sub al,1</b></p><p><b> aas</b></p><p> m
104、ov a[1],al</p><p> mov a[0],ah</p><p> mov state_a,00h</p><p> mov dx,io8255b</p><p> mov al,0ah ;C5=0關(guān)燈(欄桿閉合)</p><p> out dx,al</p>&l
105、t;p> mov dx,offset mess5;屏幕顯示剩余車位</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov dl,a[0]</p><p> add dl,30h</p><p> mov ah,02
106、h</p><p><b> int 21h</b></p><p> mov dl,a[1]</p><p> add dl,30h</p><p> mov ah,02h</p><p><b> int 21h</b></p><p>
107、 mov dl,0ah;回車</p><p> mov ah,02h</p><p><b> int 21h</b></p><p> mov dl,0dh;換行</p><p> mov ah,02h</p><p><b> int 21h</b><
108、;/p><p> mov bh,a[0]</p><p> mov bl,a[1]</p><p> cmp bx,0000h</p><p><b> jnz exit3</b></p><p> mov dx,offset mess6</p><p> mov
109、ah,09h</p><p><b> int 21h</b></p><p><b> exit3: </b></p><p><b> pop dx</b></p><p><b> pop ax</b></p><p>
110、;<b> ret</b></p><p> testa3 endp </p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
111、t;>>>>>>>>>>>>>>>>>>>>> </p><p> testb1 proc near ;b口開關(guān)1撥上,監(jiān)測a口狀態(tài)</p><p><b> push ax</b></p><p>
112、; push dx</p><p> cmp state_b,00h</p><p> jz state_b1</p><p> cmp state_b,01h</p><p> jz timecheck_b2s</p><p><b> jmp exit4</b></p
113、><p> state_b1: </p><p> mov dx,offset mess9;提示有車準(zhǔn)備離開</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_b,01h</p><p&g
114、t; mov dx,io8253c;計數(shù)器賦2s</p><p> mov al,00h</p><p><b> out dx,al</b></p><p> mov al,08h</p><p><b> out dx,al</b></p><p><
115、;b> jmp exit4</b></p><p> timecheck_b2s: </p><p> mov dx,io8255d</p><p><b> in al,dx</b></p><p> and al,01h</p><p><b> jz
116、exit4</b></p><p> mov dx,offset mess4</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov state_b,02h</p><p> mov dx,io8255b;開燈
117、(欄桿打開)</p><p> mov al,09h</p><p><b> out dx,al</b></p><p> exit4: pop dx</p><p><b> pop ax</b></p><p><b> ret</b>&
118、lt;/p><p> testb1 endp </p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
119、t;>>>>>>>>>>>>>> </p><p> testb2 proc near</p><p><b> push ax</b></p><p><b> push dx</b></p><p> c
120、mp state_b,02h</p><p><b> jnz exit5</b></p><p> mov dx,io8253c</p><p> mov al,00h</p><p><b> out dx,al</b></p><p> mov al,0ch
121、 ;計時3s</p><p><b> out dx,al</b></p><p> mov state_b,03h</p><p> exit5: pop dx</p><p><b> pop ax</b></p><p><b> re
122、t</b></p><p> testb2 endp </p><p> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
123、>>>>>>>>>>>>>>>>>> </p><p> testb3 proc near</p><p><b> push ax</b></p><p><b> push dx</b></p>
124、<p> cmp state_b,03h</p><p><b> jnz exit6</b></p><p> mov dx,io8255d</p><p><b> in al,dx</b></p><p> and al,01h</p><p>
125、<b> jz exit6</b></p><p> mov al,a[1]</p><p> mov ah,a[0]</p><p><b> add al,1</b></p><p><b> aaa</b></p><p> mov a
126、[1],al</p><p> mov a[0],ah</p><p> mov state_b,00h</p><p> mov dx,io8255b</p><p> mov al,08h ;關(guān)燈(欄桿關(guān)閉)</p><p> out dx,al</p><p>
127、 mov dx,offset mess5;屏幕顯示剩余車位</p><p> mov ah,09h</p><p><b> int 21h</b></p><p> mov dl,a[0]</p><p> add dl,30h</p><p> mov ah,02h</p&
128、gt;<p><b> int 21h</b></p><p> mov dl,a[1]</p><p> add dl,30h</p><p> mov ah,02h</p><p><b> int 21h</b></p><p> mov dl
129、,0ah</p><p> mov ah,02h</p><p><b> int 21h</b></p><p> mov dl,0dh</p><p> mov ah,02h</p><p><b> int 21h</b></p><p&g
130、t; mov bh,a[0]</p><p> mov bl,a[1]</p><p> cmp bx,0909h</p><p><b> jnz exit6</b></p><p> mov dx,offset mess7</p><p> mov ah,09h</p>
131、<p><b> int 21h</b></p><p><b> exit6: </b></p><p><b> pop dx</b></p><p><b> pop ax</b></p><p><b> ret&
132、lt;/b></p><p> testb3 endp </p><p> ;==============================================================</p><p> show proc near </p><p><b> push dx</b>
133、</p><p><b> push ax</b></p><p> push si ;數(shù)碼管顯示</p><p> mov dx,io8255b ;向8255的C口第六位寫入0,低位</p><p> mov al,0ch
134、 ;00001100,</p><p> out dx,al</p><p> mov al,a[0]</p><p> mov ah,00h</p><p> mov dx,io8255a ;A口輸出</p><p><b> mov si,ax</b><
135、;/p><p> mov al,led[si]</p><p><b> out dx,al</b></p><p> mov dx,io8255b ;使相應(yīng)的數(shù)碼管亮 高位</p><p> mov al,0fh ;00001111,向C口的第七位寫人1
136、</p><p><b> out dx,al</b></p><p> mov cx,0ffffh</p><p><b> delay1:</b></p><p> loop delay1</p><p> mov dx,io8255b <
137、/p><p> mov al,0eh ;00001110,向C口的第七位寫入0 </p><p> out dx,al</p><p> mov al,a[1]</p><p> mov ah,00h</p><p> mov dx,io8255a</p>
138、;<p><b> mov si,ax</b></p><p> mov al,led[si]</p><p> out dx,al</p><p> mov dx,io8255b ;使相應(yīng)的數(shù)碼管亮 低位</p><p> mov al,0dh
139、 ;00001101,向C口的第六位寫入1</p><p><b> out dx,al</b></p><p><b> pop si</b></p><p><b> pop ax</b></p><p><b> pop dx</b
140、></p><p><b> ret</b></p><p><b> show endp</b></p><p> ;===========================================================</p><p> disp_mat proc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計---停車場停車場車輛管理系統(tǒng)實現(xiàn)與設(shè)計
- 停車場管理系統(tǒng)課程設(shè)計
- 停車場管理系統(tǒng)課程設(shè)計報告
- 停車場系統(tǒng)課程設(shè)計
- 課程設(shè)計---停車場管理
- 課程設(shè)計報告-- 停車場管理系統(tǒng)
- 課程設(shè)計報告—停車場管理系統(tǒng)
- 智能停車場課程設(shè)計--校園智能停車場的系統(tǒng)設(shè)計
- 停車場管理問題課程設(shè)計
- 停車場管理系統(tǒng)c++課程設(shè)計
- 校園智能停車場的系統(tǒng)設(shè)計-智能停車場課程設(shè)計
- 停車場管理問題系統(tǒng)課程設(shè)計報告
- c語言課程設(shè)計 停車場管理系統(tǒng)
- 課程設(shè)計報告---停車場車位管理
- 地下停車場課程設(shè)計
- 停車場管理課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--停車場管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---停車場管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-- 停車場管理系統(tǒng)
- 大型停車場指示系統(tǒng)課程設(shè)計
評論
0/150
提交評論