📄 step.asm
字号:
;实验目的:步进电机的使用
;1、步近电机的驱动
;2、如何控制步进电机的位移距离
;系统设计
;1、本实验采用4相4拍步进电机,步进角为7.5
;2、步进电机驱动口连接在RA0-RA3
;硬件要求:
;拨码开关S1第6位到第8位置ON,S1其他位和其他拨码开关断开
;拨码开关S15置ON
;其他拨码开关关闭。
include<p16f877a.inc> ;包含877A的头文件
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
#define step1 9h ;转动第1步驱动信号(不同的电机,可以引出线顺序不一样)
#define step2 0ch ;转动第2步驱动信号(本程序以“常州市丰源微特电记有限公司的35BY48S053”电机为基础)
#define step3 6h ;转动第3步驱动信号
#define step4 3h ;转动第4步驱动信号
count equ 20h
org 00h ;复位入口
nop ;ICD所需要的空指令
goto main ;跳转到主程序
org 05h
;****************************主程序***************************
main
banksel adcon1
movlw 07h
movwf adcon1 ;设置所有A口为普通数字口
banksel trisa
clrf trisa ;设置A口为输出
clrf status
clrf porta
movlw .12 ;电机旋转一周需循环次数 360/(7.5*4)
movwf count
loop
movlw step1 ;第1步
movwf porta
call delay
movlw step2 ;第2步
movwf porta
call delay
movlw step3 ;第3步
movwf porta
call delay
movlw step4 ;第4步
movwf porta
call delay
decfsz count,1 ;是否旋转完一周
goto loop ;否,继续转动
clrf porta ;是,停止转动
goto $-1 ;停机
;*******************************延时程序********************************
;控制输出的频率
delay
movfw 0FH
movwf 21h
movlw 0ffh
movwf 22h
decfsz 22h,1
goto $-1
decfsz 21h,1
goto $-5
return
;******************************源程序结束*******************************
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -