电梯控制器设计22221_第1页
电梯控制器设计22221_第2页
电梯控制器设计22221_第3页
电梯控制器设计22221_第4页
电梯控制器设计22221_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、电梯控制器设计一、题义分析及解决方案1题义与需求分析在STAR ES598 PCI单板机上实现电梯控制器设计A、键盘上的0键、1键、2键,3键,4键和5键表示电梯的1楼、6楼、7楼、8楼、9楼和10楼的请求按键。B、当电梯运转时经过的楼层会在LED的左边上动态显示出来,LED的右边显示出当前用户请求按键。 C、直流电动机的转动模拟电梯运转。当电动机不转时,表示电梯停留在某楼层。 D、电梯初始停留在1楼,当6楼及以上楼层有按键请求时,此时,电机开始转动,LED上会动态显示经过的楼层并最终停留在该层。例:此时电梯停留在7层,1、当有10楼有请求时,LED的右边会显示目的楼层10楼,电梯开始转动,L

2、ED的左边依次显示7、8、9、10,到达后电梯停止转动,LED上的目的楼层显示(右边)会熄灭,LED左边会显示10。2、当有1楼有请求时,LED的右边会显示目的楼层1楼,电梯开始转动,LED的左边依次显示7、6、5、4、3、2、1,到达后电梯停止转动,LED上的目的楼层显示(右边)会熄灭,LED左边会显示1。2解决问题的方法及思路1)硬件部分单片机工作在单任务状态,时间充裕,速度不是主要矛盾,所以用软件实现计时控制,以减少硬件开销。 接口用硬件实现。根据实验平台的具体情况,本课程设计选用了8279A芯片、0832芯片、直流电动机、LED发光二极管、十六进制小键盘。由于8279A的输出电流与LE

3、D不匹配的问题,需要驱动电流,本实验中选择74LS240。2)软件部分此实验主要是软件设计,软件设计分两部分控制:1、按键请求,在LED上显示请求的楼层号。判断请求的楼层号,调用运行函数2、判断上下行,显示经过的楼层号。到达后电机停止转动,消除请求楼层号。二、硬件设计1 8279A1)8279A在本设计中的作用 在本设计中用8279A芯片控制键盘输入和LED显示。2) 8279A的功能分析a)8279A主要特性8279A芯片是一种通用的可编程序的键盘/显示接口器件,单个芯片就能完成键盘输入和LED显示控制两种功能。可与任何8位机接口。8279A芯片包括键盘输入和显示输出两个部分。若采用8279

4、作为键盘/显示器接口,则可以实现对键盘、显示器自动扫描,8279主要是管理键盘输入和显示器输出的。8279可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用CPU 的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点当今已成为设计计算机应用系统,特别是实时性较高的测控系统的首选器件之一。b)8279A的内部结构图2-1 8279A的内部结构图中,IRQ:中断请求输出线,DB0DB7:双向数据总路线(传送命令、数据、状态),、:读写控制输入端,RESET:复位输入端,CLK:时钟输入端,:片选,C和/D(A0):片内寄存器选址,OUTA0A1、OUTB0B3:8位显示输出

5、端,:熄灭显示输出端,SL0SL3:公用扫描输出线,RL0RL7:键盘回馈输入线,SHIFT:抵挡键输入线,CNTL/STB:控制/选通输入线。另外,8279的键盘接口部分内部有一个8×8位先进先出的堆栈(FIFO),用来存放键盘输入代码,显示器接口部分内部有一个16×8位显示RAM,用来显示段数据,能为16位LED显示器(或其它显示器)提供多路扫描接口。c)8279A的引脚信号和功能8279可编程键盘显示器接口芯片具有动态显示驱动电路,不占用CPU 的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点。 8279 是可编程的键盘/显示接口芯片。它既具有按

6、键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘 FIFO (先进先出堆栈)/传感器,双重功能的 8×8=64B RAM,键盘控制部分可控制 8×8=64 个按键或 8×8 阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示 RAM容量为 16×8,即显示器最大配置可达 16 位 LED数码显示。d)8279的命令字及其格式 8279有三种工作方式:键盘工作方式、显示工作方式和传感器工作方式。键盘工作方式:双键互锁和N键轮回。双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部F

