現(xiàn)在步進(jìn)電機(jī)可以正轉(zhuǎn)但是不能反轉(zhuǎn)懷疑在進(jìn)入反轉(zhuǎn)查表部分是的數(shù)據(jù)入口不對(duì),沒查出來請(qǐng)高手指教哪里出錯(cuò),按理反轉(zhuǎn)的入口是99H啊,就是轉(zhuǎn)不起來。謝謝各位賜教,本程序大家稍微修改便可移植到其他步進(jìn)電機(jī)去!
;******************************************************************************************************
;用ST51單片機(jī)控制298芯片驅(qū)動(dòng)雙步進(jìn)電機(jī)轉(zhuǎn)動(dòng),實(shí)現(xiàn)正反轉(zhuǎn)功能。
; bg5sbj 2011.11.25
;*******************************************************************************************************
ORG 0000h
ajmp main
org 0030h
main:
cpl p2.3 ;p0口指示燈總線使能,利于觀察p0口狀態(tài)
stop:
orl p0,#0ffh ;兩個(gè)步進(jìn)電機(jī)停止工作
loop:
jnb p3.4,for2 ;如果s2按下正轉(zhuǎn)
jnb p3.5,rev2 ;如果s1按下反轉(zhuǎn)
jnb p3.6,stop1 ;如果s3按下停止
jmp loop ;反復(fù)監(jiān)測(cè)鍵盤
;====================================================
for:
mov r0,#00h ;正轉(zhuǎn)到tab取碼指針初值
for1:
mov a,r0 ;取碼
mov dptr,#table ;
movc a,@a+dptr
jz for ;是否到了結(jié)束碼00h
cpl a ;把a(bǔ)反向
mov p0,a ;輸出到p0開始正轉(zhuǎn)
jnb p3.6,stop1 ;如果s3按下停止
jnb p3.5,rev2 ;如果s1按下反轉(zhuǎn)
call delay ;轉(zhuǎn)速調(diào)整
inc r0 ;取下一個(gè)碼
jmp for1 ;繼續(xù)正轉(zhuǎn)
rev:
mov r0,#99h ;反轉(zhuǎn)到tab取碼指針初值
rev1:
mov a,r0
mov dptr,#table ;取碼
movc a,@a+dptr
jz rev ;是否到了結(jié)束碼00h
cpl a ;把a(bǔ)cc反向
mov p0,a ;輸出到p1開始反轉(zhuǎn)
jnb p3.6,stop1 ;如果s3按下停止
jnb p3.4,for ;如果s2按下正轉(zhuǎn)
call delay ;轉(zhuǎn)動(dòng)的速度
inc r0 ;取下一個(gè)碼
jmp rev1 ;繼續(xù)反轉(zhuǎn)
;```````````````````````````````````````````````````````````````````
stop1:
mov r1,#140
call d1 ;按s3的消除抖動(dòng)
jnb p3.6,$ ;s3放開否?
call d1 ;放開消除抖動(dòng)調(diào)用延時(shí)
jmp stop
for2:
mov r1,#140
call d1 ;按s2的消除抖動(dòng)
jnb p3.4,$ ;s2放開否?
call d1 ;放開消除抖動(dòng)
jmp for
rev2:
mov r1,#140
call d1 ;按s1的消除抖動(dòng)
jnb p3.5,$ ;s1放開否?
call d1 ;放開消除抖動(dòng)
jmp rev
;`````````````````````````````````````````````````````````````````
delay:
mov r1,#70 ;步進(jìn)電機(jī)的轉(zhuǎn)速20 ms 12M 晶體
d1:
mov r2,#40 ;;0.500ms X 40 = 20 ms
djnz r2,$
djnz r1,d1
ret
;***************************************************************
table:
db 88h,0cch,44h,66h,22h,33h,11h,99h ;正轉(zhuǎn)表
db 00h ;正轉(zhuǎn)結(jié)束
db 88h,99h,11h,33h,22h,66h,44h,0cch ;反轉(zhuǎn)
db 00h ;反轉(zhuǎn)結(jié)束
end