En poco les pondre el codigo y el circuito, es que tengo el codigo comentado en catalan , ahora lo paso a castellano, y el circuito realmente no lo he hecho, simplemente he hecho el circuito para imprimir, Ahora lo voy a hacer.
Soy un poco nuevo en esto de los pics, en la facultat estoy programando el 8051 , y un amigo me dejo el libro pic 16f84 que me fue muy bien, ya que yo habia hecho el mismo circuito pero sin utilizar ningun pic, lo hize por hardware con flip flops, puertas nor y esas cosas, pero el circuito ocupaba mucho y decidi probar con los pics.
Bueno en poco tiempo pondre el codigo i el circuito. Gracias
Aki les dejo el codigo comentado
+++++++++++++++++++++++++++++++++++++++
Código:
;CONTROL LUZ HABITACIÓN
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
#DEFINE sensor PORTB,0
#DEFINE sol PORTB,4
#DEFINE microporta PORTB,1
#DEFINE sortida PORTA,0
CBLOCK 0C
estatsensor
estatllum
estatsortida
ENDC
;+++++++codi+++++++
ORG 0
goto inici
ORG 4
goto serviciointerrupcion
inici
bsf STATUS,RP0
bsf sensor
bsf sol
bcf sortida
bsf OPTION_REG,INTEDG ;activamos interrupcion a RB0 por flanco ascendente
ascendent
bcf STATUS,RP0
movlw b'10011000'
movwf INTCON
bcf sortida
;Programa principal
;bucle infinito.
bucle
sleep
goto bucle
;***** servicio interrupcion ****
serviciointerrupcion
btfsc INTCON,RBIF
goto interrsol
goto servsensor
;******** interrupcion sensor****
servsensor
btfss microporta ;si el microswitch de la puerta esta a 1,el estado hace memoria y no vascula
comf estatsensor,1
bcf INTCON,INTF
goto comprovarsortida
;****interrupcio sol**** Compueba que el sensor de luz nos devuelva un 1, si nos devuelve un 0, la salida se apaga.
interrsol
swapf PORTB,0
movwf estatllum
bcf INTCON,RBIF
goto comprovarsortida
comprovarsortida ;Hacemos la and anterior
movf estatllum,0
andwf estatsensor,0
andlw b'00000001'
movwf PORTA
retfie
END
;Para hacer operaciones bit a bit lo que hago es rotat los registros hasta que coincidan los bits i hago las operaciones correspondientes.
;Resumen
;Este programa tiene que controlar la luz de mi habitacion mediante un sensor de infrarojos colocado en la puerta, quando aparezca un flanco ascendente quiere decir que entra o sale alguien, es decir el estado del sensor debera bascular, utilitzo variables intermedias ya que el estado tiene que bascular , pero posteriormente tiene que comprobar que el sensor de luz del sol nos proporcione un 1, ya que sino la luz se tiene que apagar.Y paraq finalizar hay un microswitch en la puerta para que cuando se cierre un poco esta , el sensor no la detecte i por tanto no cambie la salida.
Ahora les dejo el circuito, perdon por el circuito esta hecho con el crocodile , no se utilizar ningun otro programa aparte del pspice, para hacer circuitos, espero que se entienda, Los amplificadores que uso son LM 358. El problema que tengo es que en un principio el rele me hacia ruidos cuando pasaba la mano por delante como si no puediera accionarse del todo, pero ahora directamente el programa no hace nada, y cuando grabo el pic , le doy a verificar y todo sale bien, no entiendo que sucede.
++++++Circuito+++++++++