Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




retardos con 16f84a


       



#1  retardos con 16f84a
rayko

Registrado: 20 Mar 2008
Mensajes: 33
Ubicación: españa
citar
hola a todos:
estoy intentando crear amplios retardos con el 16f84 pero no se como hacerlo ,quisiera hacer retardos desde 20segundos hasta varios minutos,a ver si me podeis decir como hacerlo o si me mandais alguna programacion de ejemplo.
Saludos a todos.

#2  
ELIUSM

Registrado: 18 Jul 2007
Mensajes: 131
Ubicación: Chile
citar
Holaa! En este Link hay un programa que hace códigos de programación de retardo en assembler. Tu le pones la frecuencia de tu oscilador y el tiempo que quieres y el programa te hace el código.

El Link a ese programa:
http://www.pablin.com.ar/electron/download/picdel.zip

Otra recomendación inportante para tu caso: trata de usar la menor frecuencia de oscilación que puedas, ojalá kHz o menos, para que no tengas que hacer taaaaaaantos ciclos de demora llenando la memoria de programación del PIC.
Suerte!

#3  rutina de retardos
pepechip
Colaborador
Registrado: 09 Feb 2007
Mensajes: 1346
Ubicación: Granada- España
citar
hola

talvez con esta rutina comprendas como funcionan los retardos

Código: Seleccionar todo
         
;******************************************************************************
;************************   Librería "RETARDOS.INC"    ************************
;******************************************************************************

; ZONA DE DATOS **************************************************************

   CBLOCK
   R_ContA            ; Contadores para los retardos.
   R_ContB
   R_ContC
   ENDC

;******************************************************************************
;   RETARDOS de 4 hasta 10 microsegundos   ************************************
;******************************************************************************

Retardo_10micros            
   nop            
   nop            
   nop            
   nop            
   nop
            
Retardo_5micros            
   nop
      
Retardo_4micros            
   return   
         
;******************************************************************************
;   RETARDOS de 20 hasta 500 microsegundos   **********************************
;******************************************************************************

Retardo_500micros            
   nop            
   movlw   d'164'         
   goto   RetardoMicros
      
Retardo_200micros            
   nop            
   movlw   d'64'         
   goto   RetardoMicros
      
Retardo_100micros            
   movlw   d'31'         
   goto   RetardoMicros
      
Retardo_50micros            
   nop            
   movlw   d'14'         
   goto   RetardoMicros
      
Retardo_20micros            
        movlw   d'5'
;*******************************************

RetardoMicros
   movwf   R_ContA   
      
Rmicros_Bucle
   decfsz   R_ContA,F      
   goto   Rmicros_Bucle      
                return
;******************************************************************************
;   RETARDOS de 1 ms hasta 200 ms *********************************************
;******************************************************************************


Retardo_200ms         
   movlw   d'200'   
   goto   Retardos_ms
      
Retardo_100ms            
   movlw   d'100'      
   goto   Retardos_ms
      
Retardo_50ms         
   movlw   d'50'         
   goto   Retardos_ms
      
Retardo_20ms            
   movlw   d'20'         
   goto   Retardos_ms
      
Retardo_10ms            
   movlw   d'10'         
   goto   Retardos_ms
      
Retardo_5ms            
   movlw   d'5'   
   goto   Retardos_ms
      
Retardo_2ms            
   movlw   d'2'         
   goto   Retardos_ms
   
Retardo_1ms            
   movlw   d'1'         
;*******************************************
Retardos_ms
   movwf   R_ContB   
      
R1ms_BucleExterno
   movlw   d'249'         
   movwf   R_ContA
      
R1ms_BucleInterno
   nop            
   decfsz   R_ContA,F      
   goto   R1ms_BucleInterno   
   decfsz   R_ContB,F      
   goto   R1ms_BucleExterno    
   return            

;******************************************************************************
;  RETARDOS de 0.5 hasta 20 segundos   ****************************************
;******************************************************************************


Retardo_20s            
   movlw   d'200'         
   goto   Retardo_1Decima

Retardo_10s            
   movlw   d'100'         
   goto   Retardo_1Decima
      
Retardo_5s            
   movlw   d'50'         
   goto   Retardo_1Decima

Retardo_2s            
   movlw   d'20'         
   goto   Retardo_1Decima   
   
Retardo_1s            
   movlw   d'10'         
   goto   Retardo_1Decima   
   
Retardo_500ms      
   movlw   d'5'         
;*******************************************
Retardo_1Decima
   movwf   R_ContC
         
R1Decima_BucleExterno2
   movlw   d'100'         
   movwf   R_ContB
         
R1Decima_BucleExterno
   movlw   d'249'         
   movwf   R_ContA   
   
R1Decima_BucleInterno         
   nop            
   decfsz   R_ContA,F      
   goto   R1Decima_BucleInterno   
   decfsz   R_ContB,F      
   goto   R1Decima_BucleExterno   
   decfsz   R_ContC,F
   goto   R1Decima_BucleExterno2   
                return
END



#4  
Meta

Registrado: 20 Ene 2008
Mensajes: 701
Ubicación: 16F84A
citar
Es mejor que pruebes esta web para calcular retardos a tu medida.

http://www.piclist.com/cgi-bin/delay.exe

#5  
pic-man

Registrado: 04 Ene 2007
Mensajes: 216
Ubicación: México
citar
También puedes calcular tus propios retardos, en esta página explico como Retardos por software. Ahi veras como funcionan los retardos para que puedas generar tus propios retardos a tu medida.

#6  
rayko

Registrado: 20 Mar 2008
Mensajes: 33
Ubicación: españa
citar
hola de nuevo
antes de nada gracias por contestarme ,me han sido de ayuda las respuestas.
he conseguido elaborar este programa ,pero no me funciona ,se enciende el led pero no apaga nunca ,aqui os lo dejo para ver si me decis algo .saludos.


; El LED conectado a la línea 0 del puerto de salida se enciende durante 20s y se
; apaga durante 20s.
;
; ZONA DE DATOS **********************************************************************

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

CBLOCK 0x0C ; En esta posición empieza la RAM de usuari
R_ContA ; Contadores para los retardos.
R_ContB
R_ContC
Retardo_20s
ENDC

#DEFINE LED PORTB,0

; ZONA DE CÓDIGOS *******************************************************************

ORG 0
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
bcf LED ; Línea del LED configurada como salida.
bcf STATUS,RP0 ; Acceso al Banco 0.
Principal
bsf LED ; Enciende el LED
call Retardo_20s ; durante la suma de este tiempo.

bcf LED ; Lo apaga durante la suma de los siguientes
call Retardo_20s ; retardos.

goto Principal
END;
**********************************************************************************************
Retardo_20s ; La llamada "call" aporta 2 ciclos máquina.
movlw d'200' ; Aporta 1 ciclo máquina. Este es el valor de "N".
goto Retardo_1Decima ; Aporta 2 ciclos máquina.

Retardo_1Decima
movwf R_ContC ; Aporta 1 ciclo máquina.
R1Decima_BucleExterno2
movlw d'100' ; Aporta Nx1 ciclos máquina. Este es el valor de "M".
movwf R_ContB ; Aporta Nx1 ciclos máquina.
R1Decima_BucleExterno
movlw d'249' ; Aporta MxNx1 ciclos máquina. Este es el valor de "K".
movwf R_ContA ; Aporta MxNx1 ciclos máquina.
R1Decima_BucleInterno
nop ; Aporta KxMxNx1 ciclos máquina.
decfsz R_ContA,F ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar).
goto R1Decima_BucleInterno ; Aporta (K-1)xMxNx2 ciclos máquina.
decfsz R_ContB,F ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar).
goto R1Decima_BucleExterno ; Aporta (M-1)xNx2 ciclos máquina.
decfsz R_ContC,F ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar).
goto R1Decima_BucleExterno2 ; Aporta (N-1)x2 ciclos máquina.
return ; El salto del retorno aporta 2 ciclos maquina

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Circuito astable con periodo de 30 minutos.
No hay mensajes nuevos Necesito un circuito que mande pulsos cada 10 minutos
No hay mensajes nuevos Cuenta descendente horas, minutos y segundos.
No hay mensajes nuevos Contador de Minutos Llamadas Salientes Teléfono Convencional
No hay mensajes nuevos Circuito para activar motor por 2 minutos con pushbuton

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||