📄 demostep.asm
字号:
;这是一个使用单片机通过NUL2003驱动步进电机程序.
;步进电机: 5伏,500MA/STEP,四限四拍.
;将步进电机的A B C D四个绕组连接到 S51E板"步进电机"的A,B,C,D,将公用抽头并接在VCC上.
;将"控制输入口"的A B C D 接焊盘 P2.3,P2.2,P2.1,P2.0.
;将P2.3-P2.0跳帽置焊盘位.
;----------- IT'S FOR S51E --------------------------
BUFF_STEP EQU 21H
SW1 BIT P2.7
KEY BIT P3.3
org 000h
JMP START
ORG 100H
;----------------------------------------
start:mov P0,#0f0h ;初始化MCU端口
mov P1,#0ffh
mov P3,#0ffh
MOV P2,#0ffH
MOV A,#00H ;初始化寄存器
MOV PSW,#00H
MOV IE,#00H
MOV SP,#30H
CLR KEY
MAIN: JNB SW1,CCW_LP ;正常电机正向转动
MOV DPTR,#TAB_CW ;按下SW1键,电机反向转动
JMP LOOP
CCW_LP:MOV DPTR,#TAB_CCW
LOOP: MOV A,BUFF_STEP
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL
INC BUFF_SteP
MOV A,BUFF_STEP
CJNE A,#04H,MAIN
MOV BUFF_STEP,#00H
JMP MAIN
DEL: MOV R6,#200
DEL0: MOV R7,#200
DJNZ R7,$
DJNZ R6,DEL0
RET
TAB_CW: DB 00000011B,00000110B,00001100B,00001001B ;正转相序
TAB_CCW: DB 00001001B,00001100B,00000110B,00000011B ;反转相序
END
;提问: (1) 如需改变电机转速,程序应如何修改?
(2) 使用定时中断方式,如何改变驱动相序?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -