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
- **********************************************************
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.
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: