MCS-51单片机驱动步进电机的程序设计
扫描二维码
随时随地手机看文章
1.实验设计
定时器1于方式1,16位,10ms中断一次
40H10ms计数单元
41H秒计数单元
42H分计数单元
43H时计数单元
定时方式1为10MS:THX=0ECH,TLX=78H
方式0为10MS: THX=63H,TLX=18H
步进电机驱动实验定时中断程序
正转后反转,显示计数值
步进电机按三相六拍的工作方式运动
X轴
CBA
P1.2 P1.1 P1.0
用键盘上方的发光二极管(3FH)对应指示:
D2D1D0
正转:A-AB-B-BC-C-CA-A
反转:A-CA-C-BC-B-AB-A
2.参考程序
; 42H,41H为BCD码计数单元
;内存分配
TCTEREQU40H;10ms计数单元
CTCLEQU44H;进给步数
CTCHEQU45H;最大9999步
STATEQU52H
SMOUTEQU55H
;位地址,工作标志
XPEQU02H;X轴正反转
XWEQU04H;工作标志
;
DISPEQU0DE00H;显示子程序入口
;
ORG0000H
START:AJMPMAIN
;
ORG000BH;定时器0中断服
AJMPT0INT;务程序入口
;
ORG0030H
MAIN:MOVR0,#39H ;显示缓冲区初始化
MAIN_0: MOV@R0,#0
INCR0
CJNER0,#44H,MAIN_0
MOVSTAT,#01
MOVSMOUT,#01H
MOVCTCL,#50H;150步
MOVCTCH,#01H
SETBXW
CLRXP
MOVTMOD,#01H
MOVIE,#10000010B
MOVTH0,#0ECH;10ms:EC78H
MOVTL0,#78H
SETBTR0
MAIN_1: JNBXW,MAIN_2
ACALLCONT;主程序循环
SJMPMAIN_1
MAIN_2: CLRTR0;关定时器
MAIN_3: LCALLDISP
SJMPMAIN_3
;
CONT:MOV3FH,SMOUT
LCALLDISP;控制程序
;MOVP1,SMOUT
RET
;
;定时器0中断服务程序
T0INT:MOVTH0,#0ECH
MOVTL0,#78H
PUSHACC;保护现场
PUSHPSW
PUSH01H
INCTCTER
MOVA,TCTER
CJNEA,#50,T0INTR
MOVTCTER,#0
ACALLXPD0
ACALLCOUNT
T0INTR: POP01H
POPPSW;恢复现场
POPACC
RETI
COUNT:JBXP,COUNT0
MOVA,41H;个十单元
INCA
DAA
MOV41H,A
JNZCOUNT1
CLRC
MOVA,42H;百千单元
INCA
DAA
MOV42H,A
SJMPCOUNT1
COUNT0: MOVA,41H;个十单元
ADDA,#99H
DAA
MOV41H,A
CJNEA,#99H,COUNT2
MOVA,42H;百千单元
ADDA,#99H
DAA
MOV42H,A
SJMPCOUNT2
COUNT1: MOVA,42H
XRLA,CTCH
JNZTINT0
MOVA,41H
XRLA,CTCL
JNZTINT0
SETBXP
SJMPTINT0
COUNT2: MOVA,42H
JNZTINT0
MOVA,41H
JNZTINT0
CLRXW
;
TINT0:MOVA,41H;第一拆字
ANLA,#0FH
MOV39H,A
MOVA,41H
ANLA,#0F0H
SWAPA
MOV3AH,A
MOVA,42H;第二拆字
ANLA,#0FH
MOV3BH,A
MOVA,42H
ANLA,#0F0H
SWAPA
MOV3CH,A
MOV3DH,#10H;空格
JBXP,TINT1
MOV3EH,#0AH;正转
RET
TINT1:MOV3EH,#0BH;反转
RET
;步进电机驱动处理
XPD0:MOVR1,#STAT
JBXP,XPD1
INC@R1;正转
CJNE@R1,#07H,XPD2
MOV@R1,#1
SJMPXPD2
XPD1:DEC@R1;反转
CJNE@R1,#00H,XPD2
MOV@R1,#06
XPD2:MOVA,@R1
ADDA,#2
MOVCA,@A+PC
MOVSMOUT,A
RET
SM_TAB: DB03H,01H,05H
DB04H,06H,02H