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

📄 bu1.asm

📁 一种很好的用单片机控制步进电机的程序
💻 ASM
字号:
;步进电机模块 http://www.willar.com/shop_view.asp?id=48

;ME300系列单片机开发系统+步进电机模块演示程序

;功能:

;步进电机以加速方式启动,转速达到程序规定的最快速度后保持一段时间匀速运转,又开始以减速

;方式运行直到步进电机停止转动。由K1键控制演示程序运行。步进电机模块上D1-D4可以指示工作状态。

;/******************************************************************/
;/* 
;/* ME300B单片机开发系统演示程序 - 步进电机加减速运行程序 
;/* 
;/* 步进电机启动时,转速由慢到快逐步加速。 
;/* 步进电机匀速运行 
;/* 步进电机由快到慢逐步减速 
;/* 
;/* 邮箱: gguoqing@willar.com 
;/* 网站: http://www.willar.com 
;/* 作者: gguoqing 
;/* 时间: 2006/08/03 
;/* 
;/*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved 
;/*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! 
;/* 
;/******************************************************************/

; 步进电机步进角为 7.5度,一圈 360 度。
; 双四拍工作方式:
; AB-BC-CD-DA (即一个脉冲,转 7.5 度)
; 单双八拍工作方式:
; A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度)

;-------------------------------------------------------
; A组线圈对应 P1.0 (桔色)
; B组线圈对应 P1.1 (棕色)
; C组线圈对应 P1.2 (黄色)
; D组线圈对应 P1.3 (黑色)
;-------------------------------------------------------
RATE EQU 50H
BEEP BIT P3.7
K1 BIT P1.4
;-------------------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0030H
;---------------- ---------正转-------------------------
MAIN:
MOV SP,#60H
MOV P1,#0F0H
MOV RATE,#10H
JB K1,$
ACALL BEEP_BL
;-------------------------------------------------------
;加速启动过程
;------------------------------------------------------- 
FFW_RISE:
MOV R0,#00H
FFW1:
MOV A,R0
MOV DPTR,#TABLE_F ;选择工作方式
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC R0
JNZ FFW1
MOV R0,#00H
MOV A,RATE
DEC A
MOV RATE,A
CJNE A,#1,FFW1

;---------------------------------------------------
;匀速运行过程
;---------------------------------------------------
FFW_CONSTANT: 
MOV R1,#0FFH
FFW2: 
MOV A,R0
MOV DPTR,#TABLE_F ;选择工作方式

MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC R0
JNZ FFW2
MOV R0,#00H 
DJNZ R1,FFW2
;---------------------------------------------------
;减速停止过程
;--------------------------------------------------- 
FFW_FALL:
MOV R0,#00H
FFW3: 
MOV A,R0
MOV DPTR,#TABLE_F ;选择工作方式
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC R0
JNZ FFW3
MOV R0,#00H
MOV A,RATE
INC A
MOV RATE,A
CJNE A,#10H,FFW3

JMP MAIN

;-------------------------------------------------------
; 延时子程序
;-------------------------------------------------------
DELAY:
MOV R5,RATE
DEL2:
MOV R7,#5
DEL3:
MOV R6,#250
DJNZ R6,$
DJNZ R7,DEL3
DJNZ R5,DEL2
RET

;-------------------------------------------------------
;蜂鸣器响一声子程序
;-------------------------------------------------------
BEEP_BL:
MOV R6,#100
BL1:
CALL DEX1
CPL BEEP
DJNZ R6,BL1
RET
DEX1:
MOV R7,#180
DEX2:
NOP
DJNZ R7,DEX2
RET
;-------------------------------------------------------
; 单双八拍工作方式
TABLE_F: ;正转表
DB 0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H
DB 00
TABLE_R: ;反转表
DB 0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H
DB 00
;-------------------------------------------------------
; 双四拍工作方式:
TABLE1:
DB 03H,06H,0cH,09H ;正转表
DB 00 ;正转结束
TABLE2:
DB 09H,0CH,06H,03H ;反转表
DB 00 ;反转结束
;-------------------------------------------------------
END

⌨️ 快捷键说明

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