寫了個(gè)步進(jìn)電機(jī)小程序, 不知道哪里出問題了,請(qǐng)教各位大神。
說(shuō)明: P0.0正轉(zhuǎn)按鍵, P0.1反轉(zhuǎn)按鍵。 步進(jìn)電機(jī)接P1引腳的高4位。
癥狀: 當(dāng)按下反轉(zhuǎn)鍵時(shí), 電機(jī)正常反轉(zhuǎn), 但是如果按下正轉(zhuǎn), 電機(jī)內(nèi)部在運(yùn)行,但是不轉(zhuǎn),可以感覺到震動(dòng)。
于是就把P1的高4位連接到LED上看脈沖時(shí)序。
結(jié)果發(fā)現(xiàn), 當(dāng)按下反轉(zhuǎn)時(shí), 電機(jī)是按照P2.7-P2.6-P2.5-P2.4 -P2.7-P2.6-P2.5-P2.4.......這樣的順序發(fā)出脈沖,電機(jī)是正常在反轉(zhuǎn)。
但是按下正轉(zhuǎn)鍵時(shí), 電機(jī)是按照P2.7-P2.6-P2.5-P2.4-P2.5-P2.6-P2.7-P2.6-P2.5-P2.4-P2.5..........是迂回的順序,所以電機(jī)雖然震動(dòng),內(nèi)部轉(zhuǎn)自在轉(zhuǎn),卻是幾步在往復(fù)運(yùn)動(dòng),所以不轉(zhuǎn)。
請(qǐng)各位看看, 我哪里寫錯(cuò)了。謝謝了。
ORG 0000H
LJMP START
ORG 0100H
START: MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
MOV P0,#00H
MOV P1,#00H
SCAN: MOV P0,#03H
JNB P0.0, ZZ
JNB P0.1, FZ
SJMP SCAN
ZZ: MOV R2,#00H
LOOP1: MOV A,R2
MOV DPTR,#TAB1
MOVC A,@A+DPTR
JZ ZZ
MOV P1,A
LCALL DELAY
INC R2
LCALL SCN
LJMP LOOP1
FZ: MOV R2,#00H
LOOP2: MOV A,R2
MOV DPTR,#TAB2
MOVC A,@A+DPTR
JZ FZ
MOV P1,A
LCALL DELAY
INC R2
LCALL SCN
LJMP LOOP2
SCN: JNB P0.0,LOOP1
JNB P0.1,LOOP2
RET
DELAY: MOV R3,#60H
M1: MOV R4,#60H
DJNZ R4,$
DJNZ R3,M1
RET
TAB1: DB 80H,40H,20H,10H
TAB2: DB 10H,20H,40H,80H
END
|