武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)_第1頁
武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)_第2頁
武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)_第3頁
武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)_第4頁
武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

武漢科技大學微機原理課程設計-模擬電梯系統(tǒng)(匯編)二○一三~二○一四學年第二學期電子技術學院電子信息工程系課程設計報告書班級:姓名:課程名稱:微機原理及應用課程設計學時學分:1周1學分指導老師:楊君二○一三年十二月三十一日一、課程設計目的:綜合運用本課程知識,利用集成電路設計實現(xiàn)一些中小規(guī)模電子電路或者完成一定功能的程序,以復習鞏固課堂所學的理論知識,提高程序設計實現(xiàn)系統(tǒng)、繪制系統(tǒng)電路圖的能力,為實際應用奠定一定的基礎。二、課程設計時間安排:第一天:教師布置設計任務,講解設計要求,提示設計要點。第二~三天:查閱資料(在圖書館或上網(wǎng)),提出設計方案。第三~七天:畫出詳細設計圖(電路圖),編寫程序,調(diào)試程序,得出實驗結(jié)果并寫出設計報告。三、課程設計選題:設計要求:(1).在1--8樓之間一次可輸入多個任意樓層號連續(xù)控制電梯按指定樓層號順序上升與下降.以上過程完成后可重新輸入任意樓層號連續(xù)控制電梯按指定樓層號順序上升與下降.只有按ESC鍵才退出程序返回DOS狀態(tài)。例如:1-3-5-7-6-4-2-1(可觀察教十樓電梯的實際運行情況).(2).在1--7樓之間按任意順序不連續(xù)控制電梯上升與下降.按一次計算機鍵盤的上箭頭電梯上升一樓,按一次計算機鍵盤的下箭頭電梯下降一樓.(上箭頭的ASCII碼19H,下箭頭的ASCII碼1AH.)(3).在電梯上升與下降過程中,要顯示出1--7樓之間所要到達的樓層數(shù),同時還要用箭頭顯示電梯是上升狀態(tài)還是下降狀態(tài).(4).電梯運行到指定樓層后,打開電梯門,然后關門繼續(xù)運行.(5).電梯運行時,在任意時刻遇到緊急情況時應能實時中斷電梯運行.也可以AH=6屏幕初始化或上卷.AL=0整個窗口空白.INT10H;CH=左上角行號,CL=左下角列號.ENDM;DH=右上角行號,DL=右下角列號.;---------------------------------------POSMACRO;移動光標的宏MOVBH,00H;BH=頁號DH,DL=行號,列號.MOVAH,02H;AH=2置光標位置.INT10HENDM;---------------------------------------HENGMACROX1,Y1,COLOR,X2;寫橫的宏LOCALBH1;定義標號MOVCX,X1;起始點橫作標-->CXMOVDX,Y1;起始點縱作標-->DXBH1:MOVAH,0CH;寫象素MOVAL,COLOR;設定顏色參數(shù)-->ALINT10HINCCXCMPCX,X2;寫至終點橫作標為止JNZBH1ENDM;---------------------------------------SHUMACROCX1,CY1,COLOR,CY2;寫豎的宏LOCALBH2;定義標號MOVCX,CX1MOVDX,CY1BH2:MOVAH,0CHMOVAL,COLOR;AL=(00--0FH)共16種顏色.INT10HINCDXCMPDX,CY2JNZBH2ENDM;---------------------------------------DELAYMACRO;延時1s的宏LOCALREADPUSHDX;入棧,保護原有DX、CX中的數(shù)據(jù)PUSHCXSUBAX,AXINT1AH;INT1AH的0號功能讀當前時鐘值,CX:DX=時鐘計數(shù)值MOVTIME,DXMOVTIME[2],CXREAD:SUBAX,AXINT1AHSUBDX,TIMESBBCX,TIME[2]CMPDX,DLYJBREADPOPCX;出棧,恢復現(xiàn)場POPDXENDM;---------------------------------------UPMACRON,DX1;小方塊上升的宏LOCALUPA,UPB;定義標號MOVAL,N;小方塊從N-1層上升至N層MOVCH,30;小方塊上升一層,并且將下一層的小方塊清除MULCH;30*N個像素MOVDX,430SUBDX,AX;430-30*N個像素得到畫小方塊的縱坐標下限值MOV[DZ],DXADDDX,20;每個小方塊邊長為20個像素MOVDX1,DX;得到縱坐標上限值UPA:HENG170,[DZ],0CH,190;畫小方塊INC[DZ]MOVAX,DX1CMP[DZ],AXJNZUPAADDDX,11;坐標調(diào)整到移動之前的坐標MOV[DZ],DXADDDX,20MOVDX1,DXUPB:HENG170,[DZ],00H,190;擦原小方塊INC[DZ]MOVAX,DX1CMP[DZ],AXJNZUPBENDM;---------------------------------------DOWNMACRON,DX1;小方塊下降的宏LOCALDOWNA,DOWNB;定義標號MOVAL,N;小方塊從N+1層下降至N層MOVCH,30;小方塊下降一層,并且將上一層的小方塊清除MULCHMOVDX,430SUBDX,AXMOV[DZ],DXADDDX,20MOVDX1,DXDOWNA:HENG170,[DZ],0CH,190;畫小方塊INC[DZ]MOVAX,DX1CMP[DZ],AXJNZDOWNASUBDX,49MOV[DZ],DXADDDX,20MOVDX1,DXDOWNB:HENG170,[DZ],00H,190;擦原有小方塊INC[DZ]MOVAX,DX1CMP[DZ],AXJNZDOWNBENDM;---------------------------------------CLOSEMACRO;畫電梯關門狀態(tài)的宏LOCALCEMOV[DZ],220CE:HENG210,[DZ],09H,370;電梯關門INC[DZ]CMP[DZ],420JNZCESHU291,220,02H,420;電梯大門縫隙SHU290,220,02H,420SHU289,220,02H,420ENDM;---------------------------------------HALFMACRO;畫電梯半開門狀態(tài)的宏LOCALHFMOV[DZ],221HF:HENG210,[DZ],09H,250;電梯半開門HENG252,[DZ],07H,328HENG330,[DZ],09H,370INC[DZ]CMP[DZ],420JNZHFSHU251,220,02H,420;電梯大門縫隙SHU329,220,02H,420ENDM;---------------------------------------FULLMACRO;畫電梯全開門狀態(tài)的宏LOCALFLMOV[DZ],221FL:HENG210,[DZ],09H,215;電梯全開門HENG217,[DZ],07H,363HENG365,[DZ],09H,370INC[DZ]CMP[DZ],420JNZFLSHU216,220,02H,420;電梯大門縫隙SHU364,220,02H,420ENDM;---------------------------------------PAUSEMACRO;電梯緊急暫停的宏LOCALWAIT,WANSUBAX,AXMOVAH,1INT16HCMPAL,'a';讀取鍵盤緩存中是否有"a",有就進入暫停等待循環(huán),沒有則退出JNZWANMOVDX,0301HPOSMOVDX,OFFSETMSG7;顯示MSG7MOVAH,9INT21HMOVAH,0CH;清空鍵盤緩存INT21HWAIT:CLC;CF=0MOVAH,1INT16HCMPAL,'b';檢測鍵盤緩存中是否有"b",有就退出暫停等待循環(huán),沒有則繼續(xù)循環(huán)JNZWAITWAN:MOVDX,0301HPOSMOVDX,OFFSETMSG6;用于將MSG7的信息擦除MOVAH,9INT21HMOVAH,0CHINT21HENDM;---------------------------------------datasegmentMSG1DB'Pleasepress"1-8"or"w/s"rootherstoterminate.(eg:1-3-8/w):$';輸出多個空格是為了清空上一次的輸入MSG2DB'Pleasepressanykey.','$'MSG3DB'Floor:$'MSG4DB'Direction:$'MSG5DB'To:$'MSG6DB'Whentheelevatorrunning,pleasepress"a"toemergencystop.$'MSG7DB'Pleasepress"b"tocontinue.$'MSG8DB'WUSTLiGang2014.2.5$'DATDB0FFH,0,255DUP(0)DLYEQU18DZDW0TIMEDW0,0NUM1DB1NUM2DB1COUNTDB0DX1DW0DX2DW0dataends;---------------------------------------stackssegmentSTADW100DUP(0)TOPDW?stacksends;---------------------------------------codesegmentassumecs:code,ds:data,ss:stacks;---------------------------------------startprocfarmovax,datamovds,axmovax,stacksmovss,axmovax,datamoves,axpushaxpushbxpushcxpushdxpushsipushdiMOVCX,0MOVDX,2479HMOVBH,7MOVAX,0601HINT10HMOVAX,0012H;置圖形顯示方式INT10H;640列*480行,16色.MOVDX,0;光標位置初始化POSHENG220,99,0AH,420;信息欄外邊框HENG220,151,0AH,420SHU220,99,0AH,151SHU420,99,0AH,151HENG223,102,0AH,417;信息欄內(nèi)邊框HENG223,148,0AH,417SHU223,102,0AH,148SHU417,102,0AH,148CLOSE;電梯大門處于關閉狀態(tài)HENG210,220,02H,370;電梯大門縫隙邊框HENG210,420,02H,370SHU210,220,02H,420SHU370,220,02H,420HENG209,219,02H,371;加粗邊框SHU209,220,02H,420SHU371,220,02H,420MOV[DZ],219MOVDX1,210MOVDX2,370SB1:HENGDX1,[DZ],03H,DX2;三維電梯上側(cè)面DEC[DZ]INCDX1INCDX2CMP[DZ],180JNZSB1MOV[DZ],371MOVDX1,220MOVDX2,420SB2:SHU[DZ],DX1,03H,DX2;三維電梯右側(cè)面INC[DZ]DECDX1DECDX2CMP[DZ],410JNZSB2MOV[DZ],421SB3:HENG160,[DZ],0EH,200;畫電梯框架SUB[DZ],30CMP[DZ],151JNZSB3SHU160,181,0EH,422SHU200,181,0EH,422MOV[DZ],400BRICK:HENG170,[DZ],0CH,190;畫初始小方塊INC[DZ]MOVAX,420CMP[DZ],AXJNZBRICKMOVDX,072BHPOSMOVDL,NUM1ADDDL,30HMOVAH,2INT21H;初始樓層顯示"1"MOVDX,1C3BHPOSMOVDX,OFFSETMSG8;顯示MSG8MOVAH,9INT21HMOVDX,0723HPOSMOVDX,OFFSETMSG3;顯示MSG3MOVAH,9INT21HMOVDX,081DHPOSMOVDX,OFFSETMSG4;顯示MSG4MOVAH,9INT21HMOVDX,082DHPOSMOVDX,OFFSETMSG5;顯示MSG5MOVAH,9INT21HMOVDX,0301HPOSMOVDX,OFFSETMSG6;顯示MSG6MOVAH,9INT21HINPUT:MOVDX,0101HPOSMOVDX,OFFSETMSG1;顯示MSG1MOVAH,9INT21HMOVDX,0143HPOSMOVDX,OFFSETDAT;輸入并顯示字符串MOVAH,10INT21HMOVAL,DAT+1MOVCOUNT,AL;記錄輸入的字符個數(shù)MOVBP,2MOVAL,DAT[BP]CMPAL,'w';輸入w則上升一層JEUP1CMPAL,'s';輸入s則下降一層JEDOWN1CMPAL,31H;輸入小于1的ACSⅡ碼則退出JBOVERCMPAL,38H;輸入大于8的ACSⅡ碼則退出JAOVERANDAL,0FH;輸入1至8則進入多樓層控制命令循環(huán)TARGET1MOVNUM1,ALTARGET1:ADDBP,2;因為輸入格式為"1-2-6",每次BP偏移兩位起到了僅取有效位數(shù)字的作用MOVAL,DAT[BP]ANDAL,0FH;將字符轉(zhuǎn)換為數(shù)字CMPAL,1;檢測后續(xù)輸入的字符是否合法,超出1~8范圍則返回輸入界面JBINPUTCMPAL,8JAINPUTMOVNUM2,ALMOVDX,0831HPOSMOVDL,DAT[BP];顯示電梯下一站要停的樓層數(shù)MOVAH,2INT21HDELAYTARGET2:MOVAL,NUM2CMPAL,NUM1;若下一站樓層大于當前樓層,則跳至上升命令段JATARGET3;若下一站樓層小于當前樓層,則在當前命令段MOVAL,NUM2CMPAL,NUM1;第二次比較,若到達目標樓層或兩站樓層相同則跳至SHOW命令顯示開關門動畫JZSHOWDECNUM1PAUSE;在畫圖命令之前插入暫停命令,確保電梯在任何樓層時都能暫停DOWNNUM1,DX1;電梯下降MOVDX,0829HPOSMOVDL,19H;顯示下箭頭MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;顯示當前樓層數(shù)ADDDL,30H;將數(shù)字轉(zhuǎn)換為ASCⅡ碼MOVAH,2INT21HDELAY;電梯在每一層停留1S以便觀察JMPTARGET2TARGET3:INCNUM1PAUSE;在畫圖命令之前插入暫停命令,確保電梯在任何樓層時都能暫停UPNUM1,DX1;電梯上升MOVDX,0829HPOSMOVDL,18H;顯示上箭頭MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;顯示當前樓層數(shù)ADDDL,30H;將數(shù)字轉(zhuǎn)換為ASCⅡ碼MOVAH,2INT21HDELAY;電梯在每一層停留1S以便觀察JMPTARGET2UP1:CMPNUM1,8JNBINPUTINCNUM1MOVDX,0831HPOSMOVDL,NUM1;顯示電梯下一站要停的樓層數(shù)ADDDL,30HMOVAH,2INT21HUPNUM1,DX1;電梯上一層MOVDX,0829HPOSMOVDL,18H;顯示上箭頭MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;顯示當前樓層數(shù)ADDDL,30H;將數(shù)字轉(zhuǎn)換為ASCⅡ碼MOVAH,2INT21HJMPSHOWDOWN1:CMPNUM1,1JNAINPUTDECNUM1MOVDX,0831HPOSMOVDL,NUM1;顯示電梯下一站要停的樓層數(shù)ADDDL,30HMOVAH,2INT21HDOWNNUM1,DX1;電梯下一層MOVDX,0829HPOSMOVDL,19H;顯示下箭頭MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;顯示當前樓層數(shù)ADDDL,30H;將數(shù)字轉(zhuǎn)換為ASCⅡ碼MOVAH,2INT21HSHOW:MOVDX,0829HPOSMOVDL,'-';到達樓層時"Direction"顯示"-"MOVAH,2INT21HDELAY;電梯門開關每個動作間停留1S以便觀察PAUSE;每個動作后插入PAUSE使電梯能在開關門時暫停HALFDELAYPAUSEFULLDELAYPAUSEHALFDELAYPAUSECLOSEDELAYPAUSESUB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論