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

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論