跳舞机器人的实现源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

跳舞机器人的实现源程序

一个典型的A型电机的加速过程amotor.asm程序清单:

;该程序用来驱动A型电机左右各转120度

DRIVE: MOV 81H,#40H ;避免堆栈指针的影响,81H为SP的物理地址ACALL INIT ;调用初始化子程序

MOV D PTR,#004FH ;DPTR指向数据表

MOV R0,05H ;开始为向右转,05H为R5的物理地址TURN: CLR A

MOVC A,@A+DPTR ;取脉冲数

MOV R3,A ;R3存每阶段的脉冲数

STEP: MOV A,#0FH

MOVC A,@A+DPTR ;取该阶段的延时数

MOV R4,A ;延时数存R4中

CJNE @R0,#00H,NEXT ;状态字指针R0到尽头

MOV R0,05H ;指针复位

NEXT: MOV 80H,@R0 ;输出脉冲,89H为P2口的物理地址

MOV 90H,@R0

MOV 0A0H,@R0

MOV 0B0H,@R0

INC R0 ;指针下移

ACALL DELAY ;延时

DJNZ R3,STEP ;该阶段循环

INC D PTR

DJNZ R2,TURN ;执行下一阶段

DEC R6

MOV A,R6

JZ STOP ;总步数结束

MOV R7,#40

REST: MOV R4,#0FFH ;正转120度,休息

ACALL DELAY

DJNZ R7,REST

MOV R2,#0FH ;加速阶段数复位

MOV D PTR,#004FH ;DPTR复位

CJNE R5,#20H,RIGHT ;R5存正反状态字

LEFT: MOV R5,#25H

MOV R0,05H

SJMP TURN

RIGHT: MOV R5,#20H

MOV R0,05H

SJMP TURN

STOP: SJMP STOP ;停机

;

ORG 004FH

PULETAB: D B 9,10,11,12,14,15,16,17

DB 18,19,108,108,108,108,108

TIMETAB: D B 55,50,45,42,36,33,31,29

DB 27,26,24,24,24,24,24

DELAY1: MOV 08H,#34 ;DELAY1为延时0.1MS的标准子程序

LOOP1: NOP

DJNZ 08H,LOOP1

RET

DELAY: ACALL DELAY1

DJNZ R4,DELAY

RET

INIT: MOV 20H,#33H ;INIT为初始化子程序

MOV 21H,#66H

MOV 22H,#0CCH

MOV 23H,#99H

MOV 24H,#00H ;20H――24H存右转状态字

MOV 25H,#33H

MOV 26H,#99H

MOV 27H,#0CCH

MOV 28H,#66H

MOV 29H,#00H ;25H—29H存左转状态字

MOV R5,#20H ;R5暂存状态地址

MOV R6,#14H ;前进10大步

MOV R2,#0FH ;阶段数

RET

END

以上就是一个典型的电机加速驱动过程,其主要的思想是:通过有规律的变化的延时程序来控制送往步进电机的脉冲的快慢,从而使电机得到逐渐加快的脉冲激励,稳定的实现加速过程,而不会出现因为脉冲的陡然加快而抖动的现象。

完整的机器人舞蹈动作程序比这段程序复杂的多,要牵涉到多个电机的协调动作以及舞动动作的配合与连贯,其中主要的是DRIVE子程序,限于篇幅,在此不能一一列出,完整的驱动程序可与笔者联系。(email:yytao008.student@)

相关文档
最新文档