--************************************************************************
--****** Programme POULE2 -Ouverture crépusculaire du poulailler ********
--***************************************Michel MORICE 16 juillet 2020****
include 12f675
pragma target clock 4_000_000
pragma target OSC INTOSC_NOCLKOUT -- horloge interne à 4 MHz
pragma target MCLR internal -- make MCLR pin A3 available as I/O
pragma target WDT disabled
--conditionnement du PIC
ANSEL = 0b_0000_0011 --ports 0 et 1 en analogique, entrées du comparateur
TRISIO = 0b_0000_1011 --ports 0, 1, 3 en input, 2, 4 et 5 en output
CMCON = 0b_0000_0001 --comparateur + en 0, - en 1, sortie en 2
PIE1 = 0b_0000_1000 --comparateur enable bit
INTCON = 0b_1100_0000 --global interrupt et peripheral interrupt
--paramétrage des portes
alias COMPS is pin_A2 --sortie du comparateur
alias ILS is pin_A3 --ILS contrôlant la fermeture de porte
alias OUVRE is pin_A4 --commande l'ouverture
alias FERME is pin_A5 --commande la fermeture
--paramétrage général
--ON OFF TRUE FALSE définis par include 12f675 et constants_jallib
const dword seconde = 1_000_000
const bit OUVERTE = ON
const bit FERMEE = OFF
var bit changeLum = FALSE
--***************************************************************
--****************************************************************
procedure changeLuminosite() is pragma INTERRUPT
if PIR1_CMIF then --changement de luminosité détecté
changeLum = TRUE
end if
end procedure
--****************************************************************
--programme principal
forever loop
if changeLum then
PIR1_CMIF = OFF
INTCON_GIE = OFF
OUVRE = ON
_usec_delay(seconde * 3)
OUVRE = OFF
end if
INTCON_GIE = ON
changeLum = FALSE
end loop