专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

8255单独控制步进电机

作者:huqin   来源:本站原创   点击数:  更新时间:2014年04月30日   【字体:

 

 
;单独用8255驱动步进电机转动,A口输入控制信号00、01、11,所对应的转速越来越快,B口输出控制步进电机转动
 ;实现转速调整是通过调整延迟参数来实现的
 CODE    SEGMENT
  ASSUME CS:CODE
 
 START:  PUSH CS
  POP DS ;数据段和代码段共用一个段地址
  JMP MAIN
  DAT DW 0AFFH  ;定义延迟参数DAT
  NUM DB 08H,04H,02H,01H ;定义控制步进电机的循环信号
 
 MAIN:   MOV DX,021BH; 初始化8255,A口输入,B口输出
  MOV AL,90H
  OUT DX,AL
 
  MOV BX,OFFSET NUM;取循环信号的偏移地址
  MOV SI,0         ;控制计数器归零
 
 ;------步进电机控制信号循环-----
 LOP:    MOV DX,219H
  MOV AL,[BX+SI]
  OUT DX,AL
  INC SI
  CMP SI,04H
  JNZ NEXT
  MOV SI,0
 
 ;-------检测A口输入信号-------
 NEXT:   MOV DX,218H
  IN AL,DX
  CMP AL,00H
  JZ NEXT1     ;若信号为00,则转至NEXT1调整延迟参数DAT
  CMP AL,01H
  JZ NEXT2     ;若信号为01,则转至NEXT2调整延迟参数DAT
  CMP AL,03H
  JZ NEXT3     ;若信号为11,则转至NEXT3调整延迟参数DAT
 
  MOV CX,DAT
  LOOP $
  JMP LOP
 ;------控制信号循环结束-----
 
 NEXT1:  MOV DAT,0AFFH
  JMP LOP
 NEXT2:  MOV DAT,08FFH
  JMP LOP
 NEXT3:  MOV DAT,05FFH
  JMP LOP
 CODE    ENDS
  END START
 
 
关闭窗口

相关文章