' 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