武汉科技大学微机原理课程设计-模拟电梯系统(汇编)_第1页
武汉科技大学微机原理课程设计-模拟电梯系统(汇编)_第2页
武汉科技大学微机原理课程设计-模拟电梯系统(汇编)_第3页
武汉科技大学微机原理课程设计-模拟电梯系统(汇编)_第4页
武汉科技大学微机原理课程设计-模拟电梯系统(汇编)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉科技大学微机原理课程设计-模拟电梯系统(汇编)二○一三~二○一四学年第二学期电子技术学院电子信息工程系课程设计报告书班级:姓名:课程名称:微机原理及应用课程设计学时学分:1周1学分指导老师:杨君二○一三年十二月三十一日一、课程设计目的:综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。二、课程设计时间安排:第一天:教师布置设计任务,讲解设计要求,提示设计要点。第二~三天:查阅资料(在图书馆或上网),提出设计方案。第三~七天:画出详细设计图(电路图),编写程序,调试程序,得出实验结果并写出设计报告。三、课程设计选题:设计要求:(1).在1--8楼之间一次可输入多个任意楼层号连续控制电梯按指定楼层号顺序上升与下降.以上过程完成后可重新输入任意楼层号连续控制电梯按指定楼层号顺序上升与下降.只有按ESC键才退出程序返回DOS状态。例如:1-3-5-7-6-4-2-1(可观察教十楼电梯的实际运行情况).(2).在1--7楼之间按任意顺序不连续控制电梯上升与下降.按一次计算机键盘的上箭头电梯上升一楼,按一次计算机键盘的下箭头电梯下降一楼.(上箭头的ASCII码19H,下箭头的ASCII码1AH.)(3).在电梯上升与下降过程中,要显示出1--7楼之间所要到达的楼层数,同时还要用箭头显示电梯是上升状态还是下降状态.(4).电梯运行到指定楼层后,打开电梯门,然后关门继续运行.(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;设定颜色参数-->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中的数据PUSHCXSUBAX,AXINT1AH;INT1AH的0号功能读当前时钟值,CX:DX=时钟计数值MOVTIME,DXMOVTIME[2],CXREAD:SUBAX,AXINT1AHSUBDX,TIMESBBCX,TIME[2]CMPDX,DLYJBREADPOPCX;出栈,恢复现场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;坐标调整到移动之前的坐标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;画电梯关门状态的宏LOCALCEMOV[DZ],220CE:HENG210,[DZ],09H,370;电梯关门INC[DZ]CMP[DZ],420JNZCESHU291,220,02H,420;电梯大门缝隙SHU290,220,02H,420SHU289,220,02H,420ENDM;---------------------------------------HALFMACRO;画电梯半开门状态的宏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;画电梯全开门状态的宏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",有就进入暂停等待循环,没有则退出JNZWANMOVDX,0301HPOSMOVDX,OFFSETMSG7;显示MSG7MOVAH,9INT21HMOVAH,0CH;清空键盘缓存INT21HWAIT:CLC;CF=0MOVAH,1INT16HCMPAL,'b';检测键盘缓存中是否有"b",有就退出暂停等待循环,没有则继续循环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;信息栏内边框HENG223,148,0AH,417SHU223,102,0AH,148SHU417,102,0AH,148CLOSE;电梯大门处于关闭状态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;三维电梯上侧面DEC[DZ]INCDX1INCDX2CMP[DZ],180JNZSB1MOV[DZ],371MOVDX1,220MOVDX2,420SB2:SHU[DZ],DX1,03H,DX2;三维电梯右侧面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;记录输入的字符个数MOVBP,2MOVAL,DAT[BP]CMPAL,'w';输入w则上升一层JEUP1CMPAL,'s';输入s则下降一层JEDOWN1CMPAL,31H;输入小于1的ACSⅡ码则退出JBOVERCMPAL,38H;输入大于8的ACSⅡ码则退出JAOVERANDAL,0FH;输入1至8则进入多楼层控制命令循环TARGET1MOVNUM1,ALTARGET1:ADDBP,2;因为输入格式为"1-2-6",每次BP偏移两位起到了仅取有效位数字的作用MOVAL,DAT[BP]ANDAL,0FH;将字符转换为数字CMPAL,1;检测后续输入的字符是否合法,超出1~8范围则返回输入界面JBINPUTCMPAL,8JAINPUTMOVNUM2,ALMOVDX,0831HPOSMOVDL,DAT[BP];显示电梯下一站要停的楼层数MOVAH,2INT21HDELAYTARGET2:MOVAL,NUM2CMPAL,NUM1;若下一站楼层大于当前楼层,则跳至上升命令段JATARGET3;若下一站楼层小于当前楼层,则在当前命令段MOVAL,NUM2CMPAL,NUM1;第二次比较,若到达目标楼层或两站楼层相同则跳至SHOW命令显示开关门动画JZSHOWDECNUM1PAUSE;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停DOWNNUM1,DX1;电梯下降MOVDX,0829HPOSMOVDL,19H;显示下箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;显示当前楼层数ADDDL,30H;将数字转换为ASCⅡ码MOVAH,2INT21HDELAY;电梯在每一层停留1S以便观察JMPTARGET2TARGET3:INCNUM1PAUSE;在画图命令之前插入暂停命令,确保电梯在任何楼层时都能暂停UPNUM1,DX1;电梯上升MOVDX,0829HPOSMOVDL,18H;显示上箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;显示当前楼层数ADDDL,30H;将数字转换为ASCⅡ码MOVAH,2INT21HDELAY;电梯在每一层停留1S以便观察JMPTARGET2UP1:CMPNUM1,8JNBINPUTINCNUM1MOVDX,0831HPOSMOVDL,NUM1;显示电梯下一站要停的楼层数ADDDL,30HMOVAH,2INT21HUPNUM1,DX1;电梯上一层MOVDX,0829HPOSMOVDL,18H;显示上箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;显示当前楼层数ADDDL,30H;将数字转换为ASCⅡ码MOVAH,2INT21HJMPSHOWDOWN1:CMPNUM1,1JNAINPUTDECNUM1MOVDX,0831HPOSMOVDL,NUM1;显示电梯下一站要停的楼层数ADDDL,30HMOVAH,2INT21HDOWNNUM1,DX1;电梯下一层MOVDX,0829HPOSMOVDL,19H;显示下箭头MOVAH,2INT21HMOVDX,072BHPOSMOVDL,NUM1;显示当前楼层数ADDDL,30H;将数字转换为ASCⅡ码MOVAH,2INT21HSHOW:MOVDX,0829HPOSMOVDL,'-';到达楼层时"Direction"显示"-"MOVAH,2INT21HDELAY;电梯门开关每个动作间停留1S以便观察PAUSE;每个动作后插入PAUSE使电梯能在开关门时暂停HALFDELAYPAUSEFULLDELAYPAUSEHALFDELAYPAUSECLOSEDELAYPAUSESUB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论