7、IFO RAM中。N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFO RAM中。显示工作方式:是指CPU输入至8279内部FIFO RAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。传感器方式:是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。选择不同的工作方式均是通过CPU对8279送入命令来进行控制。8279共有8种命令,命令寄存器为8位,其中D7D5为命令特征位,D4D0为命令的控制位。CPU对8279写入的命令数据为命令字,读出的数据为状态字。8279

8、共有八条命令,其功能及命令字格式分述如下。(1)键盘/显示方式设置命令字命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 D D K K K其中:D7、D6、D5=000为方式设置命令特征位。DD(D4、D3):用来设定显示方式,如表2-2所示。D4D3显示方式008个字符显示,左端入口0116个字符显示,左端入口108个字符显示,右端入口1016个字符显示,右入口表2-2 显示方式选择所谓左入口 ,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移

9、动。KKK(D2、D1、D0):用来设定七种键盘/显示扫描方式,如表2-3所示。D2D1D0键盘/显示扫描方式000编码扫描键盘,双键锁定001译码扫描键盘,双键锁定010编码扫描键盘,N键轮回011译码扫描键盘,N键轮回100编码扫描传感器矩阵101译码扫描传感器矩阵110选通输入,编码显示扫描111选通输入,译码显示扫描表2-3 键盘/显示扫描方式(2)时钟编程命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 P P P P P其中:D7、D6、D5=001为时钟命令特征位。PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。N取

10、值范围为231。如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。(3)读FIFO/传感器RAM命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 AI X A A A其中:D7、D6、D5=010为读FIFO/传感器RAM命令特征位。该命令字只在传感器方式时使用。在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。AAA(D2、D1、D0)为传感器RAM中的八个字节地址。AI(D4)为自动增量特征位。当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。

11、这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。(4)读显示RAM命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 1 1 AI A A A A其中:D7、D6、D5=011为读显示RAM命令字的特征位。该命令字用来设定将要读出的显示RAM地址。AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。由于位显示RAM中有16个字节单元,故需要4位寻址。AI(D4)为自动增量特征位。AI=1时,每次读出后地址自动加1,指向下一地址。(5)写显示RAM命令命令格式

12、: D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 AI A A A A其中:D7、D6、D5=100为写显示RAM命令字的特征位。在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。AI(D4)为自动增量特征位。AI=1时,每次写入后地址自动加1,指向下一次写入地址。(6)显示禁止写入/消隐命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 X IW/A IW/B BL/A BL/B其中:D7、D6、D5=101为显示禁止写入/消隐命令特征位。IW/A、IW/ B(D3、D

13、2)为A、B组显示RAM写入屏蔽位。当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。因此,从CPU写入显示器RAM数据时,不会影响A的显示。这种情况通常在采用双4位显示器时使用。因为两个四位显示器是相互独立的。为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。BL/A、BL/ B(D1、D0)为消隐设置位。用于对两组显示输出消隐。若BL=1,对应组的显示输出被消隐。当BL=0,则恢复显示。(7)清除命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 CD CD CD CF CA 其中:D7、D6、D5=110为清除命令特征位

14、。清除显示RAM方式如表2-4所示。D4D3D2清除方式10×将全部显示RAM清为00H110将全部显示RAM置为20H,A组输出0010,B组输出0000111将全部显示RAM置为FFH0××D0=0不清除,D0=1按上述方法清除表2-4 显示RAM清除方式CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFO RAM被置空,使INT输出线复位。同时,传感器RAM的读出地址也被置为0。CA (D0)为总清的特征位。它兼有CD和CF的联合效能。在CF =1时,对显示的清除方式由D3、D2的编码决定。显示RAM清除时间约需160us。在此期间状态

