Bonjour tout monde !
Je dois faire un programme en TP de génie électrique, permettant de contrôler une alarme protégeant deux pièces. Pour le TP, la programmation se limite au déclenchement, la détection n'est pas prise en compte et est centralisé par un bouton ^^.
Je vous montre mon code en basic:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 byte porta at $1000 byte memzone at $03ff byte ddra at $1001 ddra=%10110000 #define "detectzone1" poarta.0 #define "detectzone2" poarta.1 #define "raz" poarta.3 #define "visuzone1" poarta.4 #define "visuzone2" poarta.5 #define "alarme" poarta.7 #define "memzone1" memzone.0 #define "memzone2" memzone.1 DO IF detectzone1=1 THEN memzone1=1 IF detectzone2=1 THEN memzone2=1 END IF IF memzone=%00000011 THEN porta=%10110000 IF memzone=%00000001 THEN porta=%10010000 IF memzone=%00000010 THEN porta=%10100000 END IF IF alarme=1 AND raz=1 THEN memzone=0 END IF LOOP
Bon maintenant je vous explique un peu le fonctionnement:
- Si detectzone1 s'active, le programme met en mémoire l'intrusion dans memzone1
- Si detectzone2 s'active, le programme met en mémoire l'intrusion dans
- Ensuite le programme recherche toute les cas de figure de memzone en mot binaire. Par exemple si la zone 1 subis une intrusion, alors l'alarme se met en route et le voyant visuzone1 s'allume ceci avec un mot binaire inscrit par le programme dans le porta.
- Et pour finir si l'alarme est allumée et que l'utilisateur appui sur le bouton raz, alors le programme efface memzone et tout s'éteint jusqu'à la prochaine intrusion.
Mon problème vient de l'inscription dans le porta des actions à effectuer. Ici, j'ai pu me permettre de faire tout les cas manuellement, mais admettons que j'ai 10 salles à contrôler... (c'est ce que mon prof m'a dit, sinon je n'y aurais pas pensé ^^)
Alors est-ce que quelqu'un pourrait m'aider pour simplifier au maximum le code. Sachant que pour chaque zone, il y a un voyant différent;
Si je n'est pas été assez clair, n'hésitez pas à me demander.
Merci d'avance à tout ceux qui pourront répondre.
Partager