微机原理课程设计电梯设计.docx

上传人:b****8 文档编号:9844716 上传时间:2023-02-07 格式:DOCX 页数:21 大小:17.81KB
下载 相关 举报
微机原理课程设计电梯设计.docx_第1页
第1页 / 共21页
微机原理课程设计电梯设计.docx_第2页
第2页 / 共21页
微机原理课程设计电梯设计.docx_第3页
第3页 / 共21页
微机原理课程设计电梯设计.docx_第4页
第4页 / 共21页
微机原理课程设计电梯设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理课程设计电梯设计.docx

《微机原理课程设计电梯设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电梯设计.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理课程设计电梯设计.docx

微机原理课程设计电梯设计

datasegment

io8255aequioport+288h;8255控制端以及a,c端口地址

io8255bequioport+289h

io8255cequioport+28ah

io8255equioport+28bh

io8253aequioport+280h;8253控制端以及0,2计数端口地址

ioportequ0b800h-0280h

ls273aequioport+2a8h;74ls273地址

ls273bequioport+2b0h

io8253bequioport+282h

io8253cequioport+283h

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;

MENUDB'

DB'P----------STOP!

',0DH,0AH

DB'V----------VIPARRIVE!

',0DH,0AH

DB'ESC----------EXIT!

',0DH,0AH

DB'1~8------1~8FLOOR!

',0DH,0AH

DB'ENTER----------RUN!

',0DH,0AH,'$'

dataends

 

stackssegmentstack

db100dup(?

stacksends

 

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,offsetmenu

movah,09

int21h

movdx,io8255;8255初始化,a口输出,c口输入

moval,89h

outdx,al

movcl,31h;cl代表当前电梯所在楼层,初始值设为1

main:

moval,0

calldisp;显示当前楼层

movbl,0;bl为第一次输入的要去的楼层

movch,0;ch为在中途中再次输入的要去的楼层

calldisp8led

movah,01;键盘输入bl

int21h

cmpal,1bh;是esc则退出

jeexit1

cmpal,31h;在1-8之间

jlmain

cmpal,38h

jgmain

movbl,al

calldisp8led;8led显示bl对应的楼层

cmpbl,cl;bl与cl比较

jemain;相等则返回重新输入

jgup;大于则向上运行

jldown;小于则向下运行

up:

callstop;调用暂停子程序

goup:

addcl,1

callupdelay;调用向上运行延时子程序

calldisp;调用显示子程序,用于显示当前楼层cl

cmpcl,bl;cl,bl不等则继续

jemain;相等则返回

jmpgoup

exit1:

jmpexit

tomain:

jmpmain

upgetch:

movah,1;在上升过程中如在有按键则跳转此处

int21h

cmpal,73h;s键断电待修

jeuprepair

cmpal,70h;p键急停键

jeurgent

cmpal,31h;在1-8之间?

如不是继续上行

jlgotoup

cmpal,38h

jggotoup

movch,al

calldisp8led;显示cl对应楼层led

calldelay2;两秒计时时间到

calldisp;显示当前楼层

callblequcl;判断bl与cl是否相等

cmpch,cl;比较ch与cl的区别

jestopupbl;相等着在该层停,等待运行信号输入

jlupbldownch;ch小于.l则先上行至bl在下行至ch

cmpch,bl;ch大于cl则在判断ch与bl的大小关系

jejmpupbl;相等则一直上行至bl

jlupchupbl;ch大于cl小于bl则先上行到ch在上行到bl

jgtoupblupch;ch大于bl则先上行到bl在上行到ch

gotoup:

calldelay2

jmpgoup

uprepair:

moval,0;

movah,1

int21h

cmpal,73h

jneuprepair

calldelay2

calldisp

jmpgoup

urgent:

calldelay2;急停功能

calldisp

jmpmain

updelayprocnear;向上运行延时子程序

calldelay;用于初始化8253

pushdx

ud:

movah,1;键盘是否有输入

int16h

jneupgetch;如有则跳转到输入处理

movdx,io8255c;8255c口输入

inal,dx

andal,01;是否计时结束

jzud

popdx

ret

updelayendp

toupblupch:

jmpupblupch

down:

callstop;调用暂停子程序

godown:

subcl,1

calldowndelay;调用向下运行延时子程序

calldisp;调用显示子程序,用于显示当前楼层cl

cmpcl,bl;cl,bl不等则继续

jetomain;相等则返回

jmpgodown

stopupbl:

calldisp

movch,0

calldisp8led

callstop2

callupbl

jmpmain

upbldownch:

calldisp8led

callupbl

movbl,0

calldisp8led

callstop2

calldownch

jmpmain

jmpupbl:

movch,0

calldisp8led

callupbl

jmpmain

upchupbl:

calldisp8led

callupch

movch,0

calldisp8led

callstop2

callupbl

jmpmain

upblupch:

calldisp8led

callupbl

movbl,0

calldisp8led

callstop2

callupch

jmpmain

downdelayprocnear;向下运行延时子程序,与向上运行延时子程序大体相同

calldelay

pushdx

ddy:

movah,1

int16h

jnedowngetch

movdx,io8255c

inal,dx

andal,01

jzddy

popdx

ret

downdelayendp

downgetch:

movah,1;在下降过程中如在有按键则跳转此处

int21h

cmpal,73h;s键断电待修,验收时改用开关改变8253门控信号实现该功能

jedownrepair

cmpal,70h;p键急停键

jeurgent2

cmpal,31h;在1-8之间?

如不是继续下降

jlgotodown

cmpal,38h

jggotodown

movch,al

calldisp8led;显示cl对应楼层led

calldelay2;两秒计时时间到

calldisp;显示当前楼层

callblequcl;判断bl与cl是否相等

cmpch,cl;比较ch与cl的区别

jestopdownbl;相等着在该层停,等待运行信号输入

jgdownblupch;ch大于cl则先下行至bl在上行至ch

cmpch,bl;ch小于cl则在判断ch与bl的大小关系

jejmpdownbl;相等则一直下行至bl

jldownbldownch;ch小于cl小于bl则先下行到bl在下行到ch

jgdownchdownbl;ch大于bl则先下行到ch在下行到bl

gotodown:

calldelay2

jmpgodown

downrepair:

moval,0

movah,1

int21h

cmpal,73h

jnedownrepair

calldelay2

calldisp

jmpgodown

stopdownbl:

calldisp8led

movch,0

calldisp8led

callstop2

calldownbl

jmpmain

downblupch:

calldisp8led

calldownbl

movbl,0

calldisp8led

callstop2

callupch

jmpmain

urgent2:

calldelay2;急停功能

calldisp

jmpmain

jmpdownbl:

movch,0

calldisp8led

calldownbl

jmpmain

downbldownch:

calldisp8led

calldownbl

movbl,0

calldisp8led

callstop2

calldownch

jmpmain

downchdownbl:

calldisp8led

calldownch

movch,0

calldisp8led

callstop2

calldownbl

jmpmain

vip:

cmpbl,cl;直达功能

jlvipdown

jgvipup

jmpmain

vipup:

addcl,1

callvipdelay

calldisp

jmpvip

vipdown:

subcl,1

callvipdelay

calldisp

jmpvip

vipgetch:

movah,1;直达过程中对急停以及断电待修的处理

int21h

cmpal,73h

jeviprepair

cmpal,70h

jeurgent2

calldelay2

jmpvip

viprepair:

moval,0

movah,1

int21h

cmpal,73h

jneviprepair

calldelay2

calldisp

jmpvip

vipdelayprocnear;直达的延时子程序

calldelay

pushdx

vd:

movah,1

int16h

jnevipgetch

movdx,io8255c

inal,dx

andal,01

jzvd

popdx

ret

vipdelayendp

stopprocnear;暂停子程序,实现按回车继续和判断是否为直达键

gostop:

moval,0

movah,1

int21h

cmpal,76h;是否为直达键

jevip

cmpal,13;是否为运行键

jnegostop

moval,0

ret

stopendp

upblprocnear;上行到bl的子程序

upbl1:

addcl,1

calldirdelay

calldisp

cmpcl,bl

jlupbl1

ret

upblendp

upchprocnear;上行到ch的子程序

upch1:

addcl,1

calldirdelay

calldisp

cmpcl,ch

jlupch1

ret

upchendp

downblprocnear;下行到bl的子程序

downbl1:

subcl,1

calldirdelay

calldisp

cmpcl,bl

jgdownbl1

ret

downblendp

downchprocnear;下行到ch的子程序

downch1:

subcl,1

calldirdelay

calldisp

cmpcl,ch

jgdownch1

ret

downchendp

delayprocnear;初始化8253的子程序,两计数器连级

pushdx

movdx,io8253c;8253的计数器0置方式3

moval,36h

outdx,al

movdx,io8253a;计数器0初始值为10000

movax,10000

outdx,al

moval,ah

outdx,al

movdx,io8253c;8253的计数器1置方式0

moval,70h

outdx,al

movdx,io8253b;计数器1初始值为200

movax,200

outdx,al

moval,ah

outdx,al

popdx

ret

delayendp

urgent3:

calldelay2

calldisp

jmpmain

blequclprocnear

cmpbl,cl

jneback

cmpbl,ch

jeblequch

movbl,0

calldisp

calldisp8led

callstop2

cmpch,cl

jgupchhere

jldownchhere

upchhere:

callupch

jmpmain

downchhere:

calldownch

jmpmain

blequch:

movch,0

calldisp8led

calldelay2

jmpmain

back:

ret

blequclendp

dirdelayprocnear;直接上下行的延时子程序

calldelay

pushdx

dirback:

movah,1

int16h

jnedirgetch

movdx,io8255c

inal,dx

andal,01

jzdirback

popdx

ret

dirdelayendp

dirgetch:

movah,1;直接上下行对按键的处理

int21h

cmpal,73h

jedirrepair

cmpal,70h

jeurgent3

jmpdirback

dirrepair:

moval,0

movah,1

int21h

cmpal,73h

jnedirrepair

calldelay2

calldisp

jmpdirback

stop2procnear;没有直达键的暂停子程序

gostop2:

moval,0

movah,1

int21h

cmpal,13

jnegostop2

moval,0

ret

stop2endp

delay2procnear;判断延市时是否结束的子程序

pushdx

delay3:

movdx,io8255c

inal,dx;查询8255的Pc0是否为高电平

andal,01

jzdelay3

popdx

ret

delay2endp

dispprocnear;显示当前楼层的子程序

movdl,cl

movah,2

int21h;用于在屏幕上显示

movdl,0dh

movah,2;回车符

int21h

movdl,0ah

movah,2;换行符

int21h

subcl,30h;七段码显示

moval,cl

pushbx

pushdx

;movdx,io8255b

;outdx,al

movbx,offsetled

xlat

movdx,io8255a

outdx,al

popdx

popbx

addcl,30h

moval,0

ret

dispendp

 

disp8ledprocnear;8led显示,显示bl与cl对应的楼层

pushax

cmpbl,0h

jen0

cmpbl,31h

jen1

cmpbl,32h

jen2

cmpbl,33h

jen3

cmpbl,34h

jen4

cmpbl,35h

jen5

cmpbl,36h

jen6

cmpbl,37h

jen7

cmpbl,38h

jen8

n0:

moval,0b

jmpchled

n1:

moval,1b

jmpchled

n2:

moval,10b

jmpchled

n3:

moval,100b

jmpchled

n4:

moval,1000b

jmpchled

n5:

moval,10000b

jmpchled

n6:

moval,100000b

jmpchled

n7:

moval,1000000b

jmpchled

n8:

moval,10000000b

jmpchled

chled:

cmpch,0

jem0

cmpch,31h

jem1

cmpch,32h

jem2

cmpch,33h

jem3

cmpch,34h

jem4

cmpch,35h

jem5

cmpch,36h

jem6

cmpch,37h

jem7

cmpch,38h

jem8

m0:

addal,0b

jmpdispled

m1:

addal,1b

jmpdispled

m2:

addal,10b

jmpdispled

m3:

addal,100b

jmpdispled

m4:

addal,1000b

jmpdispled

m5:

addal,10000b

jmpdispled

m6:

addal,100000b

jmpdispled

m7:

addal,1000000b

jmpdispled

m8:

addal,10000000b

jmpdispled

displed:

pushdx

;pushax

;moval,0ffh

movdx,ls273a

outdx,al

;movdx,ls273b

;popax

;outdx,al

popdx

popax

moval,0

ret

disp8ledendp

exit:

movah,4ch

int21h

codeends

endstart

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1