請(qǐng)教這個(gè)步進(jìn)電機(jī)程序錯(cuò)誤之處!

現(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