步进电机课程设计实验报告

 

汇编及接口技术课程设计

题目:步进电机控制系统

班    级:  100602            

学    号:  100602122         

姓    名:  张春东            

         时    间:  2012.12.25       
                              目 录

1 设计任务与要求..........................................

1.1设计任务............................................

1.2设计要求............................................

2 设计方案................................................

2.1设计思路............................................

2.2使用的芯片..........................................

2.3芯片的作用..........................................

3 硬件线路设计............................................

3.1线路图及连线说明....................................

4 软件设计................................................

    4.1程序流程图.........................................

5源程序清单与注释.........................................

6 调试过程................................................

    6.1实验步骤...........................................

    6.2出现的问题及解决的方法.............................

7.总结....................................................

8.参考资料...............................................

步进电机控制系统

一、设计任务与要求

   1.1设计任务

1.  了解步进电机控制的基本原理。

2.  掌握控制步进电机转动的编程方法。

3.  进一步熟练8255的使用。

  

   1.2设计要求

1.  开关K8控制电机的启动与停止:当K8向上拨时,电机启动,否则电机停止;

2.  开关K7控制电机的正反转。

3.  开关K1~K6控制电机的转速:K1向上拨时,得到最低转速,…… K6向上拨时,得到最高转速。

4.  在数码管上显示速度编号。

二、设计方案

    2.1设计思路

        步进电机驱动原理是通过对每相线圈中的电流的顺序切换(实验中的步进电机有四相线圈,每次有二相线圈有电流,有电流的相顺序变化),来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。


        本实验使用的步进电机线圈由四相组成,驱动方式为二相激磁方式,如图4.1所示。

图4.1     步进电机原理图

如表4.1所示,首先使HA线圈和HB线圈有驱动电流,接着使HB和HC、HC和HD、HD和HA,又返回到HA和HB有驱动电流,按这种顺序切换,电机轴按顺时针方向旋转。

表4.1     步进电机激磁方式

注:当实验结束要立即关闭电源,否则一直停留在某一相上会使电机发热。

2.2使用的芯片

    8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

    RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

    CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯; /CS=1时,8255无法与CPU做数据传输.

RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

    WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。

    D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。

    PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。

    PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。

    端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

    A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.

2.3芯片的作用

    此系统主要用到的芯片为8255, 8255方式0是基本输入/输出方式,A、B、C三个口中任何一个口都可提供简单的输入和输出操作,不需要应答联络信号,即可用于无条件传送的场合,也可以用作查询方式传送。当采用查询方式传送时,原则上可用A、B和C三个口的任一位充当查询信号,但通常都是选用C口充当查询信号,这和C口的编程有关。通常把C口的4位(高4位或低4位)规定为输出口,用以输出一些控制信号,把C口的另4位规定为输人口,用以输入外设的状态。

    方式1是一种选通输人偷出方式,A口和B口均可工作在这种方式。方式1可作为查询式传送方式,此时握手联络信号,C口要用6位(分成两个3位)分别作为A口和B口的应答联络信号。方式1也可用作中断方式,此时要写对应的C口的按位置位字,打开中断。

方式2是A口独有的双向传送方式,一般使用中断传送方式。

三、硬件线路设计

3.1线路图及连线说明

1.    实验连线

Ø  8255模块的RD、WR 连到ISA总线接口模块的IORD、IOWR,8255选通信号CE连到ISA总线接口模块的IOY0。

Ø  8255模块的数据线AD7~AD0、地址线A7~A0分别连到ISA总线接口模块的LAD0~LAD7,LA0~LA7。

Ø  步进电机的HA—PA0,HB—PA1,HC—PA2,HD—PA3。

1)8255的PA口(PA0---PA3)和步进电机的HA、HB、HC、HD相连。

2)8255的PB口(PB0---PB7)和开关K1-K8相连。

3) 8255的PC口(PC0---PC7)连接到LED的(KD0---KD7)。

                                              

2.  运行程序: BJDJ.ASM。观察电机的运转。

四. 软件设计

    该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:

     方式1为中断方式:P3.5(INT1)为步进脉冲输入端,P3.7为正反转脉冲输入端。上位机(PC机或单片机)与驱动器仅以2条线相连。

     方式2为串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。

     方式3为拨码开关控制方式:通过K1~K5的不同组合,直接控制步进电机。

     当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。

     在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换

4.1程序流程图

 

五.源程序清单与注释

MY_DATA     SEGMENT    

P8255A          DW        0C800H

P8255B          DW        0C801H

P8255C          DW        0C802H

P8255M         DW        0C803H      

SHUN            DB         03H,06H,0CH,09H        ;顺时针旋转

TIMEP           DW        ?                                  ;时间参数

DCODE         DB         ?                                  ;显示代码

MY_DATA     ENDS

MY_CODE    SEGMENT

MY_PROC            PROC     FAR       

                     ASSUME      CS:MY_CODE,     DS:MY_DATA

START:          MOV             AX,MY_DATA

                     MOV             DS,AX   

;--------------------------------------------------------------------------------------------------------      

                     MOV             DX,P8255M

                     MOV             AL,82H                               ;

                     OUT              DX,AL

                     MOV             BL,33H

NEW:            MOV         DX, P8255B

                     IN                AL,DX

                     TEST           AL,80H                               ;K8=PB7

                     JNZ             SECOND

;--------------------------------------------------------------------------------------------------

FIRST:           MOV             DX, P8255A

                     MOV             AL,00H                          ;停止步进电机            

                     OUT              DX,AL

                     JMP               NEW     

;---------------------------------------------------------------------------------------------

SECOND:      MOV             DX,P8255A

                     MOV             AL,BL

                     OUT              DX,AL

                     CALL            SWITCH

                     CALL            DELAY

                     CALL            DISPLY

;-----------------------------------------------------------------------------------------------

THIRD:          MOV         DX,P8255B

                     IN                AL,DX

                     TEST             AL,40H                               ;K7=PB6

                     JZ                FIFTH

FORTH:         ROL        BL,1                            ;                   

JMP               DONE   

;-----------------------------------------------------------------------------------------------------------

FIFTH:          ROR              BL,1                            ;                   

JMP               DONE                                      

DONE:          NOP

JMP               NEW

MOV             AX,4C00H

                     INT               21H              

MY_PROC            ENDP

;-------------------------------------------------------------------------------------------------------------

DELAY        PROC           NEAR                          ;延时程序

                     PUSH            CX

                     PUSH            SI

DEL0:            MOV             SI,   TIMEP

DL1:           MOV            CX, 0FFFFH

DL2:           LOOP            DL2

                DEC              SI

                JNZ               DL1

                     POP               SI

                POP               CX

                RET

DELAY               ENDP

DISPLY         PROC    NEAR                   ;显示程序

                     PUSH            AX

                     PUSH            DX

                     MOV             AL,DCODE

                     MOV             DX, P8255C

                     OUT              DX,AL

                     POP               DX

                POP               AX

                RET

DISPLY        ENDP           

MY_CODE    ENDS

                 END      START

;-----------------------------------------------------------------------------------------

SWITCH        PROC           NEAR                          ;速度子程序

                     PUSH            AX

                     PUSH            BX

                     PUSH            DX

STH1:            MOV          DX,P8255B

                     IN                 AL,DX

                     TEST             AL,01H                        ;K1=PB0

                     JNZ               K1

                     TEST             AL,02H  

                     JNZ               K2

                     TEST             AL,04H  

                     JNZ               K3

                     TEST             AL,08H  

                     JNZ               K4

                     TEST             AL,10H  

                     JNZ               K5

                     TEST             AL,20H  

                     JNZ               K6

                     MOV             AX,3000H

                     JMP               STH2

K1:                MOV             AX,300H                      ;实验得出具体值

                     JMP               STH2

K2:                MOV             AX, 300H                    ;实验得出具体值

                     JMP               STH2

K3:                MOV             AX, 300H                    ;实验得出具体值

                     JMP               STH2

K4:                MOV             AX, 500H

                     JMP               STH2

K5:                MOV             AX, 300H

                     JMP               STH2

K6:                MOV             AX, 300H

                     JMP               STH2

STH2:            MOV             TIMEP,AX

                     POP               DX

                     POP               BX

                     POP               AX

                     RET

SWITCH        ENDP

六、调试过程

6.1实验步骤

    1、硬件测试

        【WINXP】à【步进电机】

   2、三个相一致:

在硬件测试通过后,要注意三个相一致

(1)PNP地址和数据段中的端口地址。

(2)控制字和接线。

(3)代码段中的端口地址和接线。

       3、步步为营:功能模块要一个一个地实现

4、附加内容:

(1)K8扳上表示启动,步进电机转动。绿灯亮。K8扳下表示停止,步进电机停止。绿灯灭。

(2)K7扳上表示顺时针转,红灯亮。K7扳下表示逆时针,即倒转,倒档。红灯灭。

       (3)K1----K6扳上时,表示不同的速度。步进电机由慢到快。

(4)在1、2和3功能实现的基础上,K1—K6扳上时,要在右边的数码管上显示前进的档位。(只用一个LED显示)

       (5)在1、2、3和4功能实现的基础上,K1扳上,在第一个数码管上显示1;K2扳上,在第二个数码管上显示2。余类推。K7时,显示—1。

      

6.2出现的问题及解决的方法

    1.硬件问题:线路连接好后,调试,步进电机无转动现象。

     解决方法:查看接线是否正确,如若不行,换实验箱及连接线

    2.软件速度问题:K1---K6扳上时,步进电机转速几乎无差别。

     解决方法:将程序中K1---K6中MOV  AX,____空格中的数据差距调大 

七.总结

通过这门课程的学习我们对生活中的好多简单的电子产品的工作原理有了进一步的了解,微型计算机技术是学习微电子技术不可或缺的课程。

在此次课程设计中,通过对所学知识的综合运用来实现步进电机的控制原理,主要用到了汇编语言的寻址方式和指令系统,通汇编语言来编写程序源代码来实现步进电机的加速。用到的硬件主要是可编程的并行通信接口8255,通过8255的控制字及工作方式里实现输入输出,熟悉并掌握了所学知识,将所学的知识系统化并且学会了这些知识在实践中的应用。通过此次设计我感触颇深,我们只有将所学的理论知识具体的应用在实践中,才可以更好的理解并掌握。

参考资料

《微型计算机原理与接口技术》..................王建国 傅妍芳 主编

 

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

武汉软件工程职业学院

课程设计报告

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

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

          别:          软件学院               

    业:       嵌入式系统工程             

    别:           第四组                 

学生姓名:   孙欣    :  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

相关推荐