新闻  |   论坛  |   博客  |   在线研讨会
步进电机控制程序
tvb2058 | 2007-09-14 15:21:37    阅读:27324   发布文章

步进电机控制程序p3.3正转,p3.4反转,p3.5停止 12M 晶体步进电机接p1.0-1.3

      ;步进电机控制程序p3.2正转,p3.3反转,p3.4停止 12M 晶体 步进电机接

实验成功    p1.0p1.1p1.2p1.3
      ORG 00h

 stop:
      orl p1,#0ffh   ;
步进电机停止

 loop:jnb p3.2,for2   ;如果p3.2按下正转
      jnb p3.3,rev2   ;如果p3.3按下反转
      jnb p3.4,stop1   ;如果p3.4按下停止
      jmp loop    ;反复监测键盘

 for: mov r0,#00h   ;正转到tab取码指针初值
 for1:mov a,r0    ;取码
      mov dptr,#table   ;
      movc a,@a+dptr
      jz for    ;
是否到了结束码00h
      cpl a    ;
acc反向
      mov p1,a    ;输出到p1开始正转
      jnb p3.4,stop1   ;如果p3.4按下停止
      jnb p3.3,rev2   ;如果p3.3按下反转
      call delay   ;转动的速度
      inc r0    ;取下一个码
      jmp for1    ;继续正转

  rev:mov r0,#05h   ;反转到tab取码指针初值
 rev1:mov a,r0
      mov dptr,#table           ;
取码
      movc a,@a+dptr
      jz rev    ;
是否到了结束码00h
      cpl a    ;
acc反向
      mov p1,a    ;输出到p1开始反转
      jnb p3.4,stop1   ;如果p3.4按下停止
      jnb p3.3,rev2   ;如果p3.3按下反转
      call delay   ;转动的速度
      inc r0    ;取下一个码
      jmp rev1    ;继续反转

stop1:call delay   ;p3.4的消除抖动
      jnb p3.4,$   ;p3.4放开否?
      call delay   ;
放开消除抖动
      jmp stop

 for2:call delay  ;p3.2的消除抖动
      jnb p3.2,$  ;p3.2放开否?
      call delay  ;
放开消除抖动
      jmp for

 rev2:call delay  ;p3.3的消除抖动
      jnb p3.3,$ ;p3.3放开否?
      call delay  ;
放开消除抖动
      jmp rev

delay:mov r1,#40  ;步进电机的转速20 ms 12M 晶体
   d1:mov r2,#248 ;;0.500ms X 40 = 20 ms
      djnz r2,$
      djnz r1,d1
      ret
table:
      db 03h,09h,0ch,06h  ;
正转表0011 1001 1100 0110
      db 00    ;
正转结束
      db 03h,06h,0ch,09h  ;反转
      db 00    ;反转结束
      end

 

参与讨论
登录后参与讨论
[ 匿名]  2008-10-24 16:19:31 

1312

[ 匿名]  2008-09-16 11:16:18 

老兄 你的错误很多啊 还什么通过调试啊 程序和原理图对不号

[ 匿名]  2008-05-23 16:32:07 

不错,思路很清晰,逻辑很正确。

;‘;’‘ [ 匿名]  2008-05-06 18:19:55 

。。。。

推荐文章
最近访客