基於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則控制順逆時針。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章