# Alarma con sensores pic 16f84.



## marifloro (Jun 1, 2008)

Hola a to2¡¡

Es la primera vez que ingreso en un foro de electronica y esto ha sido devido a que me encuentro bastante apurado con un programa que tengo que realizar.
Me han hablado muy bien de este foro y he estado mirandolo un poco antes. Lo que he visto me ha encantado la verdad por eso he decidido registarme.
Bueno si alguen pudiese tener unos minutos para ayudarme le estaria muy agradecido. Mi problema es que tengo un realizar programa con el pic 16f84 que y ando bastante perdidillo el programa consiste en un local con 4 sensores de movimiento que son  S0=RA0-S1=RA1-S2=RA2-S3=RA3 junto con un teclado matricial el cual tiene un codigo para entrar "A5" entonces lo que tengo que programar es: Si el codigo esta en "on" no pasa nada y si el codigo por el contrario no esta en "on" al activarse un sensor cualquiera se enciende la alarma que es "RA4". Si pudiesen darme unas pautas para comenzar el programa se lo agradeceria.

Muchisimas gracias de antemano por todo si pueden ayudarme un poquillo les estaria muy agradecido muchisimas gracias.

Saludos a todos.


----------



## pepechip (Jun 1, 2008)

Si las entradas las situas en el puerto B puedes utilizar el sistema de interrupciones, por lo que te ahorras estar continuamente explorando las entradas, e incluso puedes ponerlo en modo sleep.


----------



## tiopepe123 (Jun 1, 2008)

Cuando se anda perdido lo mejor es empezar con cosas sencillas y despues ya complicaras.


1.-Haz un blucle que lea las entradas del puerto B y encienda unos led en el puerto A.

Esto te obliga a configurar los puertos A y B, el A como salida (tris 0x00) y el B como entrada (tris 0xff)

Una vez configurado solo debes hacer un bucle sin fin que lea y escriva los puertos.

Recuerda que en el pic no puedes inyectarle mas de 5V, si los sensores te dan mas debes poner un divisor de tension o un zener o silinalres ya lo comentariamos)


----------



## marifloro (Jun 1, 2008)

Muchas gracias por buestra ayuda e podido resolver algo ahora mi problema biene a la hora de introducir el teclado matricial que la verdad m esta dndo bastantes problemas tanto que nose donde introducirlo ni como programarlo. He consultado algunas paginas pero no logro enterarme de como configurar este adecuandolo a mi proyecto os adjunto lo que e logrado hacer.

Muchas gracias y un saludo.


----------



## marifloro (Jun 1, 2008)

org  0

            BSF  ESTADO,5
            MOVLW  0XFF
            MOVWF  PORTA
            CLRF      PORTB
            BCF       ESTADO,5
ALARMA  BTFSS   PORTA,0
            GOTO    SONIDO
            BTFSS    PORTA,1
            GOTO    SONIDO
            BTFSS   PORTA,2
            GOTO    SONIDO
            BTFSS   PORTA,3
            GOTO    SONIDO
            GOTO    SONIDO
SONIDO  BSF      PORTB,1
            END.


----------



## Manonline (Jun 1, 2008)

marifloro, por lo que veo tu programa lee todas las entradas del puerto A, y si es 0 se activa la salida del puerto B, menos en el ultimo caso que sin importar como este, la alarma va a sonar igual... para que eso no pase tendrias que borrar los dos ultimos saltos.

otro error es que esto lo va a hacer una sola vez hasta que llegue al "END", despues de esto no lo va a hacer mas hasta que resetees... para que esto no pase tendrias qe poner un salto despues de "SONIDO BSF PORTB,1"...

para que lo veas mejor, te qedaria algo asi:

org 0 

BSF ESTADO,5                        ;Acceso al Banco 1
MOVLW 0XFF                         ;Carga b'11111111' al registro de trabajo
MOVWF PORTA                      ;Configura al puerto A como entrada
CLRF PORTB                          ;Configura al Puerto B como salida
BCF ESTADO,5                       ;Acceso al Banco 0
ALARMA BTFSS PORTA,0         ;Revisa cada entrada del puerto A
GOTO SONIDO                       ;y si alguna entrada es 1
BTFSS PORTA,1                      ;entonces activa la salida 1 del puerto B
GOTO SONIDO 
BTFSS PORTA,2 
GOTO SONIDO 
*BTFSS* PORTA,3         ;Si PORTA,3 = 1 Salt a "GOTO ALARMA"
SONIDO BSF PORTB,1           ;No estan mas los saltos
*GOTO ALARMA*           ;Esto hace un bucle infinito
END


----------



## marifloro (Jun 2, 2008)

Muchas gracias por tu ayuda manonline me has ayudado mucho ahora tengo una pequeña duda mas si me pudieses ayudar ya seria demasiado. Tengo que introducir un teclado matricial con un codigo el cual es A5 si este codigo esta activado no pasa nada pero si no esta activado cualquier sensor dectecta movimiento salta la alarma. He conseguido descubriri como funciona un teclado matricial lo unico es que nose donde puedo introducirlo en mi proyecto si m pudieses dar alguna pista.

Muchas gracias Manonline un saludo y disculpa las molestias.

Te adjunto el funcionamiento del teclado matricial.


----------



## marifloro (Jun 2, 2008)

Aqui adjunto el teclado matricial.

Haber si me puedes solucionar la duda muchas gracias.

Saludos.


```
KB_Port                        ;Inicializa la puerta B para las entradas del
                               ;teclado. Programa RB0-3 como salidas y RB4-7
                               ;entradas con las resistencias de polarizacion
                               ;habilitadas.           
                BSF     STATUS,RP0      ;Selecciona P gina 1             
                MOVLW   0F0h            ;PB4-7 como entradas  
                MOVWF   TRISB           ;y PB0-3 como salidas
                BSF     OPCION,RBPU     ;Habilita R de polarizacion en entradas
                BCF     STATUS,RP0      ;Vuelve a la p gina 0.
                RETURN                  ;Retorna.
                                        
KB_Scan                                 ;Escanea el teclado
                CLRF    Tecla           ;Borra Tecla y
                INCF    Tecla,f         ;prepara Tecla para primer c¢digo.
                MOVLW   0Eh             ;Saca 0 a la primera fila
                MOVWF   PORTB           ;de la Puerta B
                NOP                     ;Nada para estabilizaci¢n de señal.  
Cheq_Col        BTFSS   PORTB,4         ;Primera columna = 0        
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,5         ;Segunda columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,6         ;Tercera columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,7         ;Cuarta columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada,incrementa Tecla.
                                        
Ultima_Tecla    MOVLW   d'17'           ;Carga W con el n£mero de Teclas + 1.
                SUBWF   Tecla,w         ;y lo compara con el valor actual de Tecla.
                BTFSC   STATUS,Z        ;Si Tecla + 1 = valor actual.
                GOTO    NTeclas         ;No ha sido pulsada ninguna tecla.
                BSF     STATUS,C        ;Pone a 1 Bit C.    
                RLF     PORTB,f     ;as¡ la Fila 1 pasa a 1 con la rotaci¢n a izqda.
                GOTO    Cheq_Col                                             
                                                            
NTeclas         CLRF    Tecla           ;Coloca variable Tecla a 0
                RETURN                  ;y regresa.         
                                                            
antirebotes	;ahora se espera a que la tecla sea soltada para evitar rebotes
		;y reactivaciones de tecla
		;esta parte puede ser eliminada si para nuestro proyecto no es necesaria
      		;o es un inconveniente.

Espera1         BTFSS   PORTB,4         ;Si no se suelta la tecla FILA 1
                GOTO    Espera1         ;vuelve a esperar. 
Espera2         BTFSS   PORTB,5         ;Si no se suelta la tecla FILA 2
                GOTO    Espera2         ;vuelve a esperar.
Espera3         BTFSS   PORTB,6         ;Si no se suelta la tecla FILA 3
                GOTO    Espera3         ;vuelve a esperar.              
Espera4         BTFSS   PORTB,7         ;Si no se suelta la tecla FILA 4
                GOTO    Espera4         ;vuelve a esperar.          
                
                MOVF    Tecla,w		;pone en w el numero contenido en la variable
                CALL    T_Conv          ;llama a la tabla de conversion y retorna
                MOVWF   Tecla  		;con el valor en hexadecimal y lo pone en la variable.
                RETURN       		;vuelve al programa principal que hizo la llamada.
                 
                             
T_Conv          ADDWF   PCL,1
                RETLW   '0'             ;Tecla nº0 = 0
                RETLW   '1'             ;Tecla nº1 = 1
                RETLW   '4'             ;Tecla nº2 = 4
                RETLW   '7'             ;Tecla nº3 = 7 
                RETLW   'A'             ;Tecla nº4 = A                       
                RETLW   '2'             ;Tecla nº5 = 2 
                RETLW   '5'             ;Tecla nº6 = 5 
                RETLW   '8'             ;Tecla nº7 = 8 
                RETLW   '0'             ;Tecla nº8 = 0 
                RETLW   '3'             ;Tecla nº9 = 3 
                RETLW   '6'             ;Tecla nº10 = 6
                RETLW   '9'             ;Tecla nº11 = 9
                RETLW   'B'             ;Tecla nº12 = B
                RETLW   'F'             ;Tecla nº13 = F
                RETLW   'E'             ;Tecla nº14 = E
                RETLW   'D'             ;Tecla nº15 = D
                RETLW   'C'             ;Tecla nº16 = C
```


----------



## DJ DRACO (Sep 8, 2008)

amigos, estoy buscando un esquema electronico de una alarma completita con pic, y como yo no tengo idea de como hacerlo con pic's, pretendo que alguien me pueda ayudar.

solo el esquema, yo hago el pcb, todo lo q falte.

obviamente necesitaria el codigo fuente para programarlo.

les cuento q recien comienzo con pic's, tengo una interface casera linda, y el winpic800 v3.63


----------



## DJ DRACO (Sep 10, 2008)

AMIGOS, realmente querria saber de algun sistema microcontrolado, con cualquier clase y tipo de PIC's, no puede ser que haya buscado por toda la red, y solo encontre 1 link medio relacionado con ell tema.

yo recien comienzo con el tema pic's, pero realmente si supiera compilar codigo fuente, etc, ya hubiese hecho algun sistema bien lindo de alarma, con varias funciones.

de ultima cualquier circuito con pic's me sirve, quiero empezar a programar y ensamblar.

los proyectos q tengo pensado son:

alarma completita
controlador para CNC 3D
controlador de servos.


----------



## pepechip (Sep 11, 2008)

DJ DRACO , la alarma con pic si la realizas con unos tiempos predefinidos es muy simple y facil de realizar.
Si quieres te ayudo en este tipo de alarma. 
Te propongo estas caracteristicas, si quieres las modificas o añades algo mas:
Tiempo de salida 30 seg
tiempo de entrada 10 seg
Tiempo de funcionamiento de la sirena de 1minuto
Tiempo de reposo para volver a actuar sobre la sirena 5 minutos.
Salida para altavoz con sonido bitonal de 1khz y 1,5Khz
Salida par conectar otro tipo de sirena
salida para lampara con una cadencia de 2hz
salida para led indicador de  tiempo de entrada
salida para led indicador de  tiempo de salida
salida para led indicador de alarma activada
salida para una chichara que avisa del tiempo de salida y de entrada
Entrada para conectar al bombin de la llave de conexion y desconexion
1 entrada de disparo sin tiempo de entrada
1 entrada de alarma por sabotaje
3 entradas temporizadas 

(todas las entradas se activan al abrir el circuito)
Podemos realizarlo con un pic 16f84.
Si te interesa sube tu el esquema con el pic aca en el foro, luego si no me interesa te cambiare los pines del pic.


----------



## DJ DRACO (Sep 11, 2008)

muy buena tu propuesta, y me encantaria saber como hacerlo... pero no sep. si puedo subo una especie de esquema.

basicamente usariamos las entradas del pic para los sensores.
y las salidas las programamos para q le den señal a la sirena, y a una luz q se retarda unos 2 segundos.

me gusta la idea. voy a ver como le hago...    

gracias


----------



## Meta (Sep 11, 2008)

pepechip dijo:
			
		

> DJ DRACO , la alarma con pic si la realizas con unos tiempos predefinidos es muy simple y facil de realizar.
> Si quieres te ayudo en este tipo de alarma.
> Te propongo estas caracteristicas, si quieres las modificas o añades algo mas:
> Tiempo de salida 30 seg
> ...



Muy buena idea. Por cierto. ¿Qué tipo de temporizadores usa para el 16F84A, TIMER o retardos?


----------



## DJ DRACO (Sep 11, 2008)

el pic tiene clock interno. tambien podriamos usar el 16f88 q tiene mejoras respecto al 84.

otro temita, hace muy poco que estoy viendo el tema de compuertas logicas, etc. no sabria bien como diseñar el esquema electronico con el pic. Es como q veo un pic y me bloqueo.

yo entiendo q las entradas (creo q son las RA) pueden tener estado logico 1 o 0, y q yo debo programarlo para q cuando el estado cambie ocurra algo, pero ese es justamente mi problema, no tengo idea ops: 

podria intentar tirar un esquema, pero tengo miedo de confundir a los q sepan tan poco como yo...

toy haciendo el circuito, creo q esta bien, y para q se active el sistema cuando se le quita la tension de alimentación, tendria q colocar q la tension genere un estado 1 en una entrada, cosa q cuando se la quiten baje a 0 y ahi se active todo el sistema?


----------



## Meta (Sep 11, 2008)

La verdad es que tienes razón. EL 16F88 está mejor tanto como el PIC como su precio frente al 16F84A.


----------



## DJ DRACO (Sep 11, 2008)

asi m esta quedando amigos, diganme ya si esta correcto o no, asi lo descarto o lo sigo.


----------



## pepechip (Sep 11, 2008)

tanto las RA como las RB se pueden programar indistintamente como entradas y como salidas.

En cuanto a los retardos aun no me he planteado la forma de realizarlos.


----------



## Meta (Sep 11, 2008)

Ojo con los retardos ya que el pic se queda como esclavo, es decir, no ejecuta otra operación hasta que acabe la primera. Con el TIMER al menos tiene interrupción. Si se te queda corto el TIMER hay PIC con varios TIMER.


----------



## DJ DRACO (Sep 11, 2008)

entonces el circuito esta relativamente bien, yo tome todas las ra como entradas y las rb como salidas, de manera tal de tner 5 entradas maximo, y 8 salidas bien programaditas.

voy a seguir y ver el tema de los retardos.

sino, otra entrada q permita o no funcionar el circuito, con algun cd4013 y receptor fm para activar de lejos.


----------



## Meta (Sep 11, 2008)

También vale CD4066 para que lo sepas por si acaso.


----------



## DJ DRACO (Sep 11, 2008)

sisis, yo conozco mucho de integrados, pero no de pic's.
el cd4066 puede servir como interruptores. es buena, ir agregando integrados q nos ayuden a mejorar el sistema.

despues necesitaria q alguien me ayude a programarlo en winpic800 v3.63.


----------



## Meta (Sep 11, 2008)

Hola:

