Crolec
Te envio algo semejante para el uso de tu sistema de riego.
En este caso he usado un pic 16f84a y un led, en la cual prende durante 1 minuto y se apaga durante 1 minuto. Podrias hacer en tu caso prender durante 5 minutos (duracion de riego) y se apague durante 23 horas y 55 minutos.
Te envio el archivo *.asm con su rutina *.inc y un archivo de simulacion en el proteus.
En el caso principal, el archivo *.asm llama a la rutina *.inc, ya sea para segundo, minutos u horas.
Cabe mensionar que el archivo *.inc me lo dio un anonimo (un amigo le dio a otro y este a su vez le dio a otro..... hasta que llego a mi) y funciona bien, a ese archivo adicione la rutina de minutos y horas.
(No se pudo subir a la web)
__________________________________________________________
;***************************
; Sistema de Riego
;***************************
list p=16f84a
include <p16f84a.inc>
cblock 0x0C
endc
org 0
#define LED PORTA,0
Inicio
bsf STATUS,RP0 ; acceso al banco 1
movlw b"11111111" ; las lineas del puerto B se configuran como entradas
movwf PORTB
clrf PORTA ; las lineas del puerto A se configuran como salidas
bcf STATUS,RP0 ; acceso al banco 0
clrf PORTA ; limpia todas las salidas antes de empezar
Tiemp01
bsf LED
movlw .1
call ret_min
bcf LED
movlw .1
call ret_min
goto Tiemp01
include <ret4m.inc>
end
__________________________________________________________
cblock
R_AUX1
R_AUX2
R_AUX3
R_AUX4
R_AUX5
R_AUX6
R_AUX10
R_AUX11
endc
;************************************************************
;ret_ms - RUTINA DE RETARDO EN ms PARA UN CRISTAL DE 4 MHz
;EL NUMERO DE ms A RETARDAR VIENE ALMACENADO EN W Y DEBE ESTAR
;COMPRENDIDO ENTRE 1 Y 255
;************************************************************
ret_ms movwf R_AUX3
ESPERA call DELAY
decfsz R_AUX3,F
goto ESPERA
return
;*********************************
;RUTINA AUXILIAR DE ret_ms
;*********************************
DELAY movlw .4
movwf R_AUX2
ESPERA_MS MOVLW .243
MOVWF R_AUX1
BCF STATUS,C
RRF R_AUX1,F
BCF STATUS,C
RRF R_AUX1,F
ESPERA_US NOP
DECFSZ R_AUX1,F
GOTO ESPERA_US
DECFSZ R_AUX2,F
GOTO ESPERA_MS
RETURN
;************************************************************
;ret_seg- RUTINA DE RETARDO EN seg PARA UN CRISTAL DE 4 MHz
;EL NUMERO DE seg A RETARDAR VIENE ALMACENADO EN W Y DEBE ESTAR
;COMPRENDIDO ENTRE 1 Y 255
;***********************************************************
ret_seg
MOVWF R_AUX4
MOVWF R_AUX6
ESPERA_S CALL DELAY2
DECFSZ R_AUX4,F
GOTO ESPERA_S
ESPERA_S4 MOVLW .250
MOVWF R_AUX5
ESPERA_S2 DECFSZ R_AUX5,F
GOTO ESPERA_S2
MOVLW .70
MOVWF R_AUX5
ESPERA_S3 DECFSZ R_AUX5,F
GOTO ESPERA_S3
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ R_AUX6,F
GOTO ESPERA_S4
return
;*****************************
;RUTINA AUX DE ret_seg
;*****************************
DELAY2 MOVLW .250
call ret_ms
MOVLW .250
call ret_ms
movlw .250
call ret_ms
movlw .249
call ret_ms
return
;************************************************************
; ret_min y hora; cabe notar que falta calibrar bien la hora
; creo que no funcionaria bien para caso de un reloj,
; error de micro o milesimas de segundo
;***********************************************************
ret_min
movwf R_AUX10
PAUSA_1 movlw .60
CALL ret_seg
DECFSZ R_AUX10,F
GOTO PAUSA_1
return
ret_hora
movwf R_AUX11
PAUSA_2 movlw .60
call ret_min
decfsz R_AUX11,F
goto PAUSA_2
return