'  Exemple de programme pour simuler l'ouverture du portail en BASIC11 (basic compilé)
'  démo HB du 09/12/1998 

' LES ENTREES SORTIES SUR LA CARTE CONTROLBOY
' Les entrées :
' PORT A bit 0 : fdfer
' PORT A bit 1 : fdouv
'
' Les sorties :
' PORT B bit 0 : commande RE1 (sens Ouverture = 0 / fermeture =1)
' PORT B bit 1 : commande RE3 (alimentation moteur)


' Fichier de config E/S
#include "start.bas"

' Déclaration des variables 

BYTE X(2)     ' Déclaration du tableau  des étapes 0 à 1
BYTE fdouv    ' Déclaration variable associée au capteur fin d'ouverture
BYTE commande ' Déclaration variable associée à la télécommande (simulé  par bouton poussoir)
BYTE arreter_moteur, ouvrir_portail ' variables associées aux sorties (actions)

' Initialisation

X(0) = 1
X(1) = 0
PORTB = 0 ' Arrêt moteur

 DDRD  = 0			' PD5=PD4=PD3=PD2=input
 SCONF = 0x4C			' B,C = sorties
 lcdinit()

print " GRAFCET OUVRIR "

' PROGRAMME PRINCIPAL

DO       ' début de la boucle

' Lecture des entrées

 LDAA PORTD      ' Lecture interrupteur sur carte Controlboy   
 ANDA #32            ' MASQUAGE
 EORA #32            ' inversion du bit car 
 STAA commande   ' Interrupteur carte actif niveau 0

 LDAA PORTA     ' Lecture capteur fdouv (fin ouverture)
 ANDA #2             ' bit1 = 1 si non actif 
 EORA #2             ' Inversion bit
 STAA fdouv       





' Mise à jour des étapes

IF commande > 0  AND X(0) = 1 then 
     X(1) = 1
     X(0) = 0
END IF

IF fdouv > 0 AND X(1) = 1 THEN
    X(0) = 1
    X(1) = 0
END IF

 ' Equation des sorties
ouvrir_portail = X(1)
arreter_moteur = X(0)

' Affectation des sorties 

IF ouvrir_portail = 1 THEN
    PORTB = 2 ' Activation du relais RE3 de l'alimentation moteur . 
              ' Par défaut RE1 est ouvert (sens ouverture)
END IF

IF arreter_moteur = 1 THEN
    PORTB = 0 ' Arrêter le moteur (RE3 désactivé)
END IF

LOOP   ' Reboucler vers DO

#include "lcd.bas"

' FIN DU PROGRAMME BASIC11 
