⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aexp15.asm

📁 微机接口技术的入门必备试验代码 试验平台msdi
💻 ASM
字号:
;*-----------------------------------------------------------*
;*  Aexp15.asm  步进电机綜合控制实验                           *
;*  步进电机方向/速度/起动控制程序source file                  *
;*  Copyright (c) 2002 by HUST                               *
;*-----------------------------------------------------------*    

stack segment stack
           db 256 dup(?)
stack ends
DATA SEGMENT
       PSTA DB  05H, 15H, 14H, 54H, 50H, 51H, 41H, 45H
      mess db 'Press SW2 to start step-moter !',0dh,0ah,'$'
DATA   ENDS  
CODE   SEGMENT
        ASSUME  CS:CODE, DS:data,ss:stack
BEGIN:  MOV  AX, data
        MOV  DS, AX
        mov  ah, 09h                 ;显示提示信息
        mov  dx,offset mess  
        int 21h
        MOV  DX, 303H                ;8255A初始化
        MOV  AL, 81H
        OUT  DX, AL
        MOV  AL, 09H                 ;关闭LS373,置PC4=1
        OUT  DX, AL
        MOV  CH, 50                  ;正走步数送CH
WAIT1:  MOV  DX, 302H                ;PC口
        IN   AL,DX
        AND  AL,01                   ;查SW2是否按下(PC0=0)?
        JNZ  WAIT1                   ;未按下,等待
        MOV  DX, 303H                ;8255命令口
        MOV  AL, 08H                 ;打开LS373,置PC4=0
        OUT  DX, AL
L1:     MOV  CL,08                   ;循环次数送CL
        MOV  SI, OFFSET  PSTA        ;正走相序表指针送SI
L2:     MOV  DX, 300H                ;相序表内容送PB口
        MOV  AL, [SI]
        OUT  DX, AL                  ;步进电机走1步
        push cx
        mov  cx, 0ffh
dl10:    MOV  BX, 0FFF0H               ;延时1
DL1:    DEC  BX
        JNZ  DL1
        dec  cx
        jnz   dl10
        pop  cx              
        INC  SI                      ;指针加1
        DEC  Ch                      ;正走步数减1
        JZ   REW                     ;50步已到,则反走
        DEC  Cl                      ;50步未到,则检测循环次数  
        JNZ  L2                      ;循环次数不到8次,则继续送数
        JMP  L1                      ;已到8次,则重新赋值
REW:    MOV  CH, 200                 ;反走步数送CH
L3:     MOV  CL, 08                  ;循环次数送CL
        MOV  SI, OFFSET  PSTA+7      ;反走相序表指针SI
L4:     MOV  DX, 300H                ;相序表内容送PB口
        MOV  AL, [SI]
        OUT  DX, AL                  ;步进电机走1步
        push cx
        mov  cx, 0ffh
dl20:   MOV  BX, 0FFFH               ;延时2
DL2:    DEC  BX
        JNZ  DL2
        dec  cx
        jnz  dl20
        pop  cx
        DEC  SI                      ;指针减1
        DEC  CH                      ;反走步数减1
        JZ   QUIT                    ;200步已到,则停止
        DEC  CL                      ;200步未到,则检测循环次数
        JNZ  L4                      ;循环次数未到,则继续送数
        JMP  L3                      ;循环次数已到8次,则重新赋值
QUIT:   MOV  DX, 303H                ;8255A命令口
        MOV AL,81H
        OUT DX,AL
        MOV  AL, 09H                 ;关闭LS373,置PC4=1
        OUT  DX, AL
        MOV  AX, 4C00H               ;程序退出
        INT  21H                     
CODE   ENDS
        END   BEGIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -