| ??? 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 |



