找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7162|回复: 3
收起左侧

步进电机的控制程序

[复制链接]
ID:8765 发表于 2009-6-29 22:23 | 显示全部楼层 |阅读模式
各位大侠,急求步进电机控制的程序,要汇编的.谢谢了!
回复

使用道具 举报

ID:14381 发表于 2009-6-30 12:53 | 显示全部楼层
我也要
回复

使用道具 举报

ID:25809 发表于 2010-8-31 15:01 | 显示全部楼层

;程序说明                                                                        
;所用RAM内存单元说明:                                                          
;  个 十  百  千  -  L/P                                                      
;P|50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |5A |5B |5C |5D |5E |5F |                
;L|60 |61 |62 |63 |64 |65 |   |   |   |   |   |   |   |   |   |   |               
; |十进制区      |LED码  |计数区(56~59  |                                      
;5A:存放当前状态(55或65);5B:存放当前闪烁段(50~53或60~63)           
;5C:计数1   5D:计数2                                                   

;按钮组:
; P3.0(左移) P3.1(右移) P3.2(加1) P3.3(减1)                             
; P3.4(状态切换) P3.5(启动/停止)                                       

;显示数码管:(6段 共阳极)  
;P0.0~P0.7(A~DP)  P2.0~P2.5(COM1~COM6)

 

;程序源码开始处:
 org 0000h
 jmp start
 org 30h
start:

;初始化数据
MOV 50H,#8H
MOV 51H,#1H
MOV 52H,#8H
MOV 53H,#0H
MOV 54H,#0BFH
MOV 55H,#47H

MOV 60H,#9H
MOV 61H,#9H
MOV 62H,#9H
MOV 63H,#9H
MOV 64H,#0BFH
MOV 65H,#0CH

MOV 5AH,#55H
MOV 5BH,#50H
MOV 5CH,#50h
MOV 5DH,#30h

;初始化电机端口
mov p1,#0ffh
mov 70h,#25
;初始化按钮端口
setb p3.0
setb p3.1
setb p3.2
setb p3.3
setb p3.4
setb p3.5

clr p2.0
clr p2.1
clr p2.2
clr p2.3
clr p2.4
clr p2.5
setb p2.6

 
;按键扫描子程
zc_key:
 key_p30:lcall zc_xs
  jb p3.0,key_p31
  lcall zc_xsys
  jb p3.0,key_p31
  mov a,5bh
  anL a,#00001111b ;取低4位
  cjne a,#3h,key_l
  jmp key_p31
  key_l:
        inc 5bh
        mov 5ch,#50
        mov 5dh,#50

 key_p31:lcall zc_xs
         jb p3.1,key_p32
  lcall zc_xsys
  jb p3.1,key_p32
  mov a,5bh
  anL a,#00001111b
  cjne a,#0h,key_r
  jmp key_p32
  key_r:
        dec 5bh
        mov 5ch,#50
        mov 5dh,#50

 key_p32:lcall zc_xs
         jb p3.2,key_p33
  lcall zc_xsys
  jb p3.2,key_p33
  mov r0,5bh
  mov a,@r0
  cjne a,#9,key_inc
  jmp key_p33
  key_inc:
         inc @r0

 key_p33:lcall zc_xs
         lcall zc_xsys
  jb p3.3,key_p34
  lcall zc_xsys
  jb p3.3,key_p34
  mov r0,5bh
  mov a,@r0
  cjne a,#0,key_dec
  jmp key_p34
  key_dec:
   dec @r0

 key_p34:lcall zc_xs
  lcall zc_xsys
  jb p3.4,key_p35
  lcall zc_xsys
  jb p3.4,key_p35
  jnb p3.4,$
  mov a,5ah
  cjne a,#55h,key_zh
  mov 5ah,#65h
  mov 5bh,#60h
  jmp key_p35
  key_zh:mov 5ah,#55h
         mov 5bh,#50h

 key_p35:lcall zc_xs  
  jb p3.5,key_ret
  lcall zc_xsys
  jb p3.5,key_ret
  jnb p3.5,$
  mov 5ah,#65h ;到根数计数状态
  mov 5bh,#60h
  mov 56h,50h
  mov 57h,51h
  mov 58h,52h
  mov 59h,53h
  lcall zc_motor
 key_ret:
  jmp key_p30

;显示扫描子程
zc_xs:
 mov dptr,#TABLE
 led_x5:
  mov r0,5ah
  setb p2.5
  mov p0,@r0
  lcall zc_ys
  clr p2.5

 led_x4:
  dec r0
  setb p2.4
  mov p0,@r0
  lcall zc_ys
  clr p2.4

 led_x3:
  dec r0
  mov a,5bh
  anl a,#00001111b
  cjne a,#3,$+9
  djnz 5ch,led_x2
  lcall zzc_dec5d
  setb p2.3
  mov a,@r0
  movc a,@a+dptr
  mov p0,a
  lcall zc_ys
  clr p2.3

 led_x2:
  dec r0
  mov a,5bh
  anl a,#00001111b
  cjne a,#2,$+9
  djnz 5ch,led_x1
  lcall zzc_dec5d
  setb p2.2
  mov a,@r0
  movc a,@a+dptr
  mov p0,a
  lcall zc_ys
  clr p2.2

 led_x1:
  dec r0
  mov a,5bh
  anl a,#00001111b
  cjne a,#1,$+9
  djnz 5ch,led_x0
  lcall zzc_dec5d
  setb p2.1
  mov a,@r0
  movc a,@a+dptr
  mov p0,a
  lcall zc_ys
  clr p2.1

 led_x0:
  dec r0
  mov a,5bh
  anl a,#00001111b
  cjne a,#0,$+9
  djnz 5ch,led_ret
  lcall zzc_dec5d
  setb p2.0
  mov a,@r0
  movc a,@a+dptr
  mov p0,a
  lcall zc_ys
  clr p2.0

 led_ret:ret

 zzc_dec5d:
  djnz 5d,der5d_ret
  mov 5ch,#50h
  mov 5dh,#30h
 der5d_ret:
  inc 5ch
  ret

;长度计数子程
zc_leng:
  mov 5ch,#1
  mov 5dh,#1
  lcall zc_xs
  mov a,56h
  jz leng_57h
  dec 56h
  ret
 leng_57h:

  mov a,57h
  jz leng_58h
  dec 57h
  mov 56h,#9
  ret
 leng_58h:

  mov a,58h
  jz leng_59h
  dec 58h
  mov 56h,#9
  mov 57h,#9
  ret
 leng_59h:

  mov a,59h
  jz leng_0
  dec 59h
  mov 56h,#9
  mov 57h,#9
  mov 58h,#9
  ret
 leng_0:
  mov p1,#0ffh
  mov 56h,50h
  mov 57h,51h
  mov 58h,52h
  mov 59h,53h
  clr p2.6
  lcall zc_root
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_root
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_root
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  lcall zc_xsys
  setb p2.6
  lcall zc_xsys
  ret
;根数计数子程
zc_root:
  lcall zc_xs
  mov a,60h
  jz root_61h
  dec 60h
  ret
 root_61h:
  lcall zc_xs
  mov a,61h
  jz root_62h
  dec 61h
  mov 60h,#9
  ret
 root_62h:
  lcall zc_xs
  mov a,62h
  jz root_63h
  dec 62h
  mov 60h,#9
  mov 61h,#9
  ret
 root_63h:
  lcall zc_xs
  mov a,63h
  jz root_0
  dec 63h
  mov 60h,#9
  mov 61h,#9
  mov 62h,#9
  ret
 root_0:
  mov p1,#0ffh
 
  ljmp zc_key

;电机运行子程
zc_motor:
 mov 5ch,#1h
 mov 5dh,#0fh

motor_r:mov r3,#00
run_1: mov dptr,#table_zz
 mov a,r3
 movc a,@a+dptr
 jz motor_r
 mov p1,a
 mov a,70h
 jz run_2
 dec 70h
run_2: lcall zc_leng
 inc r3

 jb p3.5,run_1
 lcall zc_xsys
 jb p3.5,run_1
 mov p1,#0ffh
 jnb p3.5,$  
 mov 5ch,#50h
 mov 5dh,#50h
 jmp zc_key
 
ret

;显示延时子程
zc_xsys:
 mov r3,#10
 xsys_d1:lcall zc_xs
         djnz r3,xsys_d1
  ret
;延时子程
zc_ys:
 mov a,70h
 add a,#10
 mov r7,a
 ys_d1:mov r6,#15
       djnz r6,$
       djnz r7,ys_d1
       ret
;延时子程
zc_ys2:
 mov r7,#100
 ys_d11:mov r6,#15
       djnz r6,$
       djnz r7,ys_d11
       ret
;下料延时
zc_lys:
 mov r2,#25
 lys_1: mov r4,#25
 lys_2: mov r6,#255
  djnz r6,$
 djnz r4,lys_2
 djnz r2,lys_1
 ret

;数码管数据表
TABLE:
 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
 DB 0CH,47H,0BFH
;电机正传
table_zz:
 db 3ch,69h,0c3h,96h
 db 00

end ;源程序结束

 

这是我 的自动下料机程序,写的很凌乱,不过也凑合能用

回复

使用道具 举报

ID:26193 发表于 2010-9-29 17:16 | 显示全部楼层

有时间看一下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表