??? 01/02/08 19:42 Read: times |
#148937 - 8052 help w/ my code please |
Hi everyone,
let me begin by saying that I am new to assembly programming and this web site. I have been trying to get the following program to work but I can't. I'm sure it is something simple for you .asm gurus. The problem i have seems to be in the STEPW... procedures. It is supposed to move a step motor 180 degrees then wait x amount of time and repeat depending on the state of the swicthes connected to Port 0, but it doesn't. The constant move seems to work ok. ...$INCLUDE(p8052X2.PDF) SWITCH1 EQU P0.3 ;SWITCH 1 INPUT SWITCH2 EQU P0.4 ;SWITCH 2 INPUT MODE EQU P0.5 ;MODE SWITCH INPUT DIROUT EQU P2.7 ;DIRECTION OUT TO l297 STEPOUT EQU P1.4 ;STEP OUT TO LM297 ENABLE EQU P1.1 ;ENABLE TO LM297 XTAL EQU 9600*2 TENMS EQU -24576 MAIN: JNB MODE,CONT100RPM ; JUMP IF MODE IS CONT STEPW50: JNB SWITCH1,STEPW100 JNB SWITCH2,STEPW100 LJMP STEPLOOP ;CODE HERE TO STEP CALL DELAY SJMP MAIN STEPW100: JB SWITCH2,STEPW150 JNB SWITCH1,STEPW150 lJMP STEPLOOP ;CODE HERE TO STEP CALL DELAY CALL DELAY ljmp MAIN STEPW150: JNB SWITCH1,STEPW200 JB SWITCH2,STEPW200 ljmp STEPLOOP ;CODE HERE TO STEP CALL DELAY CALL DELAY CALL DELAY ljmp MAIN STEPW200: ljmp STEPLOOP CALL DELAY CALL DELAY CALL DELAY CALL DELAY ljmp MAIN CONT100RPM: ;667 1/2 steps/sec JNB SWITCH1,CONT150RPM JNB SWITCH2,CONT150RPM setb STEPOUT ; TURN ON STEP OUTPUT PIN CALL STEPON ; LEAVE PIN ON 1uSEC clr STEPOUT ; TURN OFF STEP OUTPUT PIN ; NEED TO LEAVE PULS OFF FOR .001499 SEC C100LOOP: MOV R5,#07H ; OUTER LOOP SET TO 7 TIMES MOV R6,#00H ; INNER LOOP SET TO 256 C100LOOP4: DJNZ R6,C100LOOP4 ; LOOP 256 TIMES DJNZ R5,C100LOOP4 ; LOOP 7 TIMES ljmp MAIN CONT150RPM: ;1000 1/2 steps/sec JB SWITCH2,CONT200RPM JNB SWITCH1,CONT200RPM setb STEPOUT ; TURN ON STEP OUTPUT PIN CALL STEPON ; LEAVE PIN ON 1uSEC clr STEPOUT ; TURN OFF STEP OUTPUT PIN ; NEED TO LEAVE PULS OFF FOR .000999 SEC C150LOOP: MOV R5,#04H ; OUTER LOOP SET TO 4 TIMES MOV R6,#00H ; INNER LOOP SET TO 256 C150LOOP4: DJNZ R6,C150LOOP4 ; LOOP 256 TIMES DJNZ R5,C150LOOP4 ; LOOP 4 TIMES ljmp MAIN CONT200RPM: ;1334 1/2 steps/sec JNB SWITCH1,CONT250RPM JB SWITCH2,CONT250RPM setb STEPOUT ; TURN ON STEP OUTPUT PIN CALL STEPON ; LEAVE PIN ON 1uSEC clr STEPOUT ; TURN OFF STEP OUTPUT PIN ; NEED TO LEAVE PULS OFF FOR .000749 SEC C200LOOP: MOV R5,#03H ; OUTER LOOP SET TO 3 TIMES MOV R6,#00H ; INNER LOOP SET TO 256 C200LOOP4: DJNZ R6,C200LOOP4 ; LOOP 256 TIMES DJNZ R5,C200LOOP4 ; LOOP 3 TIMES ljmp MAIN CONT250RPM: ;1667 1/2 steps/sec setb STEPOUT ; TURN ON STEP OUTPUT PIN CALL STEPON ; LEAVE PIN ON 1uSEC clr STEPOUT ; TURN OFF STEP OUTPUT PIN ; NEED TO LEAVE PULS OFF FOR .000599 SEC C250LOOP: MOV R5,#02H ; OUTER LOOP SET TO 2 TIMES MOV R6,#00H ; INNER LOOP SET TO 256 C250LOOP4: DJNZ R6,C250LOOP4 ; LOOP 256 TIMES DJNZ R5,C250LOOP4 ; LOOP 2 TIMES ljmp MAIN ;*************************************** STEPLOOP: MOV R1,#200 ;LOOP COUNTER SET TO 200 TIMES STEPLOOPER: setb STEPOUT ; TURN ON STEP OUTPUT PIN CALL STEPON ; LEAVE PIN ON 1uSEC clr STEPOUT ; TURN OFF STEP OUTPUT PIN CALL STEPOFF DJNZ R1,STEPLOOPER ;*************************************** ;*************************************** ; .5 SEC DELAY ROUTINE DELAY: MOV R7,#0AH ;OUTER LOOP COUNTER SET TO 10 TIMES MOV R5,#236 ;INNER LOOP COUNT SET TO 236 TIMES LOOP2: MOV R6,#00H ;MIDDLE LOOP SET TO 256 TIMES LOOP1: DJNZ R5,LOOP1;LOOP 256 TIMES DJNZ R6,LOOP1;LOOP 236 TIMES DJNZ R7,LOOP2;LOOP 10 TIMES RET ;RETURN PROGRAM ;*************************************** ;*************************************** ; 1 uSEC DELAY WHILE STEP PUSE OUTPUTTED STEPON: MOV R5,#02H ;LOOP SET TO 2 TIMES LOOP3: DJNZ R5,LOOP3;LOOP 2 TIMES RET ;*************************************** ;*************************************** ; TIME OFF BETWEEN EACH STEP PULSE STEPOFF: MOV R5,#04H ; OUTER LOOP SET TO 4 TIMES MOV R6,#00H ; INNER LOOP SET TO 256 LOOP4: DJNZ R6,LOOP4 ; LOOP 256 TIMES DJNZ R5,LOOP4 ; LOOP 4 TIMES RET ;*************************************** end ... any help or suggestions are welcome Thank you, Steve |
Topic | Author | Date |
8052 help w/ my code please | 01/01/70 00:00 | |
How to program a stepper driver | 01/01/70 00:00 | |
Delay | 01/01/70 00:00 | |
this makes absolutely no sense | 01/01/70 00:00 | |
tried commenting delay | 01/01/70 00:00 | |
no offense, but THINK | 01/01/70 00:00 | |
ah | 01/01/70 00:00 | |
yes | 01/01/70 00:00 | |
What is oscillator speed? | 01/01/70 00:00 | |
osc speed | 01/01/70 00:00 | |
MEGAHENRY? | 01/01/70 00:00 | |
oops | 01/01/70 00:00 | |
Try this | 01/01/70 00:00 | |
Not the cure | 01/01/70 00:00 | |
SWITCHES | 01/01/70 00:00 | |
Was that YOUR simulator, Jon? :-) | 01/01/70 00:00 | |
Pinnacle52 | 01/01/70 00:00 | |
Found it | 01/01/70 00:00 | |
Almost there | 01/01/70 00:00 | |
any LEDs? | 01/01/70 00:00 | |
no led's | 01/01/70 00:00 | |
then use the scope as a LED... :-) | 01/01/70 00:00 | |
but not THIS nonsense! | 01/01/70 00:00 | |
good idea | 01/01/70 00:00 | |
Try it now. | 01/01/70 00:00 | |
I think, Steve meant, he will try to use the scope | 01/01/70 00:00 | |
Oh..OK | 01/01/70 00:00 | |
It works![]() | 01/01/70 00:00 |