;单独用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