📄 mstep.asm
字号:
;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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -