IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Basic Discussion :

[Basic 11] Programmer une alarme avec le 68HC11F1 (Tp de génie électrique)


Sujet :

Basic

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Basic 11] Programmer une alarme avec le 68HC11F1 (Tp de génie électrique)
    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.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ton "Basic" n'as t'il pas des fonctions OR ... ou AND .. .te permettant d'agir sur un bit d'un mot ... sans toucher au autre...?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Selon mon prof, on peut utiliser les AND, OR et compagnie que dans les conditions. Après le THEN on ne peut plus. C'est bien embêtant d'ailleurs !

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Gmalin
    Selon mon prof, on peut utiliser les AND, OR et compagnie que dans les conditions. Après le THEN on ne peut plus. C'est bien embêtant d'ailleurs !
    tu est sur de cela ...? ..


    bon tu peu aussi agir directement sur un bit ...:

    style :

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    C'est bon mon problème est résolu !
    Il faut juste multiplier par 16 les bits de memzone, d'où le code suivant:
    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" porta.0
    #define "detectzone2" porta.1
    #define "raz" poarta.3
    #define "alarme" porta.7
     
    #define "memzone1" memzone.0
    #define "memzone2" memzone.1
     
    DO
      IF detectzone1=1 THEN memzone1=1
      IF detectzone2=1 THEN memzone2=1
      IF memzone!=0 then
             porta=memzone*16
             alarme=1
      END IF
     
      IF raz=1 then
             alarme=0
             memzone=0
             DO UNTIL raz=0
             LOOP
      END IF
    LOOP
    Merci quand même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Access: programmer une interface avec vba
    Par renardchan dans le forum IHM
    Réponses: 3
    Dernier message: 21/10/2010, 09h30
  2. programmer une alarme muette en java
    Par napster007 dans le forum Général Java
    Réponses: 1
    Dernier message: 27/05/2009, 16h50
  3. Réponses: 5
    Dernier message: 23/03/2009, 13h39
  4. Programmer une sauvegarde avec Oracle EM 10g
    Par Nelson08 dans le forum Oracle
    Réponses: 0
    Dernier message: 25/02/2008, 16h35
  5. Bien programmer une classe avec sa gestion d'erreur
    Par chris81 dans le forum Framework .NET
    Réponses: 8
    Dernier message: 13/02/2007, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo