;EMETTEUR BARRIERE
;Départ ou Arrivée par sélecteur
;Cellule sur Entrées C.0, C.1 ,C.2
;MM 06/03/2014
;
;les capteurs barrière sont sur C.0, C.1, C.2 sur interruption
;La barrière est "depart" ou "arrivée" en ft de l'inverseur B.2. Départ si B.2=1
;Sur une barrière "Départ", le poussoir "alternate" envoie un code "Arrivée" et inversement.
;Commut DepAriv: 1=Départ ; 0=Arrivée
#picaxe 14M2
dirsB= %111000
symbol poussoir= pinC.4 ;poussoir code alternatif
symbol RAZ =pinC.3 ;poussoir code RAZ
symbol DepAriv=pinB.2 ;Inverseur barrière Départ/Arrivée
symbol RF=B.1 ;Emetteur Radio
pullup %0001111100000100 ;Pullup sur B2, C.0, C;1, C.2, C.3, C.4
setint OR %000,%111 ;interrupt sur C.0 ou C.1 ou C.2 Niveau bas
pwmout B.4, 25, 53 ;PWM 38k
Do
if RAZ=0 then
rfout RF,("Z","Z","Z","Z","Z","Z","Z","Z")
high B.3 ; passage barrière
pause 500
low B.3
elseif poussoir=0 then
If DepAriv=1 then
rfout RF,("A","A","A","A","A","A","A","A") ;si départ=1, le poussoir envoie "Arrivée"
else
rfout RF,("D","D","D","D","D","D","D","D") ;sinon, il envoie "Départ"
endif
high B.3 ; passage barrière
pause 500
low B.3
endif
loop ;attente interrupt
interrupt:
if DepAriv=1 then
rfout RF,("D","D","D","D","D","D","D","D") ;si "depart"=1, l'interrupt envoie "depart"
else
rfout RF,("A","A","A","A","A","A","A","A") ;sinon, l'interrupt envoie "arrivée"
endif
high B.3 ; témoin passage barrière
pause 500
low B.3
setint OR %000,%111
return