No hay problema en usarlo con el winpic800. Bájate el manual en PDF aquí, para eso lo hice, para ayudar. ejeje 

Descargar.

Saludos.


----------



## DJ DRACO (Sep 23, 2008)

Hola de nuevo...toy viendo como hago el circuito final de la alarma con pic, para luego hacer el pcb. pero me surgio una duda.

compre unos sensores de movimientos que no tienen relé, solo tienen unos bornes que dicen que por ahi sale un pulso.

que ese pulso no puede superar los 100mA de corriente, entre otras caracteristicas.

mi tema es... cómo hago para que ese pulso me active la alarma?

el pulso seria un estado logico alto, o sea un 1, si al pic, lo configuro para que en esas entradas se mantenga en 0 hasta que haya un 1 y que cuando haya un 1 se active...listo no?

asi funcionaria, no?

espero respuestas.

saludos.


----------



## picrocker (Sep 24, 2008)

Eso es muy cierto, pero tendrias que ver que voltaje tiene ese pulso a ver si es compatible con TTL recuerda dos estados 0 y 1 logicos, pero los niveles analogicos asociados de voltajes son diferentes... ademas podrias configurar, ya que vas a trabajar con pic el contar las veces que se activa el interruptos, y tendrias que estudiar que tan sensible son, a no ser que pase cerca un gato y te active el sensor...


----------



## DJ DRACO (Sep 24, 2008)

eso lo manejo desde el sensor mismo, tiene 3 configuraciones de sensibilidad, y el hecho de que pasen cosas es absolutamente inprobable, ya que es dentro de un negocio, en el cual inclusive, es dificil q el sensor, pueda sensar fuera del recinto.

por eso no me preocupo.

vere lo del voltaje.

graciassssssss.


----------



## opaitopepe (Sep 26, 2008)

Dj: ¿como vas con la alarma? necesitas ayuda?
si tienes algo claro descargalo para que lo veamos.
saludos.


----------



## DJ DRACO (Sep 26, 2008)

tengo algo empezado, y creo q esta bien.

no se mucho de pic's. mucho menos de cómo programarlo.

tengo programa e interface para programarlo, pero de la programacion poco y nada.

luego subo el esquemita basicamente terminado.


----------



## erkillo (Sep 28, 2008)

Hacer un sistema de alarmas con pic es facil. Pero empieza a complicarse si queremos hacer un soistema redundante. Es decir, la alarma acustica se debe activar siemopre que una alarma acustica se active. Las nuevas alarmas activadas deben de estar intermitentes hasta q no se  reseteen.
Y tb se da el caso de que cuando una alarma  esta reseteada y se encuentra fija y una nueva se activa la alarma reseteada quedara fija y la nueva debera estar intermitente. Todo esto hace que el programe se alargue en lineas de programacion. Alguien tiene libretria de subrutinas o alguna forma de programacion que simplifique todo esto?


----------



## opaitopepe (Sep 28, 2008)

logicamente, mientras más compliquemos la cosa, más trabajo dará. creo que para este proyecto acabe bien debe ser DJdrago quien ponga la pauta, y sobre eso ir avanzando. ¿no os parece?


----------



## DJ DRACO (Sep 28, 2008)

NO, no me parece. jejeje.  

yo tire una idea, y basicamente yo queria una alarma simple, pero sin usar 555.

si quieren que le vayamos agregando cosas me parece bien. pero como ya dije antes, yo no se de programacion. y debemos depender de alguien que si sepa.

en este proyecto yo propuse algo simple, realizable, que todos podamos entender y fabricar.

una alarma simple con pic.

pero el proyecto esta abierto a todas las modificaciones y arreglos que vayan surgiendo.

saludos a todos.


----------



## fernandob (Sep 28, 2008)

hola, mi primer trabajo fue con alarmas..
y no quise saber luego mas nada, aunque aprendi o comence con ellas..
es que la gente ..........  

bueno, lo que pusieron mas atras es ok eso de tiemppos de entrada, salida y demas.