15、字的最高位Du=1,表示显示无效。CPU不能向显示RAM写入数据。(8)结束中断/错误方式设置命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 E X X X X其中:D7、D6、D5=111为该命令的特征位。此命令有两种不同的作用。作为结束中断命令。在传感器工作方式中使用。每当传感器状态出现变化时,扫描检测电路就将其状态写入传感器RAM,并启动中断逻辑,使INT变高,向CPU 请求中断,并且禁止写入传感器RAM。此时,若传感器RAM 读出地址的自动递增特性没有置位(AI=0),则中断请求INT在CPU第一次从传感器RAM读出数据时就被清除。若自动递增特征已置位(AI

16、=1),则CPU对传感器RAM 的读出并不能清除INT,而必须通过给8279写入结束中断/错误方式设置命令才能使INT变低。因此,在传感器工作方式中,此命令用来结束传感器RAM的中断请求。作为特定错误方式设置命令。在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279的消抖周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和禁止写入FIFO RAM。上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279

17、后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数据选择信号A0 =1。e)8279的状态字及其格式 8279的FIFO状态字,主要用于键盘和选通工作方式,以指示FIFO RAM中的字符数和有无错误发生。其格式为: D7 D6 D5 D4 D3 D2 D1 D0 DU S/E O U F N N N其中:Du(D7)为显示无效特征位。当 Du=1表示显示无效。当显示RAM由于清除显示或全清命令尚未完成时,Du=1,此时不能对显示RAM写入。S/E(D6)为传感器信号结束/错误特征位。该特征位在读出FIFO 状态字时被读出。而在执行CF =1的清除命令时被复位。当8279工作在传感

18、器工作方式时,若S/E=1,表示传感器的最后一个传感器信号已进入传感器RAM;而当8279工作在特殊错误方式时,若S/E=1则表示出现了多键同时按下错误。O、U(D5、D4)为超出、不足错误特征位。对FIFO RAM 的操作可能出现两种错误:超出或不足。当FIFO RAM 已经充满时,其它的键盘数据还企图写入FIFO RAM ,则出现超出错误,超出错误特征位O(D5)置1;当FIFO RAM已经置空时,CPU还企图读出,则出现不足错误,不足错误特征位U(D4)置1。F(D3)表示FIFO RAM中是否已满标志,若F=1表示已满。NNN(D2、D1、D0)表示FIFO RAM中的字符数据个数。f

19、)数据输入/输出格式对8279输入/输出数据不仅要先确定数据地址口,而且数据存放也要按一定格式,其格式在键盘和传感器方式有所不同。(1) 键盘扫描方式数据输入格式键盘的行号、列号及控制键格式如下:图2-2 键盘的行号、列号及控制键格式控制键CNTL、SHIFT为单独的开关键。CNTL与其它键连用作特殊命令键,SHIFT可作上、下挡控制键。(2)传感器方式数据输入格式此种方式8位输入数据为RL0RL7的状态。格式如下: D7 D6 D5 D4 D3 D2 D1 D0RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL02.74LS138译码器1) 74LS138译码器在本设计中的作用 扫

20、描计数器采用编码工作方式2) 74LS138译码器的功能分析74LS138是3/8译码器,即对3个输入信号进行译码。得到8个输出状态。G1,G2A,G2B,为数据允许输出端,G2A,G2B低电平有效。G1高电平有效。A,B,C为译码信号输出端,Y0Y7为译码输出端,低电平有效。 图2-3 74LS138 图2-4 功能表 3) 74LS138译码器的技术参数 极限值 电源电压-7V 输入电压 74LS138-7V 工作环境温度 74LS138-070 贮存温度- 65150 3. 74LS2401) 74LS240译码器在本设计中的作用本设计实验中主要是为增加LED的驱动电流2) 74LS24

