步进电机程序 点击:770 | 回复:1



美莱克

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 0回
  • 年度积分:0
  • 历史总积分:132
  • 注册:2008年3月21日
发表于:2008-04-01 10:16:00
楼主
关键词汇编                                          

步进电机控制程序如下:

     MOV P2,#0FFH

MOV R7,#00H

;R7为电机转动正反状态寄存器:为1时为正转,为2时为反转,为0时为停止

     CLR F0     ;F0为速度状态,为0慢,为1加速

     CLR P3.7   ;关七段数码显示开关,为1开,为0关

     CLR P3.4   ;同上

     MOV 30H,#00H;数码管要显示的值

     MOV 31H,#00H;第一个数码管显示的值

     MOV 32H,#00H; 第二个数码管显示的值

     clr 08h

     clr 09h;  按次数正反转状态位

MAIN:MOV A,P2;         扫描p2口按键

     CPL A

     JZ NOKEY;           没键就跳到nokey

     ACALL qudou  ;去抖动

     MOV A,P2;       再次扫描p2口看是否为真的按下

     CPL A

     JB ACC.0,KEY1

     JB ACC.1,KEY2

     JB ACC.2,KEY3

     JB ACC.3,KEY4

NOKEY:CJNE R7,#01H,nokey1

      mov dptr,#tab1

      acall fuzhi

      ajmp main

nokey1:CJNE R7,#02H,finish

       mov dptr,#tab2

       acall fuzhi

finish:AJMP MAIN

 KEY1:JNB P2.0,$     ;按键控制正转

      MOV R7,#01H

      mov r0,#0

      AJMP NOKEY

 KEY2:JNB P2.1,$     ;按键控制反转

      MOV R7,#02H

      mov r0,#0

      AJMP NOKEY

 KEY3:JNB P2.2,$      ;按键控制速度

      CPL F0

      AJMP NOKEY

 KEY4:JNB P2.3,$     ;stop按键  

  CJNE R7,#00H,KEY44;判断步进电机是否已经停止,没有就执行停止,否则就调转动次数

      Acall led71

      acall led72

      ACALL XZCS;调旋转次数

 


 KEY44:MOV R7,#00H;

      CLR F0

      AJMP MAIN

LED71:mov dptr,#tab3;      十位数数码管显示

     MOV A,31H

     MOVC A,@A+DPTR

     SETB P3.7

     MOV P0,A

     ACALL QUDOU

     CLR P3.7

     ret

led72:mov dptr,#tab3;       个位数数码管显示

     MOV A,32H

     MOVC A,@A+DPTR

     MOV P0,A

     SETB P3.4

     ACALL QUDOU

     CLR P3.4

     RET

XZCS:MOV A,P2

     CPL A

     JZ MJ;没键按下

     ACALL qudou  ;去抖动

     MOV A,P2

     CPL A

     JB ACC.0,JIAN1

     JB ACC.1,JIAN2

    




liuyinghui

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:123
  • 注册:2007年12月17日
发表于:2012-01-08 08:55:39
1楼
haodexiexie

热门招聘
相关主题

官方公众号

智造工程师