ORG 00H
START:
MOV DPTR,#TAB1
MOV R0,#3
MOV R4,#0
MOV P2,R0
WAIT: MOV P0,#0FFH
JNB P0.0,POS ; Wait for a key pressed
JNB P0.1,NEG
MOV P2,#00H
SJMP WAIT
POS: MOV R4,#1
MOV A,R4 ; Forward direction
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
AJMP KEY
NEG: MOV R4,#7 ; Reverse direction
MOV A,R4
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
AJMP KEY
KEY: MOV P0,#03H
JB P0.0,NR1
INC R4
CJNE R4,#9,LOOPP
MOV R4,#1
LOOPP:
MOV A,R4
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
AJMP KEY
NR1:
JB P0.1,START
DEC R4
CJNE R4,#0,LOOPN
MOV R4,#8
LOOPN:
MOV A,R4
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
AJMP KEY
DELAY:
MOV R6,#1
DD1: MOV R5,#80H
DD2: MOV R7,#0
DD3: DJNZ R7,DD3
DJNZ R5,DD2
DJNZ R6,DD1
RET
; Table of Stepping Sequences
TAB1: DB 00H,02H,06H,04H
DB 0CH,08H,09H,01H,03H
END