;單獨(dú)用8255驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng),A口輸入控制信號(hào)00、01、11,所對(duì)應(yīng)的轉(zhuǎn)速越來(lái)越快,B口輸出控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)
;實(shí)現(xiàn)轉(zhuǎn)速調(diào)整是通過(guò)調(diào)整延遲參數(shù)來(lái)實(shí)現(xiàn)的
CODE SEGMENT
ASSUME CS:CODE
START: PUSH CS
POP DS ;數(shù)據(jù)段和代碼段共用一個(gè)段地址
JMP MAIN
DAT DW 0AFFH ;定義延遲參數(shù)DAT
NUM DB 08H,04H,02H,01H ;定義控制步進(jìn)電機(jī)的循環(huán)信號(hào)
MAIN: MOV DX,021BH; 初始化8255,A口輸入,B口輸出
MOV AL,90H
OUT DX,AL
MOV BX,OFFSET NUM;取循環(huán)信號(hào)的偏移地址
MOV SI,0 ;控制計(jì)數(shù)器歸零
;------步進(jìn)電機(jī)控制信號(hào)循環(huán)-----
LOP: MOV DX,219H
MOV AL,[BX+SI]
OUT DX,AL
INC SI
CMP SI,04H
JNZ NEXT
MOV SI,0
;-------檢測(cè)A口輸入信號(hào)-------
NEXT: MOV DX,218H
IN AL,DX
CMP AL,00H
JZ NEXT1 ;若信號(hào)為00,則轉(zhuǎn)至NEXT1調(diào)整延遲參數(shù)DAT
CMP AL,01H
JZ NEXT2 ;若信號(hào)為01,則轉(zhuǎn)至NEXT2調(diào)整延遲參數(shù)DAT
CMP AL,03H
JZ NEXT3 ;若信號(hào)為11,則轉(zhuǎn)至NEXT3調(diào)整延遲參數(shù)DAT
MOV CX,DAT
LOOP $
JMP LOP
;------控制信號(hào)循環(huán)結(jié)束-----
NEXT1: MOV DAT,0AFFH
JMP LOP
NEXT2: MOV DAT,08FFH
JMP LOP
NEXT3: MOV DAT,05FFH
JMP LOP
CODE ENDS
END START