請教這個步進電機程序錯誤之處!

現在步進電機可以正轉但是不能反轉懷疑在進入反轉查表部分是的數據入口不對,沒查出來請高手指教哪里出錯,按理反轉的入口是99H啊,就是轉不起來。謝謝各位賜教,本程序大家稍微修改便可移植到其他步進電機去!


  
;******************************************************************************************************    
   ;用ST51單片機控制298芯片驅動雙步進電機轉動,實現正反轉功能。
   ; bg5sbj         2011.11.25      
   ;*******************************************************************************************************
      ORG 0000h
      ajmp  main
      org    0030h
main:
      cpl  p2.3            ;p0口指示燈總線使能,利于觀察p0口狀態
stop:
      orl p0,#0ffh       ;兩個步進電機停止工作
loop:
      jnb p3.4,for2     ;如果s2按下正轉
      jnb p3.5,rev2     ;如果s1按下反轉
      jnb p3.6,stop1   ;如果s3按下停止
      jmp loop            ;反復監測鍵盤
;====================================================
for: 
       mov r0,#00h     ;正轉到tab取碼指針初值
for1:
       mov a,r0          ;取碼
       mov dptr,#table   ;
      movc a,@a+dptr
      jz for                   ;是否到了結束碼00h
      cpl a                   ;把a反向
      mov p0,a           ;輸出到p0開始正轉
      jnb p3.6,stop1   ;如果s3按下停止
      jnb p3.5,rev2     ;如果s1按下反轉
      call delay           ;轉速調整
      inc r0                 ;取下一個碼
      jmp for1             ;繼續正轉
  rev:
       mov r0,#99h     ;反轉到tab取碼指針初值
rev1:
       mov a,r0
      mov dptr,#table  ;取碼
      movc a,@a+dptr
      jz rev                   ;是否到了結束碼00h
      cpl a                    ;把acc反向
      mov p0,a            ;輸出到p1開始反轉
      jnb p3.6,stop1    ;如果s3按下停止
      jnb p3.4,for         ;如果s2按下正轉
      call delay            ;轉動的速度
      inc r0                  ;取下一個碼
      jmp rev1             ;繼續反轉
;```````````````````````````````````````````````````````````````````
stop1:
      mov   r1,#140
       call   d1             ;按s3的消除抖動
      jnb    p3.6,$           ;s3放開否?
      call    d1            ;放開消除抖動調用延時
      jmp    stop
for2:
      mov  r1,#140
     call d1                 ;按s2的消除抖動
      jnb p3.4,$            ;s2放開否?
      call d1                 ;放開消除抖動
      jmp for
rev2:
     mov  r1,#140
      call d1                 ;按s1的消除抖動
      jnb p3.5,$           ;s1放開否?
      call d1                ;放開消除抖動
      jmp rev
;`````````````````````````````````````````````````````````````````
delay:
      mov r1,#70        ;步進電機的轉速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  ;正轉表
      db 00h    ;正轉結束
      db 88h,99h,11h,33h,22h,66h,44h,0cch  ;反轉
      db 00h    ;反轉結束
      end