; º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ; º | | | | | | | | | | | | º ; º _|__|__|__|__|__|__|__|__|__|__|__|_ _\\|//_ Jose º ; º | | (| o-o |) Martinez º ; º | www.microcontroladorespic.com | \ (_) / Ortiz º ; º |) | \_"_/ º ; º | Alarma con pic 12f629 para comercio| __|U|__ º ; º | llama solamente al abrir la puerta | / \ º ; º |_ __ __ __ __ __ __ __ __ __ __ __ _| / /| |\ \ º ; º | | | | | | | | | | | | / / | | \ \ º ; º | | | | | | | | | | | | "" |___| "" º ; º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ; DESCRIPCION ;Alarma para conectar al movil que se acciona al abrir un interruptor magnetico ;por lo tanto se activa cuando la entrada es 1 ;esta version solo suena al abrir la puerta. ;tiempo de llamada 1 minuto ;tiempo de reposo 5 minutos,en el caso de que la puerta continue abierta ; ;****************************** ZONA DE DATOS **************************** __CONFIG _MCLRE_OFF & _CP_ON & _WDT_ON & _INTRC_OSC_NOCLKOUT & _PWRTE_ON ;MCLRE OFF - configura GP3 como entrada en lugar de como reset ;CP ON - CODIGO DE PROTECCION ACTIVADO ;WDT ON - PERRO GUARDIAN ACTIVADO ;INTRC_OSC_NOCLKOUT - UTILIZACION DE OSCILADOR INTERIOR ;PWRTE_ON - SE ACTIVA EL RESET AL ALIMENTAR AL MICRO ;BODEN_OFF - No actua el reset por bajada de tension LIST P=16F629 ;Procesador utilizado. INCLUDE #define llamar GPIO,5 ;activo optoacoplador de llamar #define colgar GPIO,4 ;activo optoacoplador de colgar #define puerta GPIO,2 ;entrada de deteccion de la puerta #define tres GPIO,3 ;activo optoacoplador de llamar #define uno GPIO,1 ;activo optoacoplador de colgar #define cero GPIO,0 ;***************************** MAPA DE MEMORIA **************************** PDel0 equ 0x20 ;utilizado para los retardos PDel1 equ 0x21 ;utilizado para los retardos tiempo_ON equ 0x22 ;utilizado para los retardos tiempo_OFF equ 0x23 ;utilizado para los retardos ;****************************************************************************** ;********************************** INICIO ********************************** ;****************************************************************************** reset org 0x00 ;El programa comienza en la dirección 0. goto inicio ;pasa a la posicion de inicio para evitar la int. org 0x04 ;aqui se atienden las interupciones DT " Alarma gsm ver.01 solo apertura " DT "llamada 1 min repeticion 5 min " inicio bsf STATUS,5 ;Banco 1. call 0x3ff ; CALIBRACION DEL movwf OSCCAL ; OSCILADOR INTERNO ;movlw b'111110' ;0=salida, 1=entrada ;movwf TRISIO ;lo tranfiere al puerto bcf colgar ; configuro el pin como salida bcf llamar ; configuro el pin como salida bsf puerta ; configuro el pin como entrada ;abilitar resistencias internas movlw b'00001111' movwf OPTION_REG movlw b'00111111' ;selecciono los pines donde quiero las resistencias movwf WPU bcf STATUS,5 ;Banco 0. ;instrucciones para poder utilizar GP0 y GP1 como entradas movlw b'00000111' ; desactiva el comparador movwf CMCON ; selecciona GPIO en vez de comparador clrf GPIO ;todas las salidas puestas a 0 ;****************************************************************************** ;******************************* PRINCIPAL *********************************** ;****************************************************************************** principal clrwdt btfss puerta ;si es 1 se salta la instruccion, puerta abierta goto principal goto retardo_puerta ;verifica si es una interferencia sigue call LLAMAR call Retardo_1m ;tiempo que dura la llamada call COLGAR call Retardo_5m ;tiempo que tarda en realizar otra llamada goto principal ;****************************************************************************** ;******************************* LLAMAR *********************************** ;****************************************************************************** LLAMAR clrwdt bsf colgar ;actuo sobre el pulsador de colgar call demora_250ms bcf colgar ;suelto el pulsador de colgar call demora_250ms bsf llamar ;actuo sobre el pulsador de llamar call demora_250ms bcf llamar ;suelto el pulsador de llamar call demora_250ms bsf llamar ;actuo sobre el pulsador de llamar call demora_250ms bcf llamar ;suelto el pulsador de llamar call demora_250ms return ;****************************************************************************** ;******************************* COLGAR *********************************** ;****************************************************************************** COLGAR clrwdt bsf colgar ;actuo sobre el pulsador de colgar call demora_250ms bcf colgar ;suelto el pulsador de colgar call demora_250ms return ;****************************************************************************** ;**** RETARDOS hasta 24 Horas - cuidado no sobrepasar la PILA ******* ;****************************************************************************** Retardo_24h call Retardo_1h Retardo_23h call Retardo_1h Retardo_22h call Retardo_1h Retardo_21h call Retardo_1h Retardo_20h call Retardo_1h Retardo_19h call Retardo_1h Retardo_18h call Retardo_1h Retardo_17h call Retardo_1h Retardo_16h call Retardo_1h Retardo_15h call Retardo_1h Retardo_14h call Retardo_1h Retardo_13h call Retardo_1h Retardo_12h call Retardo_1h Retardo_11h call Retardo_1h Retardo_10h call Retardo_1h Retardo_9h call Retardo_1h Retardo_8h call Retardo_1h Retardo_7h call Retardo_1h Retardo_6h call Retardo_1h Retardo_5h call Retardo_1h Retardo_4h call Retardo_1h Retardo_3h call Retardo_1h Retardo_2h call Retardo_1h ;****************************************************************************** ;**** RETARDOS hasta 1 Hora - cuidado no sobrepasar la PILA ******* ;****************************************************************************** Retardo_1h call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_55m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_50m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_45m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_40m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_35m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_30m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_25m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_20m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_15m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_10m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_5m call Retardo_1m call Retardo_1m call Retardo_1m Retardo_2m call Retardo_1m ;****************************************************************************** ;*************************** RETARDO hasta 10seg ******************* ;****************************************************************************** Retardo_1m call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_55s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_50s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_45s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_40s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_35s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_30s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_25s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_20s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_15s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_10s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s Retardo_5s call Retardo_1s call Retardo_1s call Retardo_1s call Retardo_1s ;****************************************************************************** ;*************************** RETARDO 1seg *************************** ;****************************************************************************** Retardo_1s call demora_250ms call demora_250ms call demora_250ms ;****************************************************************************** ;***************** demora 250ms ******************** ;****************************************************************************** demora_250ms DEMORA movlw .195 ; 1 set numero de repeticion (B) movwf PDel0 ; 1 | PLoop1 movlw .213 ; 1 set numero de repeticion (A) movwf PDel1 ; 1 | PLoop2 clrwdt ; 1 clear watchdog PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A) goto PLoop2 ; 2 no, loop decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B) goto PLoop1 ; 2 no, loop clrwdt ; 1 ciclo delay return ; 2+2 Fin. ;****************************************************************************** ;******************* RETARDO comprobando la puerta ******************* ;****************************************************************************** retardo_puerta nop ;verificando continuamente la puerta DEMORA1 movlw .20 ; movwf PDel0 ; PLoop11 movlw .207 ; movwf PDel1 ; PLoop21 clrwdt ; btfss puerta ;si es 1 se salta la instruccion goto principal ;vuelve si es una interferencia decfsz PDel1,1 ; goto PLoop21 ; decfsz PDel0,1 ; goto PLoop11 ; PDelL11 goto PDelL21 ; PDelL21 clrwdt ; goto sigue ;---------------------------------------------------------------------------- org 0x3FF ; OSSCAL -------------------- retlw 0x20 ; VALOR DE CALIBRACION -------------------- ;---------------------------------------------------------------------------- END