版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东南大学吴健雄学院
《微机实验及课程设计》
课程设计报告
FBIWarning:
汇编代码是好几届之前口勺一种学姐口勺,我只是修改了一卜..修改后完美运营
报告是我自己写的
转载不需要注明出处,就说是你写H勺
姓名:学号:
专业:吴健雄学院实验室:计算机硬件实验室
组另小同组人员:
设计时间:年5月17日——年6月6日
评估成绩:审视教师:
目录
一.课程设计目的与规定.....................................................2
二.方案论证与原理设计.....................................................3
三.具体(机理)设计.......................................................3
四.方案实现与测试(或调试)...............................................6
五.分析与总结.............................................................7
一.课程设计目的与规定
设计目的:
微机课程综合设计用于检查却提高学生在原理与接口综合应用方面分析问题与解决问题的能力,同步
也给学生提供更多、更好的训练机会,课程给出了10道微机硬件应用综合测试题。为完毕每道测试题,
至少需要选用TPC微机实验装置中三部分以上的硬件电路(还需将它们有机组合起来)并编制相应的应用。
通过实验还可以让学生更好的理解所学知识在实际控制中口勺运用,增长对本专业H勺结识和学习爱好。
设计规定:
1)设计基本规定
用键盘、按钮、八段码和LED模拟电梯工作过程。楼层设为8层,键盘数字键1〜8用来键入但愿停
日勺楼层,8个LED显示但愿停的楼层,2位八段码批示电梯目前所在楼层,按钮用来启、停电梯。电梯正
常运营时以每2秒1层的速度上升或下降。规定“电梯”能按如下方式运营:
(1)设目前电梯停在某层(2位八段码显示相应楼层,8个LED全灭).键入1―8数字键,如键入的数
字与目前电梯停层同,则什么亦不动作,若不同则相应楼层的LED亮;如再按运营键,则电梯自动鉴别上
升或下降(在运营过程中八段码显示楼层变化)始终达到但愿停弘J楼层(八段码显示该楼层,相应LED灭);
(2)设目前电梯正在上升或下降运营(此时八段码显示楼层变化,LED批示但愿达到日勺楼层),若键入
新的但愿停的楼层数字(相应口勺LED亮),则对同方向(上升或下降)未到的楼层能停,对其他状况则先
停原但愿停的楼层,然后按运营键后继续运营)。如下几例:
①设电梯目前在2层,向上运营,LED批示但愿在6层停,此时若键入4,则电梯将在4楼停,若再按运
营键,则继续运营至6层停;
②同上状况,若键入的不是4正是8,则电梯将先停在6层,再按运营键,运营至8层停:
③同上状况,若键入的不是4(或8),而是1,则电梯先停在6层,再按运营键,运营至1层停。
2)进一步设计规定
除运营按钮外,再设计几种按钮,模拟更多口勺电梯运营功能,如:
①同步在8*8点阵显示屏显示上升与下降箭头,当停止时显示目前所在楼层号.
②直达按钮。若按此按钮,电梯按直达方式运营,即对运营期间新键入口勺停靠楼层(虽然是同方向未到
楼层)亦不断,直达终点楼层;
③急停按钮。电梯运营中,若按此按钮,则电梯立即停在下一达到卧J楼层;
④断电待修按钮。按下该钮电梯不能工作,再按一下才干重新工作;
⑤设立急停开关(K0-K7至一),引入中断解决,立即响应,就近停靠;
分工状况:
我跟XXX一组,我重要负责程序框架的构建和大部分代码时编写,XXX负责其她的程序编写和硬件连
接等工作。
二.方案论证与原理设计
我们在成熟考虑程序的整体规定和框架后,决定把程序总共分为四个模块,分别为电梯运营模块,电
梯接受祈求判断模块,显示模块,计时模块。
电梯运营模块是整个程序的主模块,其重要功能就是判断电梯的运营方向和停靠所要去楼层的优先顺
序,电梯接受祈求判断模块重要是应急停,直达,等待维修等自令。计时模块用于对系统每二秒停一楼层
U勺计数。显示模块则涉及所要到的楼层口勺显示和运营过程中所到楼层的熨时显示。
有8个楼层,需要用8个按键模拟电梯中的祈求按钮;
当电梯静止状态时,无论外部哪一层有祈求,电梯都由静匚状态转入向上或向下运营的状态,直到达
到祈求的楼层;当电梯处在向上运营的I状态时,此时高于该楼层向上的I祈求和内部祈求级别最高,另一方
面是所有楼层向下的祈求,再次是低于该楼层向上的祈求;当且梯处在向下运营口勺状态时则状况相反;
由于中断级别在随着电梯所处楼层H勺不同而变化,并口中断源比较多。因此用每一种中断源直接和中
断控制器相连,需要用到多种8259A级联,很不以便。为解决这个问题,一方面定义三个单字节变量REQJU、
REQ-D和REQJN分别存储电梯每一层向上、向下和内部卧J祈求,每一位代表一层。例如,REQ_U为
00000110B,这代表在2层和3层有向上日勺祈求。8253定期器每隔20ms产生一次中断,中断程序便去执
行扫描犍盘,当扫描到有电梯内部或者外部按键时,将祈求存储到变量中。每到一种状态时再检查祈求变
量REQ_U、REQ_D和REQ」N的值,根据电梯的运营方向和变量中的祈求,来决定电梯下•步的J运营。
设电梯的目前楼层为floor(Floor=l~8),运营方向为dir(dir=0,向上;dir=l,向下),在电梯运营的
工程中,用数码管输出floor值显示目前的楼层。LED输出REQ」N时值显示电梯内已经祈求的楼层。
重要R勺模块如下:
1.可编程定期/计数器8253
定期/计数器8253重要是用于定期20ms,触发中断进行键盘扫描。电路连线是CLOCK。接Q6,分频
后城率为46875Hz,OUT0接中断IRQ2,每20ms中断一次,GATE0接5v。计数器的初值应当是3A9H;
2.8255并行接口单元
8255重要是用于数码管和发光二极管的数据输出。因此用8255B口8接8个发光二极管,A口接数码
管H勺数据端。
3LED点阵显示
由于提高规定需要显示上下箭头,因此使用8*8点阵显示箭头。
4微机控制器
程序在微机上运营,通过总线控制实验箱上各部件的运营。
三,具体(机理)设计
1)软件流程图(总流程图)
本设计的软件设计的思路:通过软件编程使8253输出定期信号申请中断,在中断服务程序中扫描键
盘,如果有按键,修改相应的变量位,并输出内部祈求变量REQ」N到发光二极管显示目前的内部祈求楼
层,在主程序中,查询变量的值,根据电梯调度算法运营电梯。
A先到新插入楼层
图表1电梯系统总流程图
2)电梯控制算法模块
逻辑实现:
当电梯向上运营时:
a)位于目前层如下日勺向上祈求都被忽视留到下次向上运营时解决。
b)位于Fl前层以上U勺向上祈求都被记录留到本次运营解决。
c)无论哪层的向下祈求都被忽视留到下次向下运营时解决。
当电梯向下运营时:
a)位于目前层以上的向下祈求都被忽视留到下次向下运营时解决。
b)位于Fl前层如下U勺向下祈求都被记录留到本次运营解决。
c)无论哪层的向上祈求都被忽视留到下次向上运营时解决。
算法实现:
dir代表电梯的运营方向,0代表电梯向上运营,1代表向下运动。设REQ_U(n)代表第n层向上aI祈求,
同样,REQ_D(n)代表第n层向下的祈求,REQJN(n)代表第n层内部口勺祈求。求nextf内措施为:电梯向上
时,next为内部祈求时最小值和向上祈求时不小于floor的最小值之间日勺小者。电梯向下时,next为内部祈求
口勺最大值和向下祈求中不不小于flood向最大值之间的大者。没有满足规定的时返回10。
图表2电梯控制算法流程图
3)LED显示程序:本设计只用到了一种LED,只要将floor转换为相应日勺段码。先输出位码,再输出段
码,循环输出就可以动态显示。为了循环的显示,将LED显示程序放在中断服务程序中。(将“楼层”作
偏移码,运用XLAT,很简朴就可以实现译码)
图表3电梯按键、显示中断流程图
4)硬件连接图
四.方案实现与测试(或调试)
一方面根据设计思路,选择采用8253和8255芯片,规避了使用较为复杂的中断。然后调试硬件,
拟定位选、芯片等工作正常.这可以通过手动输入控制字,进行简朴输入输出实现.然后拟定8253、
8255芯片的地址,开始软件编程。
软件编程一方面完毕整体的逻辑框架,然后具体编写子程序。刚开始时采用软件延时,优先调试
8255o采用8255的A、B口的0方式,A、B口的J变化将反映在八段码和LED灯上。子程序日勺编写即将
设计好的算法转换为程序流,用程序流的方向实现选择,用调用子程序实现具体操作。然后加入8253
的硬件延时,将0UT1连至PCO,通过不断查询PCO口日勺状态进行延时。由于前面8255已经调好,因
此8253的调试比较顺利。
最后将所有硬件连线接好,进行整机联调。当中发现许多问题,•方面运用示波器排除硬件故障,
再回过头来对软件进行单步,这时由于有现象,进行软件调试的时候也更有针对性。通过设立断点,
逐渐跟踪寄存器值,通过几次日勺修改之后,成功实现了预定方案。
由于数码管和LED灯显示都是采用查表法,根据输入字符於JASCII码查表得到输出,有时浮现
LED不正常亮火日勺现象,是在查表时出错,例如没有减去31H,就会使灯的显示杂乱无章。
实物连接图:
五.分析与总结
1)设计规定每次电梯开关时间为2秒,而一开始我们无法保证精确的时间。后来通过讨论后发现可以用
8253计数器达到此功能,我们翻阅书籍后分别用方式3和方式0实现了精确2秒的规定。
2)编程中遇到的大多是逻辑问题.另一种常常遇到的问题就是跳转语句超过范畴的错误,这个错误的解决
是通过变化语句日勺顺序,如实在无法通过变化顺序来消除错误,则通过二次跳转,即跳过中间过程再跳至
目H勺。
3)我们写的电梯程序,d《J意义为目前楼层,当输入要去的楼层bl时,判断bl与cl的大小关系,假设
bl>cl,则程序先把cl加1,再延时两秒,再比较bl与cl的大小与否相等,如果相等则跳出,不等则把cl
加1,再延时,再判断。
4)当在上行过程中再输入另一种想去的楼层ch时,则跳转至ch解决过程。由于是在延时前就把cl加I
了,因此在这上行两秒内,cl已经上了一层了。因此就必须判断ch以及bl与否与此时的cl相等,如相等
则在即将达到的这一层停。由于一开始我们来判断bl与cl与否相等,导致如果在即将到bl层的时候按下
ch则会使cl不断增大,EPASCII码不断增大,又返回至0,又增大至bl才停止。
5)此外一种问题就是8个LED显示要去哪个楼层的问题。我们是用数据DD0-DD7接到74LS273输出
0'J>bl,ch同步要被显示。我们于是就把bl,ch的0,I,2,3,…..8分别相应于OB,IB,10B,.....B,然
后把两者相加就能显示了。如果达到bl则把bl赋为0,则相应灯灭。如果达到ch,则把ch赋为0,则ch
相应楼层灯灭。目前如果输入ch等于bl,按规定是相应灯亮,到该层停,而事实上变成上一层灯亮,由
于ch与bl相应二进制相加,产生进位。解决措施是,如果bl,ch相等,则先把cl复位为0,然后再调用
LED显示。
6)电梯这个题目的特点就是状态多,多种大小循环互相嵌套,很难写代码。但是,由于每一层日勺代码都
是相似的,在调试出某一层之后,其她七层的代码也较好写。
在设计过程中我们遇到了诸多问题,而汇编语言自身不是像高档语言同样直观和简洁,刚开始走了不少弯
路,但不断调试和查资料之后感觉好多了,程序的编写速度也大大加快
实验过程中,我不断翻书,巩固了上课没听懂日勺知识,加深了对各个芯片口勺直观的印象,也培养了细心实
验的能力。
参照书目:
[I]杨素行等,《微型计算机系统原理及应用》,北京,清华大学出版社,
[2]东南大学微机系统与接口课程组,《微机实验及课程设计教程试用版3.0》,南京,东南大学出版社,
附录.代码程序
datasegment
ioportequ0ec00h-0280h
io8253aequioport+280h;0计数端口计数为10000,方式3
io8253bequioport+281h;l计数端口计数为200,方式0
io8253cequioport+283h;8253控制端
;shangmianshi8253
io8255aequioport+288h;8255控制端以及a,b,c端口地址
io8255bequioport+289h
io8255cequioport+28ah
io8255equioport+28bh
prothequioport+290h;点阵灯显示,行阵
protlrequioport+298h;点阵灯显示,列阵
numberdb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;七段码
mindb00h,01h,02h,03h,04h,05h,06h,07h;点阵的行
;buffldb10h,30h,7fh,0ffh,0ffh,7fh,30h,1Oh;向上箭头
buffidb10h,20h,40h,0fth,0ffh,4()h,20h,1Oh
;buff2db08h,0ch,0feh,0ffh,0ffh,0feh,0ch,08h;向下箭头
buff2db08h,04h,02h,0fth,0ffh,02h,()4h,()8h
buff3db00h,00h,00h,00h,00h,00h,00h,00h
f*1**5*
menudb*7*****y»q、*7»*1»*7»*7»*7**7»*7**7**•**y»,J»,,0DH,0AH
db'*DianTiKongZhiQi-elevator*',0Dh,0Ah
db'*JiaXiawen*\0DH,0AH
db'*YuHailei*',0Dh,0Ah
db,************************************************,0DhOAh
db'inputanumbertogotothecorrespondinglevel1,ODH,OAH
db'esc---------exit',0DH,0AH
db'enter-------go',0DH,0AH
db'z------------godirectly',ODh,OAh
db'x-----------quickstop',ODh,OAh
db'c-----------waitingforfixing*,ODh,OAh
db1280H--8253CS',0Dh,0Ah
db'1MHz----8253_clk0',0Dh,0Ah
dbVCC--8253_gate0\0Dh,0Ah
db'8253_clkl——8253_out0',0Dh,0Ah
db'8253_gate1--K0',0Dh,0Ah
db'8253_outl----8255_PC0',0Dh,0Ah
db'28bH--8255_cs',0Dh,0Ah
db,PAO-7——SHUMAGUAN',0Dh,0Ah
db'PBO〜7--lcd0-7\0Dh,0Ah
db'MOVE”,ODh,OAh;$'
dataends
stackssegmentstack
db100dup(?)
stacksends
codesegment
assumecs:code,ds:data,ss:stacks
start:
movax,data;初始化
movds,ax
movdx,offsetmenu;打印其单,阐明硬件电路的|连接等
movah,09
int21h
movdx,io8255;8255初始化,a、b输出,c口输入
moval,89h
outdx,al
movbl,31h;bl代表目前电梯所在楼层,初始值设为1
main:moval,0
callshownumber;显示目前楼层
movcl,0;cl为第一次输入/、J要去Ifj楼层
movch,O;ch为在半途中再次输入日勺要去欧J楼层
callshowled
movah,01;通过键盘输入第一次要去得楼层cl
int2lh
empal,lbh;是esc则退出
jcexit
cmpal,31h;键入日勺数字与否在1-8之间,如不是重新输入
jlmain
cmpal,38h;跟8比较,如果比8大,则循环输入
jgmain
movcl,al
callshowled;8个led灯显示cl相应的J楼层
cmpcl,bl;cl与bl比较
jemain;相等则返回重新输入
jgup;不小于则向上运营
jltodown;不不小于则向下运营
exit:movah,4ch
int21h
;--------------------------------------------------------电梯上行
up:calljudge;电梯上行的状况
upl:addblJ
callupdelay;调用向上运营延时子程序,浮现向上日勺箭头
callshownumber;调用显示子程序,通过数码管显示目前楼层bl
cmpbl,cl;bl,cl不等则继续
jemain;相等则返回
jmpupl
upgetch:movah,1;在上升过程中如果有其她/、J键按下时
int21h
cmpal,78h;判断与否为急停键x
jejit
cmpal,63h;判断与否为断电待修键c
jeduandian
cmpal,31h;数字与否在1-8之间如不是继续上行
jlgotoup
cmpal,38h
jggotoup
movch,al
callshowlcd
calldelayup
callshownumber
calljudgeequ;判断目前楼层与第一次要去的楼层与否相似
empch,bl;比较ch与bl的J区别
jeloucengxiangdeng;相等则在该层停,等待运营信号输入
jlxianshanghouxia;ch不不小于bl则先上行至cl在下行至ch
empch,cl;ch不小于bl则在判断ch与clH勺大小关系
jcxiangdengup;相等则始终上行至cl
jlsameup;ch不小于M不不小于cl则先上行到ch在上行到cl
jgtosameup2;ch不小于cl则先上行到cl在上行到ch
gotoup:calldelayup
jmpupl
duandian:moval,0;上升时遇到了断电的状况,则等待键入,除非再次犍入的为c才继续运
营
movah,7
int21h
empal,63h
jncduandian
calldelayup
callshownumber
jmpupl
jit:calldelayup;上升时遇到了急停的状况,则停在下一层,然后回到main
callshownumber
jmpmain
todown:jmpdown
updelayprocnear;向上运营的延时子程序
calldelayfirst;用于初始化8253
pushdx
callclcardots;调用使其可以清零
updelay1:calldotsup;循环调用向上日勺箭头显示
movah,1;键盘与否有输入
int16h
jneupgetch;如有则跳转到输入解决
movdx,io8255c;8255c口输入,看2s延时与否结束
inal,dx
andal,01;与否计时结束
jzupdelay1
popdx
ret
updelayendp
tomain:jmpmain
tosameup2:jmpsameup2
;-------------------------------------------------------上行中遇到的多种状况列举
loucengxiangdeng:callshownumber;第二次要去得楼层与目前楼层相似,直接停在该层
movch,0
callshowled
callstop2
callupcl
jmpmain
xianshanghouxia:callshowlcd;先上行到cl再卜行到ch
callupcl
movci,0
callshowled
callstop2
calldownch
jmpmain
xiangdengup:movch,0;二次要去日勺楼层与第一次要去日勺相似,直接上行到第一次要获得楼层
callshowled
callupcl
jmpmain
sameup:callshowled;同方向的楼层,先上行到ch再上行到cl
callupch
movch,0
callshowled
callstop2
callupcl
jmpmain
samcup2:callshowled;同方向口勺楼层,先上行到cl再上行到
5ph’,..,.,..,.,.,.,.,.,.,..,.,.,.,.,.,..,.,.,.,.,.,..,.,.,.,.,.,..,.,.,.,.,.,..“.,.,,,”,,,,
callupcl
movcl,0
callshowled
callstop2
callupch
jmpmain
jitlt:jmpjit
;----------------------------------------电梯下行,与电梯上行的状况基本类似,稍作修
改即可
down:calljudge
down1:subbl,l
calldowndelay
callshownumber
cmpbl,cl
jetomain
jmpdown1
downgetch:movahj
int21h
cmpal,78h
jejitl
cmpal,63h
jcduandian1
cmpal,31h
jlgotodown
cmpal,38h
jggotodown
movch,al
callshowlcd
calldclaydown
callshownumber
calljudgccqu
cmpch,bl
jestopdownci
jgdownclupch;ch不小于bl则先下行至cl在上行至ch
cmpch,cl;ch不不小于bl则在判断ch与clfT、J大小关系
jejmpdowncl湘等则始终下行至cl
jldowncldownch;ch不不小于bl不不小于cl则先下行到cl在下行到ch
jgtodownchdowncl;ch不小于cl则先下行到ch在下行到cl
gotodown:calldelaydown
jmpdownl
duandianl:moval,0;下降遇到了断电的状况,则等待键入,除非再次键入的为c才继续运营
movah,7
int21h
cmpal,63h
jneduandian1
calldelaydown
callshownumber
jmpdownl
jiH:calldclaydown;下降时遇到了急停口勺状况,则停在下一层,然后回到main
callshownumber
jmpmain
downdelayprocnear;向下运营延时子程序,与向上运营延时子程序大体相似
calldclayfirst
pushdx
callcleardots;调用使其可以清零
ddy:calldotsdown;循环调用向下的箭头显示
movah,l
int16h
jnedowngetch
movdx,io8255c
inal,dx
andal,01
jzddy
popdx
ret
downdelayendp
todownchdownckjmpdownchdowncl
;-------------------------------------------------------下行中遇到的多种状况列举
stopdownci:callshowled
movch,0
callshowled
callstop2
calldowncl
jmpmain
downclupch:callshowled
calldowncl
movcl,0
callshowled
callstop2
callupch
jmpmain
jmpdownckmovch,0
callshowlcd
calldowncl
jmpmain
downcldownch:callshowled
calldowncl
movcl,0
callshowlcd
callstop2
calldownch
jmpmain
downchdownckcallshowled
calldownch
movch,0
callshowled
callstop2
calldowncl
jmpmain
;-----------------------------------------------电梯上、下行中遇到日勺多种状况解决措
施
jitl:jmpjittt
judgccquprocnear;判断目前楼层与第一次要去口勺楼层关系
cmpcl,bl
jneback
cmpcl,ch
jeclequch
movcLO
callshownumber
callshowled
callstop2
cmpch,bl
jgupchhere
jldownchhcre
upchhere:callupch
jmpmain
downchhere:calldownch
jmpmain
clequch:movch,0
callshowled
callonlydelay;
jmpmain
back:
judgccqucndp
upclprocnear;上行到cl日勺子程序
upcl1:incbl
calldirdelay1
callshownumber
cmpbl,cl
jlupcll
ret
upclendp
jittl:jmpjitl
upchprocnear;上行到ch的子程序
upch1:addbl,l
calldirdelay1
callshownumber
cmpbl,ch
jlupchI
ret
upchendp
downclprocnear;下行到cl的I子程序
downcl1:subbl,l
calldirdelay2
callshownumber
cmpbl,cl
jgdownclI
ret
downclendp
downchprocnear;下行至ljch的子程序
downchi:subbl,l
calldirdelay2
callshownumber
cmpbl,ch
jgdownchi
downchendp
;------------------------------------------------直接上下行时对按键状况的解决
stop2procnear;没有直达键日勺暂停子程序
gostop2:moval,0
movah,l
int21h
cmpal,13
jnegostop2
moval,0
ret
stop2endp
dirgetch1:movah,l;直接上行对按键口勺解决
int2lh
cmpal,63h
jedirduandianl
cmpal,78h
jejit21
jmpdirbackl
dirgetch2:movah」;直接下行对按犍日勺解决
int21h
cmpal,63h
jcdirduandian2
cmpal,78h
jejit22
jmpdirback2
jit21:calldelayup;
callshownumber
jmpmain
jit22:calldelaydown;
callshownumber
jmpmain
dirduandianl:moval,0;直接上行时遇到了断电待修日勺状况
movah,l
int21h
cmpal,63h
jnedirduandianl
calldelayup;
callshownumber
jmpdirbackl
dirduandian2:moval,0;直接下行时遇到了断电待修日勺状况
movah,l
int21h
cmpal,63h
jnedirduandian2
calldclaydown;
callshownumber
jmpdirback2
tojit:jmpjitt
dirdelay1procnear;直接上行日勺延时子程序
calldclayfirst
pushdx
callclcardots
dirbackl:calldotsup;
movah,l
int16h
jnedirgetch1
movdx,io8255c
inaLdx
andal,01
jzdirbackl
popdx
ret
dirdelay1endp
tojitl:jmpjitt1
dirdelay2procnear;直接下行日勺延时子程序
calldclayfirst
pushdx
callclcardots
dirback2:calldotsdown;
movah,l
int16h
jncdirgctch2
movdx,io8255c
inaLdx
andal,01
jzdirback2
popdx
dirdelay2endp
;------------------------------------------------直达状况的解决
judgeprocnear;判断与否为直达键,如果是就直接达到,如果为enter正常执行
nextl:moval,0
movah,l
int21h
empal,7ah;与否为直达键
jezhida
empal,13
jnenextl
moval,0
ret
judgeendp
zhida:empcl,bl
jlzhidadown
jgzhidaup
jmpmain
zhidadown:calldelaydown
subbkl
callzhidadclay2
callshownumber
jmpzhida
zhidaup:calldelayup
addbl,l
callzhidadelayl
callshownumber
jmpzhida
zhidabuttonl:movah,1;直达对按键状况/、J解决,在上升时跳到此处
int21h
cmpal,63h
jezhidaduandianl
cmpal,78h
jetojit
jmpzhida
zhidabutton2:movah,1;直达对按键状况的解决,在下降时跳到此处
int21h
cmpal,63h
jczhidaduandian2
cmpal,78h
jetojit1
jmpzhida
zhidaduandian1:moval,0;上升时遇到断电待修时
movah,l
int21h
cmpal,63h;;;;;;;;;;;;c
jnezhidaduandianl
calldclayup;
callshownumber
jmpzhida
zhidaduandian2:moval,0;下降时遇到断电待修时
movah,l
int21h
cmpal,63h
jnezhidaduandian2
calldelaydown;
callshownumber
jmpzhida
zhidadelay1procnear;直达延时程序
calldelayfirst
pushdx
callclcardots
next21:calldotsup;
movah,1
int16h
jnezhidabuttonl
movdx,io8255c
inal,dx
andal,01
jzncxt21
popdx
ret
zhidadclayIcndp
zhidadelay2procnear;直达延时程序
calldelayfirst
pushdx
callclcardots
next22:calldotsdown;
movah,l
int16h
jnczhidabutton2
movdx,io8255c
inaLdx
andal,01
jznext22
popdx
zhidadelay2endp
;-----------------------------------------------------判断延时与否结束以及8253初
始化
delayfirstprocnear;初始化8253的子程序,两计数器连级,接入1MHZ/、J脉冲,2s每次第二
个out接pcO
pushdx
movdx,io8253c;8253的计数器0置方式3
moval,36h
outdx,al
movdx,io8253a;计数器0初始值为10000
movax,l0000
outdx,al
moval,ah
outdx,al
movdx,io8253c;82537、J计数器1置方式0
moval,70h
outdx,al
movdx,io8253b;计数器I初始值为200
movax,200
outdx,al
moval,ah
outdx,al
popdx
ret
delayfirstendp
onlydelayprocnear;判断延时时与否结束的子程序,注意由于点阵灯的J显示要写进循环中,因
此分类,该延时仅用于延时
pushdx
delayx:movdx,io8255c
inal,dx渣询8255日勺PcO与否为高电平
andal,01
jzdelayx
popdx
ret
onlydelayendp
dclayupprocnear;判断上升延时与否结束的子程序,涉及了显示向上箭头口勺部分
pushdx
callclcardots
delayy:calldotsup
movdx,io8255c
inal,dx;查询8255日勺PcO与否为高电平
andal,01
jzdelayy
popdx
ret
delayupendp
delaydownprocnear;判断下降延时与否结束日勺子程序,涉及了显示向下箭头日勺部分
pushdx
callcleardots
delayz:calldotsdown
movdx,io8255c
inal,dx;查询8255的PcO与否为高电平
andal,01
jzdclayz
popdx
ret
delaydownendp
显示口勺子程序
clcardotsprocnear;用于对点阵显示『、J清零,在第一次要循环前使用
pushdx
pushax
movakOO
movdx,protlr
outdx,al
popax
popdx
clcardotsendp
dotsupprocnear;点阵箭头日勺显示,向上箭头的)显示子程序
pushex
pushax
pushbx
movex,0008h
movsi,offsetmin
movah,01
movex:moval,[si]
movbx,offsetbuffi
xlat;得到第一行码
movdx,proth
outdx,al
moval,ah
movdx,protlr
outdx,al;显示第一行红
shlah,01
incsi
pushex
movcx,Offffh
delayp:loopdelayp;延时
popex
loopmovex
popbx
popax
popex
ret
dotsupendp
dotsdownprocnear;点阵箭头内显示,向卜箭头的显示子程序
pushex
pushax
pushbx
movcx,0008h
movsi,offsetmin
movah,01
movey:moval,[si]
movbx,offsetbuff2
xlat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年汕头市澄海区网格员招聘笔试备考试题及答案解析
- 2026年盘锦市兴隆台区网格员招聘笔试备考试题及答案解析
- 呼气检测在消化系统疾病应用的专家共识总结2026
- 2026安庆市辅警招聘笔试题及答案
- 2026学年九年级历史下册第五单元必背知识点第一次月考含答案及解析
- 第四章 人体内物质的运输教学设计初中生物学人教版七年级下册-人教版
- 2026年4月广东深圳市中山大学附属第八医院(深圳福田)选聘3人笔试参考题库及答案解析
- 2026北京市21世纪学校招聘考试模拟试题及答案解析
- 2026浙江富浙科技有限公司所属公司招聘5人(第一期)笔试备考试题及答案解析
- 2026浙江金华永康市龙山镇人民政府招聘编外工作人员5人笔试模拟试题及答案解析
- 留置胃管病人护理规范
- 2025年2月计算机维修工五级考试题(含答案)
- 农业银行2025信息科技岗笔试题及答案新疆地区
- 土地预审课件
- 内科护理副高答辩题库及答案
- 5.1延续文化血脉 教案 -2025-2026学年统编版道德与法治九年级上册
- 高中生物竞赛辅导动物行为学
- 供货计划与进度保障措施
- 部编版(2024)七年级上册道德与法治全册知识点提纲
- 中医确有专长培训课件
- 全国工会系统经审业务技能大赛知识题(附答案)
评论
0/150
提交评论