Agregar pausa o retardo entre giros de un motor pap bipolar

#1
Hola quisiera que me ayudaran a agregar un retardo una pausa entre el giroizquierda y el giroderecha ,,, de 20 segundos
para que se detengan en el giro a la izquierda por 20 segundos y empiece el giroderecha. -----
Lo que quiero hacer es un puente levadizo automatizado y programado con un PIC16F84A y un L293D
EL L293D no lo venden en mi ciudad como lo cambiaría L293B
Código:
;************************ MotorPAP deJeus EduardoFloresFerrer**********************
; El motor PAP realiza dos vueltas en un sentido y dos en sentido contrario utilizando medios
; pasos (modo Half Step) para obtener mas precisión.
;
; ZONA DE DATOS ************************************************** ********************

LIST     P=16F84A
INCLUDE     <P16F84A.INC>
__CONFIG    _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
Ciclos     ; Se decrementará cada ciclo de 8 pasos.
VueltasHorario
VueltasAntihorario
ENDC

NUM_CICLOS    EQU    .12 [CENTER]; Unciclo de 8 pasos son 30 grados para unPAP
; de 7,5º en modo Half-Step. Por tanto para
; completar una vuelta de 360º,se requieren12
; ciclos de 8 pasos cada uno.[/CENTER]
;ZONADECÓDIGOS************************************ ********************************

ORG 0
Inicio
bsf     STATUS,RP0
clrf     PORTB     ; Las líneas del Puerto B configuradas como salidas.
bcf     STATUS,RP0
Principal    
movlw    0x02     [CENTER]; Dos vueltas en sentido horario.[/CENTER]
movwf    VueltasHorario 
OtraVueltaDerecha
movlw    NUM_CICLOS
movwf    Ciclos
OtroCicloDerecha
call     GiroDerecha
decfsz    Ciclos,F
goto     OtroCicloDerecha
decfsz    VueltasHorario,F
goto     OtraVueltaDerecha
;
movlw    0x02
movwf    VueltasAntihorario     [CENTER]; Una vuelta en sentido antihorario.[/CENTER]
OtraVueltaIzquierda    [CENTER] ; Al ser una sola vuelta no haría falta el contador.[/CENTER]
movlw    NUM_CICLOS    [CENTER] ; Pero se deja para que el lector pueda hacer las[/CENTER]
movwf    Ciclos     [CENTER]; pruebas que crea oportunas cambiando la carga[/CENTER]
OtroCicloIzquierda    [CENTER] ; (VueltaAntihorario).[/CENTER]
call     GiroIzquierda
decfsz    Ciclos,F
goto     OtroCicloIzquierda
decfsz    VueltasAntihorario,F
goto     OtraVueltaIzquierda
goto     Principal

; Subrutina "GiroIzquierda" -------------------------------------------------------------

GiroIzquierda
movlw    b'00110001'     ; Primer paso.
call     ActivaSalida
movlw    b'00110101'     ; Segundo paso.
call     ActivaSalida
movlw    b'00110100'     ; Tercer paso.
call     ActivaSalida
movlw    b'00110110'     ; Cuarto paso.
call     ActivaSalida
movlw    b'00110010'     ; Quinto paso.
call     ActivaSalida
movlw    b'00111010'     ; Sexto paso.
call     ActivaSalida
movlw    b'00111000'     ; Séptimo paso.
call     ActivaSalida
movlw    b'00111001'     ; Octavo y último paso.
call ActivaSalida
return
****************************************
AQUI QUIERO HACER LA PAUSA DE 20 SEGUNDOS 
****************************************

; Subrutina "GiroDerecha" -------------------------------------------------------------

GiroDerecha
movlw    b'00111001'     ; Primer paso para el giro hacia la derecha.
call     ActivaSalida
movlw    b'00111000'     ; Segundo paso.
call     ActivaSalida
movlw    b'00111010'     ; Tercer paso.
call     ActivaSalida
movlw    b'00110010'     ; Cuarto paso.
call     ActivaSalida
movlw    b'00110110'     ; Quinto paso.
call     ActivaSalida
movlw    b'00110100'     ; Sexto paso.
call     ActivaSalida
movlw    b'00110101'     ; Séptimo paso.
call     ActivaSalida
movlw    b'00110001'     ; Octavo y último paso.
call     ActivaSalida
return 

; Subrutina "ActivaSalida" --------------------------------------------------------------

ActivaSalida
movwf    PORTB
call    Retardo_50ms     ; [CENTER]Temporización antes del siguiente paso[/CENTER]
.
return
ActivaSalida2
movwf    PORTB
call    Retardo_20s     ;[CENTER] Temporización antes del siguiente paso[/CENTER]
.
return
INCLUDE <RETARDOS.INC>
END
;    ================================================== =================
; Jesus Eduardo Flores Ferrer
; 
;    ================================================== =================
- **********************************************************
El programa me ayudo a desarrollarlo un profesor amigo mio,
pero cuando lo corro en proteus, se traba cada 20 segundos entre paso y paso en el giroderecha.
Adjunto la conexión de proteus.. ----- soy un Newbie---
Interesado en aprender, no quiero que me solucionen mis problemas,
quiero que me ayuden a entender que sale mal y como se arregla, para entenderlo yo.
 

Adjuntos

Última edición por un moderador:
Arriba