bueno aqui esta ya terminado, aun no lo simulo ni nada ya que estoy batallando con el gpsim, aparte que no soporta este pic, espero sus comentarios para encontrar algun problema en el, Muchas Gracias....
; -----------------------------------------------------------------------
; Plantilla generada por Piklab
#include <p12c508a.inc>
; -----------------------------------------------------------------------
; Bits de configuración: adapte los parámetros a su necesidad
__CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_ON
; -----------------------------------------------------------------------
CBLOCK 0x08 ;bloque de ram en la direccion 0x08 para los retardos
PDel0
PDel1
PDel2
PDel3
PDel4
PDel5
PDel6
PDel7
PDel8
ENDC ;termina bloque de la ram
#define OUT0 0;gp0
#define OUT1 1;gp1
#define OUT2 2;gp2
#define IN0 3;gp3
#define OUT3 4;gp4
#define IN1 5;gp5
ORG 0
MOVLW b'00101'
TRIS GPIO
start
BSF GPIO,OUT0 ;enciende led
CALL TIME0 ;espera 3 seg
BCF GPIO,OUT0 ;apaga led
CALL TIME0 ;espera 3 seg
BTFSS GPIO,IN0 ;revisa entrada0 si es 1 salta una intruccion
GOTO start ;comienza de nuevo
relon
CALL TIME1 ;espera 3 minutos
BSF GPIO,OUT1 ;activa relay
playy
BSF GPIO,OUT0 ;enciende led
CALL TIME0 ;espera 3 seg
BCF GPIO,OUT0 ;apaga led
CALL TIME0 ;espera 3 seg
BTFSS GPIO,IN1 ;revisa entrada1 si es 1 salta una instruccion
GOTO playy ;comienza en esta etiqueta
BCF GPIO,OUT1 ;apaga relay
GOTO start ;comienza de nuevo
TIME0 ;retardo 3 seg
movlw .67 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop10 movlw .91 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop11 movlw .122 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop12 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop12 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop11 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop10 ; 2 no, loop
PDelL11 goto PDelL12 ; 2 ciclos delay
PDelL12 clrwdt ; 1 ciclo delay
retlw 0 ; 2+2 Fin.
TIME1 ;retardo 3 a 4 minutos
movlw .231 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop0 movlw .223 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .245 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 goto PDelL4 ; 2 ciclos delay
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 goto PDelL8 ; 2 ciclos delay
PDelL8 clrwdt ; 1 ciclo delay
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop0 ; 2 no, loop
PDelL9 goto PDelL110 ; 2 ciclos delay
PDelL110 goto PDelL11 ; 2 ciclos delay
PDelL111
retlw 0 ; 2+2 Fin.
END
esta genial el PDel.
Saludos!