mstep.asm

来自「MCS-51单片机实验 39个实用实验和源码」· 汇编 代码 · 共 68 行

ASM
68
字号
;FOR    EAT598
PI      EQU     0F208H          ;开关输入口地址
PO      EQU     0F200H          ;输出口地址

        ORG     0000H
        SJMP    START
        ORG     0040H
START:
        MOV     SP,#60H
        CLR     C
        PUSH    PSW           
        mov     r5,#01110111B   ;R5与C一起组成状态存储器
READ:
        MOV     DPTR,#PI
        MOVX    A,@DPTR         ;读开关状态
        JB      ACC.0,DIRECT0   ;判断转动方向
        JB      ACC.1,DIRECT1   ;
        SJMP    READ            ;正反向开关均未开则重读开关
DIRECT0: 
        MOV     R7,#00H         ;设置方向标志
        SJMP    SPEED
DIRECT1:
        MOV     R7,#0FFH        ;设置方向标志
SPEED:
        JB      ACC.2,SPEED0    ;判定转速开关
        JB      ACC.3,SPEED1
        JB      ACC.4,SPEED2
        JB      ACC.5,SPEED3
        JB      ACC.6,SPEED4
        JB      ACC.7,SPEED5
        AJMP    READ            ;无任何速度开,则重读开关
SPEED0: MOV     R6,#61H         ;设置转速0常数
        AJMP    WAVE
SPEED1: MOV     R6,#51H         ;设置转速1常数
        AJMP    WAVE
SPEED2: MOV     R6,#31H         ;设置转速2常数
        AJMP    WAVE
SPEED3: MOV     R6,#21H         ;设置转速3常数
        AJMP    WAVE
SPEED4: MOV     R6,#11H         ;设置转速4常数
        AJMP    WAVE
SPEED5: MOV     R6,#09H         ;设置转速5常数
        MOV     B,R6
WAVE:
        LCALL   DELAY           ;延时,决定转速
        DJNZ    R6,WAVE
        MOV     DPTR,#PO        ;置输出口地址
        MOV     A,R5
        CJNE    R7,#00H,NEG     ;判断转向标志
        POP     PSW
        RL      A               ;改变相位
        SJMP    SSS
NEG:    POP     PSW
        RR      A               ;改变相位
SSS:
        PUSH    PSW
        MOV     R5,A            ;保存相位
        ANL     A,#0FH
        MOVX    @DPTR,A         ;相位输出
        AJMP    READ
DELAY:                          ;延时子程序
        MOV     R0,#20H
delay1: mov     r1,#04fh
        djnz    r1,$
        DJNZ    R0,delay1
        RET
        END

⌨️ 快捷键说明

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