您的位置 首页 数字

合泰单片机操控5线4相步进电机操控程序

;步进电机的驱动信号必须为脉冲信号!!!转动的速度和脉冲的频率成正比!!!;28BYJ48步进电机步进角为5625度;A组线圈对应PC0;B组

;步进电机的驱动信号有必要为脉冲信号!!! 滚动的速度和脉冲的频率成正比!!!

; 28BYJ48步进电机步进角为 5.625度
; A组线圈对应 PC.0
; B组线圈对应 PC.1
; C组线圈对应 PC.2
; D组线圈对应 PC.3
; 正转次第: AB组–BC组–CD组–DA组 (即一个脉冲,正转5.625度)
; 完好的源程序下载:http://www.51hei.com/f/htbjdj.rar
include HT66F50.inc

ORG0000H
JMPA1
ORG0014H ;多功能中止进口地址
JMPZD1
ORG002DH
Q1:
DC03H; 0AB
DC06H; 1BC
DC0CH; 2CD
DC09H; 3DA
A1:

MOVA,08H;跟CP1C寄存器设置要求挑选数据
MOVCP1C,A;设置PC口为I/0口而不是中止口
CLRPCC;设置pc 口为输出口
MOVA,0;设置初始脉冲
MOV[80H],A;

MOVA,00000000B;设置TM2 计数时钟位为fSYS/4
MOVTM2C0,A
MOVA,11000001B ;设置TM2中止为守时/计数模式挑选比较器A匹配
MOVTM2C1,A
MOVA,LOW 5000;设置中止时刻为5000个时钟周期
MOVTM2AL,A;低8位
MOVA,HIGH 5000;设置中止时刻为5000个时钟周期
MOVTM2AH,A;高8位不能少于3500个时钟周期不然无法发动
CLRMF0F;清多功能中止0标志
CLRT2AF;清守时器2较器A中止标志
SETMF0E;使能多功能0中止
SETT2AE;使能守时器2较器A中止
SETEMI;使能总中止
SETT2ON;开端计数

JMP$;
;*******************************************************
;中止服务子程序
;*******************************************************
ZD1:
MOV[0F0H],A;压栈ACC到0F0H
MOVA,STATUS;
MOV[0F1H],A;压栈status标志寄存器到0F1H

MOVA,Q1;数据表地址
CLRTBHP;清数据表地址高位不然犯错

ADDA,[80H];使用直接寄存器找到数据表的地址
MOVTBLP,A;表格指针寄存器TBLP
TABRDPC;查表并将数据存到PC口寄存器

INC[80H];数据表地址加1操控下一相线圈
MOVA,4
SUBA,[80H];判别是否完结4相
SNZZ
JMPZD2;不然跳出中止
MOVA,0;是则重新初始化寄存器数据
MOV[80H],A;
ZD2:
MOVA,[0F1H];弹栈后进先出先进后出
MOVSTATUS,A;弹栈0F1H的数到标志寄存器
MOVA,[0F0H];弹栈0F0H的数到acc
CLRMF0F;清多功能标志
CLRT2AF;清守时器2比较器A标志
RETI;中止回来

END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/317464.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部