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

x86 16-bits Assembleur Discussion :

[emu8086] Aide dans projet moteur pas à pas


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 81
    Points : 54
    Points
    54
    Par défaut [emu8086] Aide dans projet moteur pas à pas
    Bonjour,
    J'ai choisit un tel titre car je suis presque sûr que je poserai d'autres questions à fur et à mesure que j'avance dans mon projet, donc je rassembles mes questions dans une même discussion.
    Mon projet est un moteur pas à pas qui fonctionne comme suit:
    Il possède "trois entrées":
    "D" : rotation dans le sens directe; "I": rotation sens inverse et "S" pour dire stop.
    Une fois que le programme commence, on dois taper "D", "I" pour choisir le sens de rotation, ensuite le programme doit attendre 10 secondes pour que l'utilisateur tape le nombre de tour car sinon, après 10 secondes sans rien entrer, le moteur commencera à tourner dans le sens choisit jusqu'à taper "S", dans l'autre cas (si l'utilisateur donne le nombre de tour) il fait ce nombre puis il stoppe (mais si l'utilisateur tape "S" pendant ce cycle, le moteur doit stopper immédiatement).
    J'ai commencer par deviser mon travail sur plusieurs procédures, mais j'ai une question que j'ai pas trouver une réponse avant de commencer: comment faire pour que le programme attend pour 10 secondes pour avoir une entrée? (s'il aura une entrée in jumpera à une procédure, sinon il jumpera à la procédure pour tourner jusqu'à entrer un "S")

    Merci et à bientôt.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 374
    Points : 23 632
    Points
    23 632
    Par défaut
    Citation Envoyé par marouane87 Voir le message
    comment faire pour que le programme attend pour 10 secondes pour avoir une entrée? (s'il aura une entrée in jumpera à une procédure, sinon il jumpera à la procédure pour tourner jusqu'à entrer un "S")
    Bonjour,

    • Sur quelle machine ?
    • Avec quel micro-processeur ?
    • Le cas échéant, avec quel système d'exploitation ?


    À bientôt.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Je m'excuse, j'ai oublié de le dire, c'est un projet sous emu8086 (sous windows) et le résultat sera visible en utilisant l'instrument virtuel moteur pas à pas.
    Merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 374
    Points : 23 632
    Points
    23 632
    Par défaut
    Ok, donc tu utilises un 8086 virtuel dans un environnement qui l'est tout autant. Après une brève recherche, j'ai trouvé ceci :



    Ça veut dire que ton environnement émule certaines fonctions du BIOS et du DOS, sans garantie de fonctionnement, d'ailleurs. Parmi elles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INT 15h / AH = 86h - BIOS wait function.
    Elle te permet de faire une pause d'une durée déterminée, mais la fonction ne te rend pas la main dans l'intervalle, et ne fonctionnera probablement pas si l'on en croit les notes associées.

    Une autre manière de faire est de consulter l'horloge système via le D.O.S. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INT 21h / AH=2Ch - get system time;
    et de le faire tant que tu attends une entrée au clavier. Dès que l'écart entre la première lecture et la lecture courante dépasse dix secondes, tu sautes vers la routine concernée.

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Merci pour la réponse, mais là, je cois qu'il y a un petit problème, dans emu8086, on exécute les commandes une par une, donc comment faire pour qu'il attends une entrée (normalement par int21/ ah=2) et récupérer l'heure du système et faire le calcul des secondes en même temps?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 374
    Points : 23 632
    Points
    23 632
    Par défaut
    Il n'y a pas de manière simple de le faire, sauf si ton environnement te propose une minuterie (un module timer). Il faut que tu exploites les fonctions D.O.S. pour vérifier s'il y a ou non des caractères en attente dans le buffer et, le cas échéant, aller les lire.

  7. #7
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Tu peux quand-même utiliser l'interruption 15 du BIOS
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    début boucle
      attente de 1/10eme de seconde
      si touche dans tampon clavier -> gérer la touche
    boucler 100 fois
    Bon, c'est pas super précis au niveau timing mais dans ton cas ça ne doit
    pas être trop gênant

    a+ François

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Salut,
    Obsidian, je suis encore débutant dans l'assembleur, donc je m'excuse mais j'ai pas compris ce que tu voulais dire
    Forthman, c'est une solution pratique pour moi puisque nous venons de débuter

    Merci tout le monde pour votre aide et à bientôt
    (Je vais pas marquer la discussion comme résolue pour le moment car peut être que j'aurai besoin d'aide le long de mon projet, mais une fois que je le termine je le ferai )

  9. #9
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    En fait la programmation de moteurs PAP je suis en plein dedans en ce moment
    car je suis en train d'automatiser une table de découpe plasma

    Le moins évident ce sont les courbes d'accélération/décélération surtout quand
    la charge déplacée est variable

    a+ François

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 81
    Points : 54
    Points
    54
    Par défaut
    Salut,
    J'ai terminé mon projet, merci pour votre aide et comme promis, je le signal comme résolu

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

Discussions similaires

  1. Projet JSP to WAR et import dans Apache ne fonctionne pas
    Par mattrixx dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 08/02/2012, 16h54
  2. Réponses: 0
    Dernier message: 10/09/2010, 09h13
  3. Pas d'aide dans delphi
    Par scumlol dans le forum Delphi
    Réponses: 8
    Dernier message: 27/04/2007, 11h51
  4. Réponses: 3
    Dernier message: 26/01/2006, 13h11
  5. Réponses: 27
    Dernier message: 25/08/2004, 22h30

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