Its an 8051 uController. You think its possible for you to develop any routines for me for which you are suggesting. Please help me do so cos I have until WED of the 20th. the latest. Better yet- could you design the entire code if possible and complete the two missing routines.<br>
<br>
<br>
org 0000h<br>
<br>
jmp MAIN<br>
<br>
org 0100h<br>
<br>
MAIN: CALL ROLLSTOP<br>
<br>
mov p3,#11111111b <br>
<br>
<br>
START: jb p3.0,FORWARD ;PIN 3.0 IS ON - forward<br>
<br>
jnb p3.0,REVERSE ;PIN 3.0 IS OFF - reverse<br>
<br>
jmp start <br>
<br>
FORWARD: MOV A,#98 ;WAIT 1sec TO START RUNNING<br>
<br>
CALL WAITS<br>
<br>
CALL INITFORWARD ;SET MOTOR IN FORWARD MOTION<br>
<br>
;CALL WAITS<br>
<br>
;CALL FASTROUTINE<br>
<br>
CALL WAITS<br>
<br>
CALL FORWARDSHAFT<br>
<br>
CALL WAITS<br>
<br>
CALL ROLLSTOP<br>
<br>
jmp start ; ß---clockwise<br>
<br>
<br>
;SET MOTOR IN REVERSE MOTION<br>
<br>
REVERSE: MOV A,#98 ;WAIT 1sec TO START RUNNING<br>
<br>
<br>
CALL WAITS<br>
<br>
CALL INITREV<br>
<br>
CALL WAITS<br>
<br>
CALL REVERSESHAFT<br>
<br>
CALL ROLLSTOP <br>
<br>
jmp start ; ß---counterclockwise <br>
<br>
WAITS: MOV R2, A ;FULL WAITS (SHORT) IS APPR.2 sec<br>
<br>
WAIT2: DJNZ R0,WAIT2<br>
<br>
MOV R0, #00000011B <br>
<br>
DJNZ R1, WAIT2 <br>
<br>
RET <br>
<br>
PAUSE: MOV A, #49 ;PAUSE 1/2sec AFTER MOVING <br>
<br>
CALL WAITS<br>
<br>
RET <br>
<br>
;SET FORWARD MOTION <br>
INITFORWARD: ;The unipolar stepper motor begins in motion ( Phase 1) <br>
MOV P1,#00000001B ;1<br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00000010B ;2<br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00000100B ;4<br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00001000B ;8<br>
<br>
CALL PAUSE<br>
<br>
<br>
RET <br>
<br>
;SET REVERSE MOTION <br>
INITREV: ;The unip. step. motor begins its backw. motion ( Phase 2) <br>
MOV P1,#00001000B ;8<br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00000100B ;4<br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00000010B ;2 <br>
<br>
CALL PAUSE<br>
<br>
MOV P1,#00000001B ;1<br>
<br>
CALL PAUSE<br>
<br>
RET <br>
<br>
<br>
<br>
<br>
<br>
FORWARDSHAFT: ;Turn shaft in certain positions during FORWARD movement<br>
<br>
MOV P1,#45 ;Turn it 45 degrees.<br>
<br>
CALL WAITS<br>
<br>
MOV P1,#90 ;Turn it 90 degrees.<br>
<br>
CALL WAITS<br>
<br>
MOV P1,#180 ;Turn it 180 degrees.<br>
<br>
CALL WAITS<br>
<br>
MOV P1,#270 ;Turn it 270 degrees.<br>
<br>
CALL WAITS<br>
<br>
LJMP START<br>
<br>
RET<br>
<br>
REVERSESHAFT: ;Turn shaft in certain positions during REVERSE movement<br>
<br>
MOV P1,#10EH ;Turn it -270 degrees<br>
<br>
CALL WAITS<br>
<br>
MOV P1,#0B4H ;Turn it -180 degrees<br>
<br>
CALL WAITS<br>
<br>
MOV P1,#5AH ;Turn it -90 degrees<br>
<br>
CALL WAITS <br>
<br>
MOV P1,#2DH ;Turn it -45 degrees<br>
<br>
CALL WAITS<br>
<br>
LJMP START<br>
<br>
RET<br>
<br>
<br>
<br>
<br>
<br>
;FASTROUTINE: ;Maximum speed to the UNIPOLAR STEPPER<br>
<br>
ORG 8100H ;Begins my origin<br>
<br>
MOV TMOD, #02H ;8-bit auto/reload<br>
<br>
MOV TH0, #-12 ;-12 reload<br>
<br>
SETB P1.0 ;Set P1.0 high<br>
<br>
SETB TR0 ;Start timer<br>
<br>
LOOP: JNB TF0, LOOP ;Wait Overflow<br>
<br>
CLR TR0 ;Stop timer<br>
<br>
CLR TF0 ;Clear overflow<br>
<br>
CPL P1.0 ;Toggle Port bit<br>
<br>
MOV P1,#00000001B ;1<br>
<br>
<br>
MOV P1,#00000010B ;2<br>
<br>
<br>
MOV P1,#00000100B ;4<br>
<br>
<br>
MOV P1,#00001000B ;8<br>
<br>
<br>
RET<br>
<br>
SJMP LOOP<br>
<br>
<br>
<br>
<br>
;SLOWROUTINE: ;Minimum speed to the UNIPOLAR STEPPER<br>
<br>
<br>
<br>
<br>
ROLLSTOP: MOV P1,#00000000B ;TURN OFF MOTOR <br>
RET <br>
END <br>
<br>
<br>
<br>
<br>