21、0译码器的功能分析74LS240 TTL 八反相三态缓冲器/线驱动器引出端符号: 1A,2A 输入端 , 三态允许端(低电平有效) 1Y8Y 输出端 图2-5 74LS240逻辑图 输入输出AYLLHLHXHLZ表2-5 74LS240功能表3) 74LS240译码器的技术参数 极限值: 电源电压 . 7V 输入电压 . 5.5V 输出高阻态时高电平电压 . 5.5V 工作环境温度 74LS240 . 070 存储温度 . -65150 4. 小键盘1) 小键盘在本设计中的作用本设计中,小键盘用于输入请求楼层号。2) 小键盘的功能分析通常使用的键盘是矩阵结构的。对于4×4=16个键的

22、键盘,采用矩阵方式只要用8条引线和2个8位端口便完成键盘的连接。如图,这个矩阵分为4行4列,如果键5按下,则第1行和第1列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第1列线也输出低电平。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。 图2-5 4×4键盘矩阵图行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。如果有某列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再

23、将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的具体位置。为此,先使所有行线为低,然后检查列线。这时如果列线有一位为0,则说明必有键被按下, 采用扫描法可进一步确定按键的具体位置。5.七段LED显示器1) LED作用LED发光二级管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,做为终端显示。显示时间的分秒。2)LED功能分析物理构造:LED发光二级

24、管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。 图2-6 LED结构图数字成像:将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。字型A B C Da b c d e f g bpOX00 0 0 01 1 1 1 1 1 0 03f10 0 0 10 1 1 0 0 0 0 00620 0 1 01 1 0 1 1 0 1 05b30 0 1 11 1 1 1 0 0 1 04f40 1 0 00 1 1 0 0 1 1 0 6650 1 0 11 0 1 1 0 1 1 0 6d60 1 1 00 0 1 1 1

25、 1 1 07d70 1 1 11 1 1 0 0 0 0 00781 0 0 01 1 1 1 1 1 1 07f91 0 0 11 1 1 0 0 1 1 06fA1 0 1 01 1 1 0 1 1 1 077B1 0 1 10 0 1 1 1 1 1 0 7cC1 1 0 01 0 0 1 1 1 0 039D1 1 0 10 1 1 1 1 0 1 05eE1 1 1 01 0 0 1 1 1 1 079F1 1 1 11 0 0 0 1 1 1 071表2-6 LED数码表3) LED技术参数表2-7 LED技术参数表6DAC0832数模转换芯片:DAC0832的作用:本实验中DA

26、C0832的作用是将系统中的数字信号转换为电压信号给直流电机供电。7. 硬件总逻辑图及其说明 图2-7 硬件接线图图中8279的地址由和A0决定,故数据口地址为7FFEH,命令口地址为7FFFH。所接的16个按键,扫描线接在74HC138的译码输出端和上,当为0(SL2SL1SL0=000)时,扫描第1列按键,当为0(SL2SL1SL0=001)扫描第2列按键,故07号按键的键值为00H07H,815号按键键值为08H0FH。当某一按键被按下后,键值就自动进入缓冲区,当8279内部RAM不空时由INT输出高电平告知CPU取走,故INT连接CPU的中断输入需加一反向器。8279键盘配置最大为8&

27、#215;8,若要配置64个按键,其它列扫描线可分别连至至上,形成8行8列的按键扫描电路。图中显示部分段选码由8279的OUTA3OUTA0、OUTB3OUTB0通过驱动器74LS240提供,位选码由SL2SL0 经3-8译码器通过驱动器74LS240提供。三、控制程序设计1. 控制程序设计思路 初始化板卡以及8279,电梯初始停留在1楼。先调用显示函数,将停留楼层号在LED上显示出来。初始停止电机转动,开始扫描是否有按键请求,若没有,则继续扫描。直至有请求按键按下,此时将键值转换为键号。调用运行函数,判断请求的楼层号。再调用启动函数,判断上下行,判断后,电机转动,在LED上依次显示经过的楼层

28、号。当电梯到达请求楼层,电机停止转动,消除请求楼层号,此时,电梯停留在该楼层。等待按键请求,重复以上动作。 2.程序流程图根据程序设计思路,画出程序流程图,并加以修改直至满意为止。开始初始化初始化显示是否有键按下?键值转换键号上下行判断显示电机转动是否到达目的楼层停止,消请求楼层信号YYNN图3-1 主控程序流程图3.控制程序.MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, ;也为DMA & 32 BIT RAM板卡上的8237提供基地址)Vendor_IDEQU10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK1

29、00.DATAIO_Bit8_BaseAddress DW?msg0DB'BIOS不支持访问PCI $'msg1DB'找不到Star PCI9052板卡 $'msg2DB'读8位I/O空间基地址时出错$'KEYCOUNT DB?STAY0DB?;电梯所停留的楼层STAY1DB?;电梯之后要到达的楼层DISD DB 0;显示目的楼层号,初始为0DISD1 DB 0;记录电梯到达目的楼层的LED编码D10 DB 0;记录电梯是否到达10楼ZHUANHDB? ;运动中间值ZHUANH1DB ?ZH0DB ?LED_TABDB 0C0H,0F9H,0A4

30、H,0B0H,99H,92H,82H,0F8H,080H,90H,0FFH;0-10的LED显示所对应的编码CMD_8279 DW 00B1H;8279命令字、状态字地址DATA_8279 DW 00B0H;8279读写数据口的地址DA0832 DW 00D0H.CODESTART: MOV AX,DATAMOVDS,AXNOPCALLInitPCICALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址CALL INIT8279;初始化子程序MOV AH,0MOV KEYCOUNT,0MOVSTAY0,1;电梯初始为1层MOVDX,DATA_8279MOVAL,0F

31、9H;显示楼层数为1OUTDX,ALCALL DISPLAY1CALL DAC0832B ;使电机停止转动START1:CALLIfExitJZSTART11;之前没有键按下,ZF=1JMPExitSTART11:CALLSCAN_KEY;键扫描JNC START1;没有按键CF=0XCHG AL,KEYCOUNT ; 此时AL中为数据端口的内容INC ALCMP AL,9JNZ START2MOV KEYCOUNT,0;初始化键值CALL INIT8279_1;8个数码块全有字符显示后,再按键,清除显示JMP START1START2: XCHGAL,KEYCOUNT CALL KEY_NU

32、M;键值转换为键号JMPYYYY:CALLYUNXING0;有键请求判断请求信号,根据请求信号使电机转动JMP START1START_EXIT:JMP $;8279初始化INIT8279 PROCNEARMOVDX,CMD_8279;CMD_8279为写命令地址、读状地址MOVAL,34H ;可编程时钟设置,设置分频系数(20分频)OUT DX,AL;时钟初置设置D4-D0对外部输入时钟的分频数MOV AL,0;8*8字符显示,左边输入,外部译码键扫描方式双键互锁OUT DX,AL;键盘/显示方式设置命令字CALLINIT8279_1RETINIT8279 ENDPINIT8279_1PRO

33、CNEARCALLCLEAR;清显示MOVAL,90H;从第一个数码管开始移位显示,从起始地址开始,每次读出后, ;地址自动加1,D4(AI)=0表示要求只读出一个单元的内容OUTDX,AL;写显示RAM命令格式RETINIT8279_1ENDPCLEARPROCNEARMOVDX,CMD_8279MOVAL,0DEH; 清除命令,D4D3D2=111将显示RAM全部置1,D1=1,FIFO存储器 ;被置空(无数据),且使中断输出线IRQ复位,同时使传感器RAM的读出地址复位为0OUTDX,ALWAIT1:INAL,DX;读状态字TESTAL,80H;D7位是否为1JNZWAIT1; 显示RA

34、M清除完毕吗?D7=1表示RAM处在清除命令的执行过程RETCLEARENDPSCAN_KEYPROCNEARMOVDX,CMD_8279INAL,DX;读状态,D2D1D0表示FIFO RAM中存放的字符个数,D3判断其是;否已满READ_FIFO:ANDAL,7JZNO_KEY;是否有键按下READ:MOV AL,40H;D4=0只读出一个单元内容,D2D1D0读传感器RAM的初始地址OUT DX,AL;读FIFO RAMMOV DX,DATA_8279IN AL,DXMOV KEYCOUNT,ALSTC;有键,CF置1SCAN_KEY1:RETNO_KEY:CLC;无键按下,清CFJMP

35、SCAN_KEY1SCAN_KEYENDPKEY_NUMPROCNEARANDAL,3FH;使键值的高两位CNTL,SHIFT置0RETKEY_NUMENDPYUNXING0 PROCNEARLEA BX,LED_TABMOV DX,DATA_8279J: MOV STAY1,ALCMP AL,0;第1层有请求JZ L1CMP AL,1;第6层有请求JZ L6CMP AL,2;第7层有请求JZ L7CMP AL,3;第8层有请求JZ L8ACMP AL,4;第9层有请求JZ L9A CMP AL,5;第10层有请求JZ L10AL1:MOV DISD,1 MOV AL,STAY0CMP AL,

36、1JZ EXIT3ASUB AL,1MOV AH,0MOV CX,AXCALL QIDONG1 ;使电梯下降MOV STAY0,1JMP EXIT3L8A: JMP L8L6:MOV DISD,6 MOV AL,STAY0MOV AH,0CMP AL,6JNB L6_1;电梯需要下降MOV STAY1,6;电梯需要上升SUB STAY1,ALXCHG AL,STAY1MOV CX,AXCALL QIDONG0MOV STAY0,6JMP EXIT3L6_1:SUB AL,6MOV CX,AXCALL QIDONG1MOV STAY0,6JMP EXIT3L9A: JMP L9L10A: JMP

37、 L10EXIT3A: JMP EXIT3L7: MOV DISD,7MOV AL,STAY0MOV AH,0CMP AL,7JNB L7_1 ;跳转的下降MOV STAY1,7SUB STAY1,ALXCHG AL,STAY1MOV CX,AXCALL QIDONG0MOV STAY0,7JMP EXIT3L7_1:SUB AL,7MOV CX,AXCALL QIDONG1MOV STAY0,7JMP EXIT3L8: MOV DISD,8 MOV AL,STAY0MOV AH,0CMP AL,8JNB L8_1MOV STAY1,8SUB STAY1,ALXCHG AL,STAY1MOV

38、CX,AXCALL QIDONG0MOV STAY0,8JMP EXIT3L8_1:SUB AL,8MOV CX,AXCALL QIDONG1MOV STAY0,8JMP EXIT3L9: MOV DISD,9MOV AL,STAY0MOV AH,0CMP AL,9JNB L9_1MOV STAY1,9SUB STAY1,ALXCHG AL,STAY1MOV CX,AXCALL QIDONG0MOV STAY0,9JMP EXIT3L9_1:SUB AL,9MOV CX,AXCALL QIDONG1MOV STAY0,9JMP EXIT3L10: MOV D10,1 MOV DISD,10MO

39、V AL,STAY0MOV AH,0CMP AL,10JZ EXIT3MOV STAY1,10SUB STAY1,ALXCHG AL,STAY1MOV CX,AXCALL QIDONG0MOV STAY0,10EXIT3:RETYUNXING0 ENDPQIDONG0 PROCNEAR ;电梯需要上升时电机的转动情况及对应的LED的变化情况MOV AL,STAY0INC ALPUSHDXMOV ZHUANH,ALCALLDAC0832 ;使电机转动MOV AL,ZHUANHPOPDXA0:PUSH DXMOV ZH0,ALPOP DXMOV AL,ZH0MOV ZHUANH1,AL XLAT

40、OUT DX,AL;显示相应楼层 MOV DISD1,ALCALLDISPLAY1CALL DL1S;延时1SMOV AL,ZHUANH1INC ALLOOP A0MOV DISD,0 ;目的楼层到达后,复位CALL DENGMIECALL DAC0832B ;使电机停止RETQIDONG0 ENDPQIDONG1 PROCNEAR ;电梯需要下降时电机的转动情况及对应的LED的变化情况MOV AL,STAY0DEC ALPUSHDXMOV ZHUANH,AL ;记录AL的值CALLDAC0832 ;使电机转动MOV AL,ZHUANH POPDXA1:PUSH DXMOV ZHUANH1,A

41、LXLATOUT DX,AL ;显示相应楼层MOV DISD1,AL ;记录目的楼层的LED显示的编码CALL DISPLAY1CALL DL1S ;延时1SMOV AL,ZHUANH1DEC ALPOP DXLOOP A1MOV DISD,0CALL DENGMIE ;到达后目的楼层,灯灭掉CALL DAC0832B ;使电机停止转动RETQIDONG1 ENDPDL1S PROCNEARPUSH AXPUSH DXMOV DX,1000;延时1SMOV AH,0FFH;星研公司提供的软中断INT 21HPOP DXPOP AXRETDL1SENDPDAC0832PROCNEARMOVDX,

42、DA0832MOVAL,021H;转换电压数字量OUTDX,ALRETDAC0832ENDPDAC0832B PROC NEARMOVDX,DA0832MOVAL,00HOUTDX,ALRETDAC0832B ENDPDENGMIE PROC NEAR CMP DISD,0 ;判断是否到达目的楼层,到达后准备清空目的楼层显示灯 JZ S1 JMP S2S1: PUSH CXMOV CX,8DDL:MOVZHUANH,ALMOVAL,0FFHOUT DX,ALMOVAL,ZHUANHLOOP DDLPOP CX CMP D10,1 ;显示10楼 JZ A10 JMP S101A10: MOV A

43、L,0F9H OUT DX,AL MOV AL,0C0H OUT DX,AL PUSH CXMOV CX,6DDL1:MOVZHUANH,ALMOVAL,0FFHOUT DX,ALMOVAL,ZHUANHLOOP DDL1MOV D10,0POP CX RET S101:MOV AL,DISD1 ;记录目的楼层OUT DX,ALS11: PUSH CXMOV CX,7DDLL:MOVZHUANH,ALMOVAL,0FFHOUT DX,ALMOVAL,ZHUANHLOOP DDLLPOP CXRETS2: RETDENGMIE ENDP DISPLAY1 PROC NEAR CMP D10,1

44、;是否到达10楼 JZ DS10 JMP GO1DS10: PUSH CXMOV CX,5DSD:MOVZHUANH,ALMOVAL,0FFHOUT DX,ALLOOP DSDMOV AL,0F9HOUT DX,ALMOV AL,0C0HOUT DX,ALMOV AL,ZHUANHPOP CXRET GO1:PUSH CXMOV CX,6D:MOVZHUANH,ALMOVAL,0FFHOUT DX,ALLOOP DCALL DISPLAY2MOV AL,ZHUANHPOP CXRETDISPLAY1 ENDPDISPLAY2 PROC NEAR CMP DISD,0 JZ STOP1 CMP

45、DISD,1 JZ DD1 CMP DISD,6 JZ DD6 CMP DISD,7 JZ DD7 CMP DISD,8 JZ DD8 CMP DISD,9 JZ DD9 JMP ERRORSTOP1: MOV AL,0FFH JMP DDD DD1: MOV AL,0F9H JMP DDDDD6: MOV AL,82H JMP DDD DD7: MOV AL,0F8H JMP DDD DD8: MOV AL,80H JMP DDD DD9: MOV AL,90H JMP DDDERROR: MOV AL,0FFHDDD: OUT DX,AL RETDISPLAY2 ENDPIfExitPRO

46、CNEARPUSHAXPUSHDXMOVAH,06HMOVDL,0FFH ;DL=0FFH表示输入,键值为ALINT21HPOPDXPOPAXJZIfExit1JMPExitIfExit1:RETIfExitENDPInitPCIPROCNEARMOVAH,00HMOVAL,03HINT10H;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0JZInitPCI2LEADX,msg0InitPCI1:MOVAH,09HINT21HJMPExitInitPCI2:MOVAH,0B1HMOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH;读取该卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:A

温馨提示

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

评论

0/150

提交评论