C51单片机电动机驱动程序

如题所述

;利用DELAY副程序(0.05秒XR5),产生驱动信号
;由P1输出,正转200步(1圈),再反转200步(1圈),
;#11H为1相驱动,#33H为2相驱动
;速度为 1/(0.05XTIMES) 步/秒
STEPS: EQU 200 ;步数设定
TIMES EQU 10 ;时间延迟次数
PHASE EQU 11H ;激磁方式
OUT REG P1 ;指定输出埠
;======================================================
ORG 0 ;程序开始位置
CALL POSITION ;呼叫定位副程序
START: MOV A, #PHASE ;指定驱动信号
;=============正转=====================================
MOV R4, #STEPS ;指定正转步数
RL_1: MOV OUT, A ;输出驱动信号
MOV R5, #TIMES ;指定重复数
CALL DELAY ;呼叫延迟副程序
RL A ;下一个驱动信号
DJNZ R4, RL_1 ;是否已200步?
;=============反转=====================================
MOV R4, #STEPS ;指定正转步数
RR_1: MOV OUT, A ;输出驱动信号
MOV R5, #TIMES ;指定重复数
CALL DELAY ;呼叫延迟副程序
RR A ;下一个驱动信号
DJNZ R4, RR_1 ;是否已200步?
;=============延迟副程序==R5x0.05秒===================
DELAY: MOV R7, #100
这是正传反转
;利用DELAY副程序(0.05秒XR5), 产生驱动信号
;由P1输出
;#11H为1相驱动, #33H为2相驱动
;速度为 1/(0.05XTIMES) 步/秒
TIMES EQU 10
PHASE EQU 11H
OUT REG P1
ORG 0
CALL POSITION ;呼叫定位副程序
MOV A, #PHASE ;指定驱动信号
RL_1: MOV OUT, A ;输出驱动信号
MOV R5, #TIMES ;指定重复数
CALL DELAY ;呼叫延迟副程序
RL A ;下一个驱动信号
JMP RL_1 ;跳至RL_1形成回圈
;================================================
DELAY: MOV R7, #100
D1: MOV R6, #250
DJNZ R6, $
DJNZ R7, D1
DJNZ R5, DELAY
RET
;=======定位副程序===============================
POSITION:
MOV 30H, #4 ;四个驱动信号
MOV A, #PHASE ;指定驱动信号
P_1: MOV OUT, A ;输出驱动信号
MOV R5, #TIMES ;指定重复数
CALL DELAY ;呼叫延迟副程序
RL A ;下一个驱动信号
DJNZ 30H, P_1 ;跳至RL_1形成回圈
RET
;==================================================
END
这是单步驱动
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-27
您好,这样的情况建议您可以升级到最新版本试一下,或是联系一下官网客服比较好。
第2个回答  2012-04-14
什么 电机?、、直流? 步进? 还是交流?、、、、追问

4相步进电机

追答

四相五线步进电机吗?、、

追问

追答

都有什么要求啊?、、
单步?、正反转?、、、调速?、