步进电机实习报告

步进电机控制

摘 要:

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

关键词:AT89C51芯片;L298驱动;数码管;步进电机

1 引言

 单片机的应用正在不断深入和创新,作为一门我们专业相当重要的专业课程,同时带动着传统控制检测日新月异的更新。此次设计利用单片机芯片作为核心部件进行调试与创新,其中对步进电机背景于现状,系统硬件设计,软件设计及其仿真调试过程都做了介绍,是我对步进电机的院里有了深入的了解,也对单片机的设计研发过程以及知识的学习都有了很深的体会和提高。

  本控制系统的设计采用单片机芯片控制,通过人为按动各开关实现步进电机的开关,另外还增加了正转、反转、加速、减速的功能。

2 总体设计方案

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。

   由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。

不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。

拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相拍运行方式即AB-BC-CD-DA-AB,四相八拍运动方式即A-AB-B-BC-C-CD-D-DA-A.

注:2相励磁通过的电流是1相励磁时通过电流的2倍,转矩也是1相励磁的2倍。此时电机的振动较小且应答频率升高,目前仍广泛使用此种方式。

2.1 设计思路

  使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框图2.1如下:

 

                         图2.1  控制系统组成图

  脉冲信号一般由单片机或CPU产生,一般脉冲信号的占空比为0.3-0.4左右,电机转速越高,占空比则越大。

  功率放大是驱动系统最为重要的部分。步进电机在一定转速下的转矩取决于它的动态平均电流而非静态电流(而样本上的电流均为静态电流)。平均电流越大电机力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电势。因而不同的场合采取不同的的驱动方式,到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流、细分数等。 为尽量提高电机的动态性能,将信号分配、功率放大组成步进电机的驱动电源。

      步进电机一经定型,其性能取决于电机的驱动电源。步进电机转速越高,力距越大则要求电机的电流越大,驱动电源的电压越高。

  控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。具体实现用延时时间的长短来决定,程序如下。

DELAY:   MOV R6,#125       ;延时50ms

   L1: MOV R5,#200

   L2: DJNZ R5,L2

       DJNZ R6,L1   RET

2.2、步进电机设计方框图

 

图2.1


图2.2

本系统是用单片机软件程序来产生脉冲分配信号,即把数字控制计数的高精度等方面的优势有效地应用于步进电机控制系统,同时本系统设计的步进电机控制器硬件电路十分简单,成本低,使用方便。本电路包括开关控制电路,时钟电路,功率放大电路等的选择。

3 设计原理分析

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

 AT89C51芯片简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图1。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

时钟振荡器:AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引起XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF左右,如果使用陶瓷谐振器建议选择40pF左右。

芯片主要特性

·与MCS-51 兼容 ,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年
   ·全静态工作:0Hz-24Hz·三级程序存储器锁定,128*8位内部RAM
   ·32可编程I/O线,两个16位定时器/计数器,5个中断源
   ·可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路

3.1.1硬件设计及调试

图3.1.1   步进电机与单片机连接原理图

3.1.2软件设计及调试

图3.1.2  程序流程图

4 总结与体会

这次课程设计是我最喜欢的一次,因为这次课程设计需要动脑动手,把自己课堂上学到的软件和硬件知识全部应用进来。要想完成好这次课程设计,首先要弄懂步进电机的工作原理,与外部电路的连接,单片机原理,汇编语言等。这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。

这次课程设计我收获很多,因为我学到了很多的东西,还制作了自己的东西,使自己很有成就感。在这么多次课程设计中这次是我最难忘的一次,因为是三人一组团队完成,使我体会到了分工合作的力量与重要性。虽然电机部分我没有花太多的精力,但通过合理分工,我们仍然按时完成了指定任务,并且通过相互帮助相互指点,使我们对彼此负责的那部分任务都有了更好的了解和掌握。

我想通过这次实验,我对电机的了解扩宽了,对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。

三个星期很快过去了,看着自己的劳动成果,心里满是欣慰。最后感谢老师和同学们的悉心指导和帮助。

参考文献

[1] 李朝青.单片机原理及接口技术(第三版)[M].北京:北京航空航天大学出版社,2006.12

[2] 石磊.Altium designer8.0中文版电路设计标准教程[M]. 北京:清华大学教育出版社,2009.11

[3] 杨天明,陈杰.电机拖动[M]..北京:北京大学出版社,2006.8

附录1

设计程序代码

org 00h

jmp disp                       ;显示初始速度为0

stop:orl p1,#0ffh              ;   步进电机停止

loop:jnb p0.0,for2              ; 如果p0.0按下正转

          jnb p0.1,rev2          ; 如果p0.1按下反转

          jnb p0.2,stop1         ; 如果p0.2按下停止

          jmp loop              ;反复监测键盘

                      

for:mov r0,#00h                ;正转到tab取码指针初值

for1:mov a,r0                   ;取码

          mov dptr,#table         ;

          movc a,@a+dptr

          jz for                  ;是否到了结束码00h

          cpl a                   ;把acc反向

          mov p1,a                ;输出到p1开始正转

          jnb p0.2,stop1          ;   如果p0.2按下停止

          jnb p0.1,rev2           ;   如果p0.1按下反转

          call delay              ;转动的速度

          inc r0                  ;取下一个码

          jmp for1                ;继续正转

rev:mov r0,#05h                  ;反转到tab取码指针初值

rev1:mov a,r0

          mov dptr,#table            ;取码

          movc a,@a+dptr

          jz rev                  ;是否到了结束码00h

          cpl a                   ;把acc反向

          mov p1,a                ;输出到p1开始反转

          jnb p0.2,stop1          ;   如果p0.2按下停止

          jnb p0.1,rev2           ;   如果p0.1按下反转

          call delay             ;转动的速度

          inc r0                  ;取下一个码

          jmp rev1                ;继续反转

stop1:call delay                 ;   按p0.2的消除抖动

            jnb p0.2,$            ; p0.2放开否?

            call delay            ;放开消除抖动

            jmp stop

for2:call delay                  ;   按p0.0的消除抖动

           jnb p0.0,$             ; p0.0放开否?

           call delay             ;放开消除抖动

           jmp for

rev2:call delay                  ;   按p0.1的消除抖动

           jnb p0.1,$            ; p0.0放开否?

           call delay            ;放开消除抖动

           jmp rev

delay:jnb p0.3,fast              ;判断p0.3是否按下

        jnb p0.4,slow              ;判断p0.4是否按下

        mov r1,#250             ;步进电机的转速20ms

           d1:mov r2,#248

           djnz r2,$

           djnz r1,d1

              mov a,#5                         显示速度

              mov dptr,#tab

              movc a,@a+dptr

              mov p2,a

              mov a,#4

              mov dptr,#tab

              MOVC A,@A+DPTR

              MOV P3,A

           ret

fast:mov r5,#150                  ;加速

           d2:mov r6,#148       

           djnz r6,$

           djnz r5,d2

           mov a,#9                  ;显示速度

           mov dptr,#tab

           movc a,@a+dptr

           mov p2,a

           mov a,#7

           mov dptr,#tab

           MOVC A,@A+DPTR

           MOV P3,A

           ret

slow:mov r3,#75                 ;减速

           d3:mov r4,#48

           djnz r4,$

           djnz r3,d3

     mov a,#1                 ;显示速度

     mov dptr,#tab

     movc a,@a+dptr

     mov p2,a

     mov a,#8

      mov dptr,#tab

      MOVC A,@A+DPTR

      MOV P3,A

           ret

table:

       db 03h,09h,0ch,06h     ;正转表

       db 00                   ;正转结束

       db 03h,06h,0ch,09h     ;反转

       db 00                   ;反转结束

disp:mov a,#0                   ;显示子程序

     mov dptr,#tab

     movc a,@a+dptr

     mov p2,a

     mov a,#0

      mov dptr,#tab

      MOVC A,@A+DPTR

      MOV P3,A

      jmp loop

tab: db 0c0h,0f9h,0a4h,0b0h,99h;数码表

       db 092h,082h,0f8h,080h,090h;

       end

附录2

附录3

流程图

 

 

第二篇:步进电机实训报告

武汉软件工程职业学院

课程设计报告

课程名称:微机原理与接口技术课程设计

设计题目     步进电机控制接口设计         

          别:          软件学院               

    业:       嵌入式系统工程             

    别:           第四组                 

学生姓名:   孙欣    :  1297811110904  

起止日期:2012618~ 20##625

指导教师:            黄崇新                 

目  录 

第一章      绪论...................................................................................................................................... 1

第二章      分析...................................................................................................................................... 2

2.1  课程设计题目........................................................................................................................ 2

2.2  课程设计任务及要求............................................................................................................. 2

2.2.1  任务.............................................................................................................................. 2

2.2.2  课程设计的要求............................................................................................................ 2

2.3  运行环境及开发工具............................................................................................................. 3

2.3.1  运行环境....................................................................................................................... 3

2.3.2  开发工具....................................................................................................................... 3

第三章      设计...................................................................................................................................... 4

3.1  基本原理................................................................................................................................ 4

3.2  设计方法................................................................................................................................ 4

3.2.1  硬件设计方法....................................................................................................................... 4

3.2.2  软件设计方法....................................................................................................................... 5

3.3  程序流程图............................................................................................................................ 5

第四章     调试与操作说明................................................................................................................... 16

4.1 综合调试步骤........................................................................................................................ 16

4.2 操作说明................................................................................................................................ 17

第五章     课程设计心得与体会............................................................................................................ 18

参考文献.............................................................................................................................................. 21

附录   步进电机控制程序................................................................................................................... 22

第一章    绪  论

步进电机是机电设备中广泛使用的一种电机,它将电脉冲信号直接转化为角位移或直线位移。步进电机输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比,因此可用输入电脉冲的数量、频率及电机各相绕组的通电顺序来精确控制步进电机的启停、转速、转向。传统的步进电机控制方法是由触发器产生控制脉冲来进行控制的。当步进电机参数发生变化时,需要重新进行控制器的设计。而且传统的触发器构成的控制系统,控制电路复杂、控制精度低、生产成本高。以微电子芯片为控制核心,以电力电子功率变换器为执行机构,在自动控制理论的指导下组成的控制系统,能通过控制电机转速或转矩进而控制生产机械或运动部件按照人们所希望的规律运动。克服了传统控制器的缺点,满足工业生产新的控制要求,体现了更大的优越性,因此广泛应用于数字控制系统中。如今各领域步进电机无处不在,高精度,实时监控的步进电机控制系统具有重要意义和实用价值。

目前单片机正朝着高性能和多品种方向发展趋势将是进一步向着COMS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。同时,EDA技术的发展,使得芯片的功能能够按人的意愿进行设计,对节省能源和人性化设计有着重要的促进意义。本文介绍一种利用AT89C51单片机作为控制器,实现对步进电机简易控制的方案。该控制系统具有电路简单可靠,通用性强,成本低廉,灵活方便等特点。

第二章    分析

2.1  课程设计题目

步进机控制接口设计

2.2  课程设计任务及要求

2.2.1  任务

主要功能:

1)  微机步进电机起动与停止控制;
实现方法:设置硬开关或软开关。
如按按键SW1启动或SW2停止。按S或s键启动,按ESC键停止。

2)  微机步进电机的速度控制;
实现方法:设置延时子程序。
即以一定的时间间隔送相序代码,不同的时间间隔就可实现不同的速度控制。

3)  微机步进电机的方向控制;
实现方法:设置相序表指针。

2.2.2  课程设计的要求

课程设计的教学要求体现于整个工作的各个阶段中,可根据所选课题的特点而有所侧重,但应达到如下的基本要求:

1、 明确设计任务要求
2、 分析任务并合理选择设计方案
3、 软件流程图的绘制
4、 软件的设计
5、 综合调试
6、 撰写课程设计报告

2.3  运行环境及开发工具

2.3.1  运行环境:

Windows XP

2.3.2  开发工具:

MF

第三章    设计

3.1    基本原理

(1)步进电机控制原理

步进电机是将电脉冲信号转换成角位移的一种机电式数模转换器。步进电机旋转的角位移与输入脉冲的个数成正比;步进电机的转速与输入脉冲的频率成正比;步进电机的转动方向与输入脉冲对绕组加电的顺序有关。因此,步进电机旋转的角位移、转速以及方向均受输入脉冲的控制。

3.2  设计方法

3.2.1  硬件设计方法

1、 单片机

单片微型机计算机是微型计算机的一个重要分支,也是具有生命力的机种,单片微型计算机简称单片机。特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件;中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部部件设备和结合,便可成为一个单片机控制系统

2、按键

键盘部分,设定正,反转和启动、停止、加减速等功能操作。本系统在启动电机后步进电机匀速的运行。为了实现系统的启动、停止和正、反转,要设置相应的按钮和开关进行功能键处理。

3.2.2  软件设计方法

(1)启动后首先读一遍键盘。

(2)根据键盘判断电机是正转代码、反转代码或者停止代码。

(3)根据键盘所读判断是否加速、减速或者保持启动时候的速度,然后设定延时的时间。

(4)判断设计的八拍是否完成,完成后清零从头开始下一个八拍,没有完成接着完成。

(5)返回开始继续循环。


3.3  程序流程图

第四章    调试与操作说明

4.1综合调试步骤

1、检测实验平台及配套设备是否完好

  检测各硬件模块是否断路或者短路,根据电路图查看接线线路是否正确。检测接线无误后,接入电源,测量各芯片的供电电压,检查无误后,进入软件调试阶段。

2、调试自己设计的软件控制程序是否符合要求

   首先下载程序到单片机后复位启动,电机开始转动,然后可以按正转和反转,接下来可以按加速按钮或者减速按钮进行加速或者减速,调试完成后按关停止开关可以步进电机停止运行。

4.2    操作说明

步进电机原理

反应式步进电机是本系统的控制部件,它的定子是四相8个磁极,每个极靴上有相等的小齿,转子圆周上均匀分布着许多个小齿。定、转子的尺宽、尺距都相等。当A相通电,A相极下的小齿与转子齿对齐时,B相下小齿刚好错开t/4,B 相错开2t/4,D相错开3t/4。控制步进电机的运行速度实际上就是控制系统发出CP脉冲的频率或者换向的周期。

(1)步进电机的工作方式:实际使用的步进电机以单、双八拍的方式工作。若以A-AB-B-BC-C-CD-D-DA-A次序通电为正转,则按A-AD-D-DC-C-CB-B-BA-A通电为反转。

2)运动速度的控制:当改变脉冲的周期时,ABCD四相绕组高低电平的宽度将发生变化,这就导致通电和断电变化的速率发生变化,使电机转速发生变化,所以调节脉冲的周期就可以控制步进电机的运动速度。

(3)旋转角度的控制:因为每输入一个脉冲,就使步进电机四相绕组的状态变化一次,并相应地旋转一个角度,所以步进电机的旋转角度由输入的脉冲数确定。

第五章    课程设计心得与体会

通过微机步进电机控制系统设计,深入了解与掌握步进电机的控制原理与可编程芯片8255A、8253、8259A等的使用方法。在这次设计实践中,培养了我们查阅专业资料、工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。

参考文献

[1] 韩雁、徐煜明主编 微机原理与接口技术 电子工业出版社 20##年1月

[2] 刘乐善主编 微型计算机接口技术及应用 华中科技大学出版社,20##年4月第1版

[3] 华中科技大学计算机学院自编MFID微机实验平台 微机原理与接口实验指导书

[4] 宋杰  微机原理与接口技术课程设计  机械工业出版社,20##年4月第1版

附录步进电机控制程序

DATA SEGMENT

      PSTAA DB 05H,15H,14H,54H,50H,51H,41H,45H

      PSTAB DB 45H,41H,51H,50H,54H,14H,15H,05H

      MESG DB '(1) Press SW1 to ZK.',10,13

            DB '(2) Press SW2 to ZM.',10,13

            DB '(3) Press SW3 to FM.',10,13

            DB '(4) Press SW4 to FK.',10,13

            DB '(5) Press Any Key to Quit.',10,13,'$'

DATA ENDS

CODE SEGMENT

      ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

      MOV DS,AX

      MOV AH,09H

      MOV DX,OFFSET MESG  ;显示提示信息

      INT 21H

      MOV DX,303H              ;8255初始化

      MOV AL,81H

      OUT DX,AL

      MOV AL,09H                 ;关74ls373

      OUT DX,AL

     

WAIT1:MOV AH,0BH        ;检查有无按键

      INT 21H

      CMP AL,0H

      JNZ QUIT1               ;有按键盘退出

      MOV DX,302H              ;检查开关状态

      IN AL,DX

      TEST AL,01H

      JZ ZM                   ;若按SW1则正向慢速

      TEST AL,02H

      JZ ZK                   ;若按SW2则正向快速

      TEST AL,04H

      JZ FM                   ;若按SW3则反向慢速

      TEST AL,08H

      JZ FK                   ;若按SW4则反向快速

      JMP WAIT1              ;无开关按下则等待

ZM:    MOV AH,0BH                ;检查有无按键

      INT 21H

      CMP AL,0H

      JNZ QUIT1               ;有按键盘退出        

      MOV DX,303H              ;无按键盘则打开74LS373

      MOV AL,08H

      OUT DX,AL

      MOV CL,8                ;设置循环次数

      MOV SI,OFFSET PSTAA   ;设置正向相序表指针

L1: MOV DX,302H             ;读开关状态

      IN AL,DX

      TEST AL,02H

      JZ ZK

      TEST AL,04H

      JZ FM

      TEST AL,08H

      JZ FK

      MOV DX,300H              ;送相序码

      MOV AL,[SI]

      OUT DX,AL

      PUSH CX

      sub al,al               ;设置延时参数

      SUB CL,CL

      MOV BX,20

      CALL DELAY                ;延时

      POP CX

      INC SI

      DEC CL

      JNZ L1                       ;循环次数未到转

      JMP ZM

ZK:MOV AH,0BH

      INT 21H

      CMP AL,0H

      JNZ QUIT1

      MOV DX,303H

      MOV AL,08H

      OUT DX,AL

      MOV CL,8

      MOV SI,OFFSET PSTAA

L2:MOV DX,302H

      IN AL,DX

      TEST AL,01H

      JZ ZM

      TEST AL,04H

      JZ FM

      TEST AL,08H

      JZ FK

      MOV DX,300H

      MOV AL,[SI]

      OUT DX,AL

      PUSH CX

      sub al,al

      SUB CL,CL

      MOV BX,1

      CALL DELAY

      POP CX

      INC SI

      DEC CL

      JNZ L2

      JMP ZK

     

FM:MOV AH,0BH

      INT 21H

      CMP AL,0H

      JNZ QUIT1

      MOV DX,303H

      MOV AL,08H

      OUT DX,AL

      MOV CL,8

      MOV SI,OFFSET PSTAB

L3:MOV DX,302H

      IN AL,DX

      TEST AL,08H

      JZ FK

      TEST AL,01

      JZ ZM

      TEST AL,02H

      JZ ZK

      MOV DX,300H

      MOV AL,[SI]

      OUT DX,AL

      PUSH CX

      sub al,al

      SUB CL,CL

      MOV BX,20

      CALL DELAY

      POP CX

      INC SI

      DEC CL

      JNZ L3

      JMP FM

FK:MOV AH,0BH

      INT 21H

      CMP AL,0H

      JNZ QUIT1

      MOV DX,303H

      MOV AL,08H

      OUT DX,AL

      MOV CL,8

      MOV SI,OFFSET PSTAB

L4:MOV DX,302H

      IN AL,DX

      TEST AL,04H

      JZ FM

      TEST AL,01H

      JZ ZM

      TEST AL,02H

      JZ ZK

      MOV DX,300H

      MOV AL,[SI]

      OUT DX,AL

      PUSH CX

      sub al,al

      SUB CL,CL

      MOV BX,1

      CALL DELAY

      POP CX

      INC SI

      DEC CL

      JNZ L4

      JMP FK

QUIT1:MOV DX,303H       ;关于4LS373

      MOV AL,09H

      OUT DX,AL

      MOV AX,4C00H            ;结束用户程序返回

      INT 21H

     

DELAY PROC NEAR               

      PUSH AX

      PUSH BX

      PUSH CX

      PUSH DX

      PUSH AX

      MOV AH,2CH

      INT 21H

      POP AX

      ADD AL,CL

      ADD BH,DH

      ADD BL,DL

      CMP BL,100

      JB SECS

      SUB BL,100

      INC BH

SECS:CMP BH,60

      JB MINS

      SUB BH,60

      INC AL

MINS:CMP AL,60

      JB HRS

      SUB AL,60

      INC CH

HRS:CMP CH,24

      JNE CHECK

      SUB CH,CH

CHECK:PUSH AX

      MOV AH,2CH

      INT 21H

      POP AX

      CMP CL,AL

      JA QUIT

      JB CHECK

      CMP DX,BX

      JB CHECK

QUIT:POP DX

      POP CX

      POP BX

      POP AX

      RET

DELAY ENDP

CODE ENDS

      END START

相关推荐