Está en la página 1de 6

;

;
;
;
;
;
;
;
;
;
;
;


| | | | | | | | | | | |
_|__|__|__|__|__|__|__|__|__|__|__|_
_\\|//_ 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
;CP ON
;WDT ON
;INTRC_OSC_NOCLKOUT
;PWRTE_ON
;BODEN_OFF
LIST
INCLUDE

configura GP3 como entrada en lugar de como reset


CODIGO DE PROTECCION ACTIVADO
PERRO GUARDIAN ACTIVADO
UTILIZACION DE OSCILADOR INTERIOR
SE ACTIVA EL RESET AL ALIMENTAR AL MICRO
No actua el reset por bajada de tension

P=16F629
<P12F629.INC>

#define llamar
#define colgar
#define puerta

GPIO,5
GPIO,4
GPIO,2

;Procesador utilizado.
;activo optoacoplador de llamar
;activo optoacoplador de colgar
;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
PDel1
tiempo_ON
tiempo_OFF

equ
equ
equ
equ

0x20
0x21
0x22
0x23

;utilizado
;utilizado
;utilizado
;utilizado

para
para
para
para

los
los
los
los

retardos
retardos
retardos
retardos

;******************************************************************************
;********************************** INICIO **********************************
;******************************************************************************
reset

org 0x00
goto inicio

;El programa comienza en la direccin 0.


;pasa a la posicion de inicio para evitar la int.

org 0x04

;aqui se atienden las interupciones

DT

"

Alarma gsm

DT

"llamada 1 min

inicio bsf STATUS,5


call
movwf
;movlw
;movwf
bcf
bcf
bsf

ver.01 solo apertura

repeticion 5 min

"

"

;Banco 1.

0x3ff
OSCCAL

;
;

CALIBRACION DEL
OSCILADOR INTERNO

b'111110' ;0=salida, 1=entrada


TRISIO
;lo tranfiere al puerto
colgar
; configuro el pin como salida
llamar
; configuro el pin como salida
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

sigue

btfss
goto

puerta
principal

;si es 1 se salta la instruccion, puerta abierta

goto

retardo_puerta ;verifica si es una interferencia

call

LLAMAR

call

Retardo_1m

call

COLGAR

call

Retardo_5m

goto

principal

;tiempo que dura la llamada

;tiempo que tarda en realizar otra llamada

;******************************************************************************
;******************************* LLAMAR ***********************************
;******************************************************************************
LLAMAR clrwdt
bsf
call
bcf

colgar
demora_250ms
colgar

;actuo sobre el pulsador de colgar


;suelto el pulsador de colgar

call

demora_250ms

bsf
call
bcf
call

llamar
demora_250ms
llamar
demora_250ms

bsf
call
bcf
call

llamar
demora_250ms
llamar
demora_250ms

;actuo sobre el pulsador de llamar


;suelto el pulsador de llamar
;actuo sobre el pulsador de llamar
;suelto el pulsador de llamar

return
;******************************************************************************
;******************************* COLGAR ***********************************
;******************************************************************************
COLGAR clrwdt
bsf
call
bcf
call

colgar
demora_250ms
colgar
demora_250ms

;actuo sobre el pulsador de colgar


;suelto el pulsador de colgar

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

Retardo_55m

Retardo_50m

Retardo_45m

Retardo_40m

Retardo_35m

Retardo_30m

Retardo_25m

Retardo_20m

Retardo_15m

Retardo_10m

Retardo_5m
Retardo_2m

call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call

Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m
Retardo_1m

;******************************************************************************
;***************************
RETARDO hasta 10seg
*******************

;******************************************************************************
Retardo_1m

Retardo_55s

Retardo_50s

Retardo_45s

Retardo_40s

Retardo_35s

Retardo_30s

Retardo_25s

Retardo_20s

Retardo_15s

Retardo_10s

Retardo_5s

call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call

Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
Retardo_1s
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

DEMORA1 movlw
movwf
PLoop11 movlw
movwf
PLoop21 clrwdt

.20
PDel0
.207
PDel1

;verificando continuamente la puerta


;
;
;
;
;

btfss puerta
goto principal

;si es 1 se salta la instruccion


;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

También podría gustarte