基於8255擴充套件的步進電機的控制
近期一直在搞微控制器,其實對於步進電機的控制並不是很難,但是,通過8255擴充套件埠來實現的話,就比較麻煩,因為只有A儲存器可以使用,8255已經將微控制器的地址埠都用得差不多了。簡單的說,就是通過8255擴充套件埠實現步進電機的順時針轉動,逆時針轉動,以及減速加速。理論的東西就不多說了,直接貼程式碼:
org 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV R0,#33H
MOV DPTR,#828BH ;初始化8255
MOV A,#8BH
MOVX @DPTR,A
BJ1:LCALL BJDEL
MOV DPTR,#8288H
MOV R1,A
MOV A,R0
MOVX @DPTR,A
MOV A,R1
MOV DPTR,#828AH
MOVX A,@DPTR
MOV B,A
ANL A,#7FH ;將acc.7(k7)開關初始化狀態設為低電平,即預設狀態電機是順時針轉動的
CJNE A,#00H,BJ2
LJMP BJ1
BJ2:LCALL BJPD
MOV A,B
JNB ACC.7,BJ3 ;判斷順時針、逆時針轉動
MOV A,R0
RL A
MOV R0,A
LJMP BJ1
BJ3:MOV A,R0
RR A
MOV R0,A
LJMP BJ1
BJPD:JNB ACC.6,BJPD1 ;判斷速度
MOV R5,#10
LJMP BJPDEND
BJPD1:JNB ACC.6,BJPD2
MOV R5,#15
LJMP BJPDEND
BJPD2:JNB ACC.6,BJPD3
MOV R5,#20
LJMP BJPDEND
BJPD3:JNB ACC.6,BJPD4
MOV R5,#25
LJMP BJPDEND
BJPD4:JNB ACC.6,BJPD5
MOV R5,#30
LJMP BJPDEND
BJPD5:JNB ACC.6,BJPD6
MOV R5,#35
LJMP BJPDEND
BJPD6:JNB ACC.6,BJPDEND
MOV R5,#40
LJMP BJPDEND
BJPDEND:
RET
BJDEL:MOV R6,#255 ;延時子程式
DJNZ R6,$
DJNZ R5,BJDEL
RET
END
接線情況為:8255的PA口接步進電機四項介面,PC口接邏輯電平開關,PC0·7接K0·7,8255的CS口接Y1(I/O)口,執行程式,K0~K6控制轉速,K0轉速最小,K6最大。K7則控制順逆時針。