basicamente .........o no, vamos en orden :

1 -- para que es la alarma ? una casa ? 
supongamos que si y que queres hacertela vos, recorda que tenes que poder variar tiempos asi que tene en cuenta eso de que el PIC tendra que poder leer presets de ajuste , hoy dia mas facil con las entradas A/D pero es .....otra cosa mas.

UNA PREVIA AL DISEÑO:
una alarma debe tener:
la central, energia auxiliar , sino voy a tu casa, te corto la luz y te desplumo.
varias sirenas , sino te corto la unica y te quedas con el canario gritando   
los sensores ...justo, esto es todo un tema, que detecten pero que no den falsas alarmas.

en fin, para mi que era bueno en eso una alarma NO ES una buena central o sea donde pones el micro, .
UNA ALARMA es todo el sistema y cada parte es vital .

las ultimas que hice tenian un concepto de electronica distribuida, no solo una central como dije sino que sensores inteligentes igual que la sirenas. (MODULOS) 

en fin, estamos hablando de la central.
disculpen pero no podria ponerme a buscar por ahi donde tengo los circuitos pero con solo un par de CD4xxx recuerdo que hice todo , me refiero a todos los tiempos y mas aun.
claro, otra cosa que hay y si es importante es poder separar  las entradas, no solo una linea para 20 sensores, sino que una para c/u .
eso lo hice tambien con Ci comunes, , un circuito sencillo y repetitivo:

entrada ----retardo (R+C)(regulable)  ------- disparo (pulso ) 
..........................................L--------memoria 

este esquema se repite cuantas veces quieran en una placa .

otro modulo es la activacion --desactivacion , dirian que uso el mismo PIC que usaria en la central para manejar un codigo (ERROR) .
la activacion desactivacion no va en la central, va lejos.
por que ? 
la central tiene la fuente y bateria de respaldo, puede tener un ATMEL + 2 PIC + un motorola  que yo con una maza la hago mierda y la anulo a golpes .

asi que el teclado o lo que sea que estara medio a la vista no debe estar cerca de la central la cual estara oculta.

salvo un activ /desactiv inalambrico......pero bueno, son opciones:
inhalambrico que no se ve nada pero si lo perdes fuiste, 

bueno, em canse y se que si sigo no paro mas.

para terminar:
una alarma NO la diseñas pensando en la central:
se diseña pensando en la casa, y se hace un esquema de los modulos, como un diagrama de flujo.
y veras que cada modulo es una historia.


saludos

PD: alarmas y telefonia........un tema muy comercial, no vale la pena ponerse a diseñar muchas cosas que ya hay y son muy baratas.
SI VALE LA PENA  diseñar algunos modulos que no existen y convertirian a tu alarma en algo bueno de verdad, por que son todas iguales .   

u


----------



## opaitopepe (Sep 29, 2008)

... y seguimos dandole la vuelta a la tortilla. echadle un vistazo a este link.

http://www.todomicrostamp.com/pink2.php

como he dicho, podemos complicarlo hasta el infinito y mas alla. Ya sabemos que resulta más práctico comprarla, contratar el servicio de mantenimiento y el de acuda en caso de que salte. Creo que aquí estamos, o por lo menos yo, para aprender,  para ayudar en algo a los que tienen inquietudes y como no, para pasar el rato.


----------



## opaitopepe (Sep 29, 2008)

¿habeis visto el archivo?
simple. Si quereis un esquema completo desde ya os digo. no tengo, porque no necesito una alarma. Pero a esta le podemos poner por ejemplo una temporizacion, y si quereis un teclado.
en fin, espero comentarios...


----------



## DJ DRACO (Sep 29, 2008)

Qué pedazo de aporte amigooooooo.

ese link se pasa de la raya.

muy buen material.

y en cuanto a lo de complicarla, es obvio, mi alarmita casera y precaria no podra competir jamas con las chinas.
jeje.

nada en este mundo compite contra las grandes empresas de tecnologia, de ultima generacíón que desarrollan inventos increibles a un costo casi insignificante.

gracias amigo opaitopepe.


----------



## opaitopepe (Oct 5, 2008)

¿cerramos este hilo?, o lo curramos un poco mas. que os parece si le ponemos un teclado que nos ocupe un solo pin del micro.
mirad el enlace:

http://www.micropic.es/index.php?option=com_content&task=view&id=56&Itemid=42


----------



## DJ DRACO (Oct 9, 2008)

este es un muy buen aporte sin dudas, lo vi hace unos dias, pero recien hoy tuve tiempo de responder.

jamas se me hubiese ocurrido algo asi.

gracias opaito.


----------



## lenguasagaz (Dic 21, 2008)

aqui tengo 1 circuito y el codigo fuente de una alarma con 2 sensores y 1 buzzer ojala te sirva


```
;DIRECTIVAS DEL PROGRAMA

		LIST     P=16F84           ;Se emplea el PIC16F84
        RADIX    HEX               ;Sistema de numeración hexadecimal
		
	#include "p16f84a.inc" 

;ETIQUETAS DEL PROGRAMA

W       EQU      0x00              ;Registro de destino W : d=0
F       EQU      0x01              ;Registro de destino F : d=1
Z       EQU      0x02              ;Bit 2 del registro ESTADO
ESTADO  EQU      0x03              ;El registro ESTAdo OCUPA LA DIRECCIÓN
                                   ;3 de los dos bancos
PUERTAA EQU      0x05              ;La PUERTAA ocupa la dirección 5 del
                                   ;banco 0 y su registro de configuración
                                   ;la dirección 5 del banco 1
PUERTAB EQU      0x06              ;La PUERTAB ocupa la dirección 6 del 
                                   ;banco 0 y su registro de configuración
                                   ;la dirección 6 del banco 1
                        
;PROGRAMA PRINCIPAL
        
       	ORG      0                 ;El programa comienza en la dirección 0 y
        goto    INICIO             ;salta a la dirección 5 para sobrepasar el 
        ORG      5                 ;vector de interrupción
         
INICIO  bsf     ESTADO,5           ;Selección del banco 1
        movlw   0xFF               ;Se configura la PUERTAA como
        movwf   PUERTAA            ;entrada
        clrf    PUERTAB            ;Se configura la PUERTAB como salida
        bcf     ESTADO,5           ;Selección del banco 0
        clrf    PUERTAA            ;Se inicializan las dos puertas a
        clrf    PUERTAB            ;ceros

BUCLE   btfss   PUERTAA,0          ;Se explora el valor del microrruptor que indica si la
                                   ;alarma está o no conectada
        goto    DESCON             ;Si esta desconectada, habrá que desactivar los LED
                                   ;y el zumbador por si estaban activados de una
                                   ;anterior pasada por el bucle
        call    SENS1              ;Se comprueba el estado de los tres sensores y se
                                   ;hace el tratamiento que corresponda con los LED
        call    SENS2              
        call    SENS3
        call    ZUMB               ;Si alguno de los sensores está activado, el
                                   ;zumbador deberá pitar; si no, no
		goto    BUCLE             
        
DESCON  clrf    PUERTAB
        goto    BUCLE

;RUTINA DE TRATAMIENTO DEL SENSOR 1

SENS1   btfss   PUERTAA,1          ;Si está a 1, hay que activar el LED
                                   ;correspondiente
        goto    DESACT1            ;Si no, hay que desactivarlo
        goto    ACT1

DESACT1 bcf     PUERTAB,1
        goto    VOLVER1

ACT1    bsf     PUERTAB,1
        goto	 VOLVER1
 
VOLVER1 return

;RUTINA DE TRATAMIENTO DEL SENSOR 2

SENS2   btfss   PUERTAA,2    	   ;Si está a 1, hay que activar el LED
                                   ;correspondiente
      	goto    DESACT2            ;Si no, hay que desactivarlo
       	goto    ACT2 

DESACT2 bcf     PUERTAB,3
      	goto    VOLVER2

ACT2    bsf     PUERTAB,3
      	goto    VOLVER2

VOLVER2 return

;RUTINA DE TRATAMIENTO DEL SENSOR 3

SENS3   btfss   PUERTAA,3          ;Si está a 1, hay que activar el LED
                                   ;correspondiente
       	goto    DESACT3            ;Si no, hay que desactivarlo
       	goto    ACT3

DESACT3 bcf     PUERTAB,5
       	goto    VOLVER3

ACT3    bsf     PUERTAB,5
        goto    VOLVER3

VOLVER3 return
                   
;RUTINA DE TRATAMIENTO DEL ZUMBADOR

ZUMB    movf    PUERTAA,W  
       	andlw   b'00001110'        ;Con esta mascara, se consigue que sobre W quede
                                   ;sólo el valor de los sensores. Si ninguno está
                                   ;activo, W contendrá 0 y el flag Z se pondrá a 1.
      	btfss   ESTADO,Z           ;Si está a 1, hay que desactivar el zumbador
		goto    ACTZ               ;Si no, hay que activarlo
       	goto    DESACTZ

DESACTZ bcf     PUERTAB,0
        goto    VOLVERZ

ACTZ    bsf     PUERTAB,0
        goto    VOLVERZ

VOLVERZ return

	END
```


----------



## Moyano Jonathan (Dic 21, 2008)

Dj draco me parece que tendrías que hacer un driagrama de flujo de la alarma para entender lo que va a  hacer  tu programa y luego te ponés a desarrollar tu codigo.


----------



## fran_14 (Mar 29, 2009)

muy bueno el tema 
apenas me esty metiendo con los pics, especialmente el 84a
me intereso mucho la alarma de temporizaciones de pepe,
si es popsible el diagrama junto cn los archivos para grabarlo
mcuhas gracias


----------



## DJ DRACO (Jun 7, 2009)

Al fin tengo el PIC16F84A, lo coloqué en la interface y el winpic lo reconoce! ! !
Ya tengo casi terminado un circuito y también un diagrama de flujo.
Pronto tendré que comenzar a compilar.

Para eso me estoy ayudando con el tutorial del PIC16F84A y en base al mismo aprendo sobre varios PIC's.

tambien toy leyendo un tutorial sobre programación en C+ y obviamente tengo el Programa PICC (que me parece buenisimo)

Sin mencionar los compiladores de Eclip-se el Eclip-se y el Enigma.  Dos aportes tremendos en lo q refiere a programación e interfaces.

saludos a todos.


----------



## GloW_iNg (Jun 13, 2009)

Hola, primero decir que estoi introduciendome poco a poco en el mundo de los PICs, y que me fascina.

Yo tengo en mente varios proyectos, uno de ellos una alarma.

Mi idea es la siguiente:

Como todos sabeis, cada sensor estara a bastante distancia de la central, luego necesitaremos grandes tiradas de cables, los cuales tienen sus inconvenientes (Caidas de tension, Instalacion, saboteos...). Mi idea seria de conseguir que alguno o todos los sensores se comunicaran con la central por medio de RadioFrecuencia. Ya se que esto supondria que cada sensor dispondriera de un circuito integrado, con un pic y un emisor de RF, pero creo que mereceria la pena.

Bueno a lo dicho, adjunto varios Links que encontre sobre "Comunicacion entre PICs por RF":

http://www.ucontrol.com.ar/wiki/index.php/Comunicación_inalámbrica_entre_PICs
http://micros.mforos.com/1149902/6829041-introduccion-a-la-radio-frecuencia-con-modulos-de-laipac/



Bueno Saludos! y espero que mi idea sirva de algo..


----------

