XXXXXXXXXXX
程序流程图如下所示:
在单片机内部RAM的20H和21H单元中有四位十六进制数(20H中为高两位),以下是将其自左到右显示出来的程序。
程序代码如下: ORG 2000H
SDIAPLAY:MOV A,20H ;20H中数送A ANL A,#0F0H ;截取高4位 MOV P1,A ;送1#MC14495 MOV A,20H ;20H中数送A SWAP A ;低4位送高4位 ANL A,#0F0H ;去掉低4位
INC A ;A1A0指向2#MC14495 MOV P1,A ;送2#MC14495 MOV A,21H ;21H中数送A
17
XXXXXXXXXXX
ANL A,#0F0H ;截取高4位
ADD A,#02H ;A1A0指向3#MC14495 MOV P1,A ;送3#MC14495 MOV A,21H ;21H中数送A SWAP A ;低4位送高4位 ANL A,#0F0H ADD A,#03 MOV P1,A RET
4.5 步进电机控制程序
程序代码如下:
ORG 2100H
PUSH ACC MOV R4,#N CLR C ORL C,PSW.5 JC ROTE MOV R0,#20H AJMP NEXT ROTE:MOV R0,#27H NEXT:MOV A,@R0 MOV P1,A ;去掉低4位
;A1A0指向4#MC14495 ;送4#MC14495 ;保护现场
;步进马达步进数送R4 ;Cy清零
;转向标志状态送Cy ;若为反转,则转ROTE ;正转模型始址送R0 ; 转入NEXT
;反转模型始址送R0 ;输出控制模型的值 ;输出控制脉冲
18
XXXXXXXXXXX
ACALL DELAY ;延时(形成脉宽) INC R0 ;准备下个模型指针 MOV A,#00H ;判断送完一遍模型值 ORL A,@R0
JZ TPL ;若模型结束,则TPL LOOP:DJNZ R4,NEXT ;若步进数未走完,则NEXT POP ACC ;恢复现场 RET :返回 TPL:MOV A,R0 CLR C
SUBB A,#06H
MOV R0,A ;恢复模型始址 AJMP LOOP ;判断步进马达步数走完? DELAY:MOV R2,#M1 ;延时 DELAY1:MOV R2,#M2 DELAY2:DEC A JNZ DELAY2
DJNZ R2,DELAY1 RET END
上述控制程序是利用程序延时来控制电机的通电时间(即形成控制脉冲)以达到正转、反转、启动和停止的。这种控制的缺点是CPU因执行延时程序而降低了效率。为了提高CPU的使用效率,常常也可采用单片机内部定时/计数器编
19
XXXXXXXXXXX
制上述程序。
总 结
随着毕业设计的结束,我的大学生涯也将随之要划上一个句号了。 在设计的这段日子里,又学到了很多东西,突然觉得自己做什么事情都特别的认真了起来,也许是以前从未认真做过一件事吧。每天守着一大堆资料,随时还要上网查询,有时为了查一个数据就要耗去近一个小时的时间,证实了却又感到莫名地兴奋与愉悦。整个设计过程都是那么的紧张、严紧。
20
相关推荐: