Tiempos con el microcontrolador PIC 16F84A

Hola:

Tengo intención de hacer un mini proyecto con el 16F84A, la verdad iba a usar un reloj calendario.
¿Se puede programar un PIC que funcione a cada semana?
Es decir, que en cada semana (sólo domingos)abra unas electroválvulas para regar el jardín durante 10 minutos.

Saludos.
 
puedes crear un bucle anidado para que tarde una semana en salir de el.
si no te qieres complicar mucho puedes hacer que en el momento que resetees el micro tarde una semana (descuenta los 10 minutos de riego), en salir de el, y empezar de n
uevo.
 
Tenía en mente con retardos o Timer0, parece que dices que lo haga con retardos pero debo conectarlo en un domingo para que se active un descuento de 10 minutos regando. Lo veo un poco complejo, con un PLC no tendría problemas pero sale muy caro.
 
Tienes que tener la precaucion de no anidar mas de 8 instrucciones Call al mismo tiempo, ya que es la capacidad de la pila.
En esta rutina yo tengo anidada 5 instrucciones, por lo que si continuas con esta forma de proceder puedes crear un retardo de algunos cientos de años.

Si tu quieres un tiempo de una semana-10 minutos, entonces haces lo siguiente:

Código:
call Retardo_6dias
call Retardo_23horas
call Retardo_50min
return

Retardo_7dias   call    Retardo_1dia
Retardo_6dias   call    Retardo_1dia
Retardo_5dias   call    Retardo_1dia
Retardo_4dias   call    Retardo_1dia
Retardo_3dias   call    Retardo_1dia
Retardo_2dias   call    Retardo_1dia

Retardo_1dia   call    Retardo_1hora
Retardo_23horas   call    Retardo_1hora
Retardo_22horas   call    Retardo_1hora
Retardo_21horas   call    Retardo_1hora
Retardo_20horas   call    Retardo_1hora
Retardo_19horas   call    Retardo_1hora
Retardo_18horas   call    Retardo_1hora
Retardo_17horas   call    Retardo_1hora
Retardo_16horas   call    Retardo_1hora
Retardo_15horas   call    Retardo_1hora
Retardo_14horas   call    Retardo_1hora
Retardo_13horas   call    Retardo_1hora
Retardo_12horas   call    Retardo_1hora
Retardo_11horas   call    Retardo_1hora
Retardo_10horas   call    Retardo_1hora
Retardo_9horas   call    Retardo_1hora
Retardo_8horas   call    Retardo_1hora
Retardo_7horas   call    Retardo_1hora
Retardo_6horas   call    Retardo_1hora
Retardo_5horas   call    Retardo_1hora
Retardo_4horas   call    Retardo_1hora
Retardo_3horas   call    Retardo_1hora
Retardo_2horas   call    Retardo_1hora

Retardo_1hora   call    Retardo_5min
Retardo_55min   call    Retardo_5min
Retardo_50min   call    Retardo_5min
Retardo_45min   call    Retardo_5min
Retardo_40min   call    Retardo_5min
Retardo_35min   call    Retardo_5min
Retardo_30min   call    Retardo_5min
Retardo_25min   call    Retardo_5min
Retardo_20min   call    Retardo_5min
Retardo_15min   call    Retardo_5min
Retardo_10min   call    Retardo_5min
 
Retardo_5min    call    Retardo_20s    
Retardo_280s    call    Retardo_20s
Retardo_260s    call    Retardo_20s
Retardo_240s    call    Retardo_20s
Retardo_220s    call    Retardo_20s
Retardo_200s    call    Retardo_20s
Retardo_180s    call    Retardo_20s
Retardo_160s    call    Retardo_20s
Retardo_140s    call    Retardo_20s
Retardo_120s    call    Retardo_20s
Retardo_100s    call    Retardo_20s
Retardo_80s     call    Retardo_20s
Retardo_1min    call    Retardo_20s
Retardo_40s     call    Retardo_20s

Retardo_20s				
	movlw	d'200'			
	goto	Retardo_1Decima
;*******************************************

Retardo_1Decima
	movwf	R_ContC
			
R1Decima_BucleExterno2
	movlw	d'100'			
	movwf	R_ContB
			
R1Decima_BucleExterno
	movlw	d'249'			
	movwf	R_ContA	
	
R1Decima_BucleInterno          
	clrwdt				
	decfsz	R_ContA,F		
	goto	R1Decima_BucleInterno	
	decfsz	R_ContB,F		
	goto	R1Decima_BucleExterno	
	decfsz	R_ContC,F
	goto	R1Decima_BucleExterno2
	
        return
 
Atrás
Arriba