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

📄 步进电动机控制程序段.txt

📁 步进电动机控制程序段 DSP来实现的 是一个很有用的程序
💻 TXT
字号:
《步进电动机控制程序段》

1.《软件实现脉冲分配子程序》

COMMUTATION
         LDP       #0
         BIT       DIRECTION,15       ;判别转向
         BCND      CCW,NTC          ;反转则跳转
CW
         LACL      STATE              ;正转加1
         ADD       #1
         SACL      STATE
         SUB       #10
         BCND      ZZ,NEQ             ;STATE没超过9则跳转
         SPLK      #0,STATE            ;否则修正STATE=0
         B         ZZ
CCW
         LACL      STATE              ;反转减1
         SUB       #1
         SACL      STATE
         SUB       #0FFFFH
         BCND      ZZ,NEQ             ;STATE不小于0则跳转
         SPLK      #9,STATE            ;否则修正STATE=9
ZZ       LACL      #ABC               ;指向数据首地址
         ADD       STATE               ;加偏移量
         LDP       #0E8H
         TBLR     ACTRA               ;修改ACTRA
         LDP       #0
         RET
ABC                                     ;10个控制字
         .WORD 000FH,003FH,003CH,00FCH,00F0H
         .WORD 03F0H,03C0H,03C3H,0303H,030FH

2.《位置控制子程序》

POS
         LDP       #0
         BIT       DIRECTION,15         ;检测转向
         BCND      CCW,NTC            ;反转则跳转
CW                                      ;正转加一
         CLRC      C                    ;清进位标志
         LACL      ABSOLUTEL
         ADD       #1
         SACL      ABSOLUTEL
         LACL      ABSOLUTEH
         ADDC      #0                  ;加进位
         SACL      ABSOLUTEH
         BCND      ALARM,C           ;有进位则越界
         B         REL
CCW                                    ;反转减一
         SETC      C                   ;清借位
         LACL      ABSOLUTEL
         SUB       #1
         SACL      ABSOLUTEL
         LACL      ABSOLUTEH
         SUBB      #0                  ;减借位
         SACL      ABSOLUTEH
         BCND      ALARM,NC         ;有借位则越界
REL
         LACL      RELATIVE           ;步数减一
         SUB       #1
         SACL      RELATIVE
         BCND      QUIT,NEQ           ;步数不等于0,退出
         B         STOP                 ;步数等于0,停机
ALARM
         LDP       #0E8H
         LACL      T1CON 
         AND       #0FFBFH             ;清TENABLE位
         SACL      T1CON               ;停机
         LDP       #0
         CALL      BAOJING             ;调报警子程序
STOP    
         LDP       #0E8H
         LACL      T1CON 
         AND       #0FFBFH             ;清TENABLE位
         SACL      T1CON               ;停机
QUIT    
         LDP       #0
         RET

3.《加减速子程序》

SPEED
         LDP       #0
         BIT       DIRECTION,15        ;检测转向
         BCND      CCW,NTC           ;反转则跳转
CW                                      ;正转加一
         CLRC      C                    ;清进位标志
         LACL      ABSOLUTEL
         ADD       #1
         SACL      ABSOLUTEL
         LACL      ABSOLUTEH
         ADDC      #0                  ;加进位
         SACL      ABSOLUTEH
         BCND      ALARM,C           ;有进位则越界
         B         UP
CCW                                    ;反转减一
         SETC      C                   ;清借位
         LACL      ABSOLUTEL
         SUB       #1
         SACL      ABSOLUTEL
         LACL      ABSOLUTEH
         SUBB      #0                  ;减借位
         SACL      ABSOLUTEH
         BCND      UP,C                ;无借位则跳转
ALARM 
         LDP       #0E8H
         LACL      T1CON 
         AND       #0FFBFH             ;清TENABLE位
         SACL      T1CON              ;停机
         LDP       #0
ALARM1
         CALL      BAOJING             ;调报警子程序
         B          ALARM1
UP
         BIT       ABC,15 
         BCND      CONSTANT,NTC      ;不是加速则跳转
         LACL      SPEEDUPN           ;加速总步数减1
         SUB       #1
         SACL      SPEEDUPN 
         BCND      UP1,NEQ             ;加速总步数没走完则跳转
         LACL      ABC,1                ;修改标志,指向恒速
         SACL      ABC
         B          QUIT
UP1
         LACL      STEP                 ;级步数减1
         SUB       #1
         SACL      STEP
         BCND      QUIT,NEQ           ;级步数没走完则退出
         LACL      SPEEDN              ;速度级数加1
         ADD       #1
         SACL      SPEEDN
         LT         SPEEDN
         MPY       #K                   ;计算级步数
         PAC
         SACL      STEP
         LDP       #0E8H
         LACL      T1PR
         SUB       #10                   ;周期值减10
         SACL      T1PR
         B         QUIT
CONSTANT
         BIT       ABC,14
         BCND      DOWN,NTC           ;不是恒速则跳转
         LACL      SPEEDCN             ;恒速总步数减1
         SUB       #1
         SACL      SPEEDCN
         BCND      QUIT,NEQ            ;恒速总步数没走完则退出
         LACL      ABC,1                ;修改标志,指向减速
         SACL      ABC
         B          DOWN2
DOWN
         LACL      SPEEDWN            ;减速总步数减1
         SUB       #1
         SACL      SPEEDWN
         BCND      DOWN1,NEQ         ;减速总步数没走完跳转
         LDP       #0E8H
         LACL      T1CON               ;总步数走完停机
         AND       #0FFBFH              ;清TENABLE位
         SACL      T1CON               ;停机
         B         QUIT
DOWN1
         LACL      STEP                 ;级步数减1
         SUB       #1
         SACL      STEP
         BCND      QUIT,NEQ           ;级步数没走完退出
DOWN2 
         LACL      SPEEDN              ;速度级数减1
         SUB       #1
         SACL      SPEEDN
         LT         SPEEDN              ;计算级步数
         MPY       #K
         PAC
         SACL      STEP
         LDP       #0E8H
         LACL      T1PR
         ADD       #10                   ;周期值加10
         SACL      T1PR
QUIT                                     ;退出
         LDP       #0
         RET

⌨️ 快捷键说明

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