微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 合泰单片机控制5线4相步进电机控制程序

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

时间:12-01 来源:互联网 点击:
;步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!

; 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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top