基于控制步进电机转动的VHDl程序

 

      ORG   0000H
      LJMP  START
      ORG   0010H
START:JB    P1.0,EIGQ
      JB    P1.1,FOUQ
      JB    P1.2,EIGC
      LCALL FOUC
FOUQ:             ;;;;;;;;;;;;;;;;;;;;;;;;;4相4拍正转
      MOV   P0,#0feH  ;;;;;;;;;;;;;;;;;;;;;;;;;A相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0f7H ;;;;;;;;;;;;;;;;;;;;;;;;;D相高电平,其余为
      LCALL DELAY1
      MOV   P0,#0fdH  ;;;;;;;;;;;;;;;;;;;;;;;;;B相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0fbH  ;;;;;;;;;;;;;;;;;;;;;;;;;C相高电平,其余为零
      LCALL DELAY1
      LJMP  START ;;;;;;;;;;;;;;;;;;;;;;;;;循环
      RET
EIGQ:             ;;;;;;;;;;;;;;;;;;;;;;;;;8相8拍正转
      MOV   P0,#0feH  ;;;;;;;;;;;;;;;;;;;;;;;;;A相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0f6H  ;;;;;;;;;;;;;;;;;;;;;;;;;A,D相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0f7H  ;;;;;;;;;;;;;;;;;;;;;;;;;D相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0f5H  ;;;;;;;;;;;;;;;;;;;;;;;;;D,B相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0fdH  ;;;;;;;;;;;;;;;;;;;;;;;;;B相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0f9H  ;;;;;;;;;;;;;;;;;;;;;;;;;BC相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0fbH  ;;;;;;;;;;;;;;;;;;;;;;;;;C相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0faH  ;;;;;;;;;;;;;;;;;;;;;;;;;C,A相高电平,其余为零
      LCALL DELAY1
      LJMP  START ;;;;;;;;;;;;;;;;;;;;;;;;;循环
      RET
FOUC:             ;;;;;;;;;;;;;;;;;;;;;;;;;4相4拍反转
      MOV   P0,#0fbH  ;;;;;;;;;;;;;;;;;;;;;;;;;C相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0fdH  ;;;;;;;;;;;;;;;;;;;;;;;;;B相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0f7H  ;;;;;;;;;;;;;;;;;;;;;;;;;D相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0feH  ;;;;;;;;;;;;;;;;;;;;;;;;;A相高电平,其余为零
      LCALL DELAY1
      LJMP  START ;;;;;;;;;;;;;;;;;;;;;;;;;循环
      RET
EIGC:             ;;;;;;;;;;;;;;;;;;;;;;;;;8相8拍反转
      MOV   P0,#0fbH  ;;;;;;;;;;;;;;;;;;;;;;;;;C相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0f9H  ;;;;;;;;;;;;;;;;;;;;;;;;;CB相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0fdH  ;;;;;;;;;;;;;;;;;;;;;;;;;B相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0f5H  ;;;;;;;;;;;;;;;;;;;;;;;;;BD相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0f7H  ;;;;;;;;;;;;;;;;;;;;;;;;;D相高电平,其余为零
      LCALL DELAY1;;;;;;;;;;;;;;;;;;;;;;;;;延时
      MOV   P0,#0f6H  ;;;;;;;;;;;;;;;;;;;;;;;;;DA相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0feH  ;;;;;;;;;;;;;;;;;;;;;;;;;A相高电平,其余为零
      LCALL DELAY1
      MOV   P0,#0faH  ;;;;;;;;;;;;;;;;;;;;;;;;;AC相高电平,其余为零
      LCALL DELAY1
      LJMP  START ;;;;;;;;;;;;;;;;;;;;;;;;;循环
      RET
         
DELAY1:           ;;;;;;;;;;;;;;;;;;;;;;;;;延时子程序,延时长
      JB    P1.3,LL1
      MOV   R1,#255
L1:   MOV   R2,#150
L2:   DJNZ  R2,L2
      DJNZ  R1,L1
      RET
LL1:           ;;;;;;;;;;;;;;;;;;;;;;;;;延时子程序,延时短
      MOV   R1,#255
L3:   MOV   R2,#50
L4:   DJNZ  R2,L4
      DJNZ  R1,L3
      RET
      END

 

你可能感兴趣的:(单片机,步进电机,VHDL)