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

Assembleur Discussion :

Faire clignoter des LED paires LED impaires


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Faire clignoter des LED paires LED impaires
    Bonsoir , je veux faire un programme qui Clignoter des LED paires si on appui sur sw0 et les LED impaires si on appuie sur sw1, il y a des choses dans la correction qu j'ai pas compris:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Code SEGMENT
    Assume CS :code , DS :donnee
    Prog Proc
    MOV AX,donnee          ; pointer le data segment
    MOV DS,AX
    MOV AL,Mot_com        ; configurer  les ports en sorties
    OUT  Reg_com,AL
    DEBUT: IN AL,PortC
    AND AL,03H
    CMP AL,01
    JZ Diode_paire          ; si SW=1 alors battement paire
    CMP AL,02
    JZ Diode_impaire       ; si SW=1 alors battement impaire
    JMP DEBUT
    Diode_paire : MOV AL,05H          ; Battement des diodes paire
    OUT PortA,AL
    CALL Tempo                ; Temporisation
    MOV AL,00H
    OUT PortA,AL
    CALL Tempo         ; Temporisation
    JMP DEBUT
    Diode_impaire : MOV AL,0AH         ; Battement des diodes impaire
    OUT PortA,AL
    CALL Tempo             ; Temporisation
    MOV AL,00H
    OUT PortA,AL
    CALL Tempo                ; Temporisation
    JMP DEBUT 
    MOV AX,4C00H 
    INT 21H
    Prog endp
    Tempo : MOV CX,7FFFH         ; Effectuer une temporisation
    Temp1: PUSh CX           ; avec deux boucles imbriqués
    MOV CX,7FFFH
    Temp2: NOP 
    NOP 
    NOP 
    NOP
    LOOP Temp2
    POP CX 
    LOOP Temp1
    RET 
    Code ends 
    End prog
    j'ai pas compris pourquoi il fait:
    1) AND Al,03h ; pourquoi ???
    2) mov al,05h; j'ai pas ccompris
    3)mov al,0Ah; pourquoi??

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Et on ne sait pas réfléchir ?
    Franchement impossible de répondre a tes questions sans connaître la doc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOV AL,0AH         ; Battement des diodes impaire
    OUT PortA,AL
    La valeur est complètement arbitraire , et a mon avis il faut voir du coter du Port A pour savoir ce que cela fait et a quoi correspond 0x0A dans le Port A.
    Pareil pour MOV AL,05
    Et pour AND AL,03H , tout simplement que les autre bit doivent indiquer autre chose , il faut voir ce que fait le Port C , mais dans le code seul les 2 bits l’intéresse.

    Bref en gros va lire la doc sauf si tu es devin

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Nom : Capturee.JPG
Affichages : 1551
Taille : 72,6 Ko
    voici l'énoncé de l'exercice , on s'intéresse juste pour port A et port C

  4. #4
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Je te laisse regarder comment s'écrivent 05h et 0Ah en binaire, et regarder sur ton schéma quelles broches vont recevoir du courant (ça devrait pas être trop difficile, même en étant une quiche en électronique comme moi )
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    les broches qui vont recoivent du courant sont PC0 et PC1, j'ai pas trouvé la relation entre PC0, PC1 et 05H,0AH ????

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par asma ch Voir le message
    les broches qui vont recoivent du courant sont PC0 et PC1, j'ai pas trouvé la relation entre PC0, PC1 et 05H,0AH ????
    Ben il y en a aucune ,Je n'ai aucune connaissance en électronique mais a vu de nez , je dirait que PC0 et PC1 veut dire Port C , pourquoi tu nous parle du Port A ?
    Mais en tout cas tu as ta réponse pour le AND 03h , on ne lit que PC0 et PC1 qui sont eux des boutons.
    Je te rappel au cas ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOV AL,0AH         ; Battement des diodes impaire
    OUT PortA,AL
    ça veut dire en gros que t'envoie 0AH dans le Port A (pareil pour 05H).
    Pour 05h et 0Ah comme l'a dit supernail , regarde tout simplement leur valeur en binaire et tu verra ce que fait le port A.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    ah bien j'ai compris 0AH et 05H mais j'ai pas compris AND 03H ????

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Dans ton code je rappel on fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DEBUT: IN AL,PortC
    AND AL,03H
    On lit le Port C (donc les boutons) , et on fait un & de 03H , donc cela fait un mask sur les 2 bits ( on gros on veut que lire PC0 et PC1) , c'est sûrement au cas ou si on rajoute des entrées dans le Port C , le code sera toujours valide.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    ah bien j'ai compris maintenant merci bien pour votre aide

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 450
    Points : 43 092
    Points
    43 092
    Par défaut
    Ce qu'il faut comprendre :
    PA0 à PA7 correspondent à 8 fils au niveau électronique, 8 bits au niveau informatique.

    Pour allumer la LED la plus en haut, il faut allumer la broche PA0, donc envoyer 00000001 en binaire à PA.
    Pour allumer les 3 LED les plus en haut PA=00000111 soit 3.

    Les ports PA4à7 sont câblés sur on ne sait pas quoi.

    Il faudrait en théorie récupérer la valeur de PA, puis modifier les bits concernant les LED pour les allumer ou les éteindre. On pourra utiliser or pour forcer des bits à 1 et and pour forcer des bits à 0 (masquer des bits). Si PA7 à PA4 ne sont pas utilisés, leur valeur importe peu. Le mieux étant de les mettre à 0 car 0=pas de courant.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Ce qu'il faut comprendre :
    PA0 à PA7 correspondent à 8 fils au niveau électronique, 8 bits au niveau informatique.

    Pour allumer la LED la plus en haut, il faut allumer la broche PA0, donc envoyer 00000001 en binaire à PA.
    Pour allumer les 3 LED les plus en haut PA=00000111 soit 3.

    Les ports PA4à7 sont câblés sur on ne sait pas quoi.

    Il faudrait en théorie récupérer la valeur de PA, puis modifier les bits concernant les LED pour les allumer ou les éteindre. On pourra utiliser or pour forcer des bits à 1 et and pour forcer des bits à 0 (masquer des bits). Si PA7 à PA4 ne sont pas utilisés, leur valeur importe peu. Le mieux étant de les mettre à 0 car 0=pas de courant.
    merci beaucoup pour votre aide

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    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 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Citation Envoyé par Kannagi Voir le message
    On lit le Port C (donc les boutons) , et on fait un & de 03H , donc cela fait un mask sur les 2 bits ( on gros on veut que lire PC0 et PC1) , c'est sûrement au cas ou si on rajoute des entrées dans le Port C , le code sera toujours valide.
    En effet mais pas seulement : l'état d'une broche en entrée et laissée à l'air libre est considéré comme indéterminé : ça dépend de la technologie utilisée pour faire le relevé. Ça peut être sensible aux perturbations radio si c'est la base d'un FET, comme totalement insensible si c'est un transistor bipolaire avec une résistance de pull up ou down. Avec du TTL, une entrée en l'air vaut généralement 1.

    En plus, comme on ne connaît pas la configuration des ports, il se peut également que certaines broches d'un même port soient configurées en sortie, auquel cas leur valeur dépendra soit de ce que le programmeur y a écrit, soit de leur état initial à la mise sous tension, soit d'autre chose encore, en fonction des spécifications, si le circuit n'est pas conçu pour renvoyer l'état de la ligne quand on lit le registre concerné.

    Citation Envoyé par chrtophe Voir le message
    Ce qu'il faut comprendre :
    PA0 à PA7 correspondent à 8 fils au niveau électronique, 8 bits au niveau informatique.

    Pour allumer la LED la plus en haut, il faut allumer la broche PA0, donc envoyer 00000001 en binaire à PA.
    Pour allumer les 3 LED les plus en haut PA=00000111 soit 3.
    Attention : « 111 » en binaire ne vaut pas 3, mais 7. Par ailleurs, ce n'est pas l'exercice demandé, dans lequel on ne demande d'allumer que deux LEDs par bouton. Soit les LEDs 0 et 2, soit les LEDs 1 et 3.

    Il faudrait en théorie récupérer la valeur de PA, puis modifier les bits concernant les LED pour les allumer ou les éteindre. On pourra utiliser or pour forcer des bits à 1 et and pour forcer des bits à 0 (masquer des bits). Si PA7 à PA4 ne sont pas utilisés, leur valeur importe peu. Le mieux étant de les mettre à 0 car 0=pas de courant.
    Dans le cas présent oui, mais ce n'est pas forcément mieux dans tous les cas : à part dans le cas des collecteurs ouverts, une broche à zéro est en principe reliée à la masse et une broche à un à l'alimentation du circuit. Donc, une broche a zéro est tout aussi à même de provoquer un court-circuit qu'une broche à un (à prendre en compte quand on veut faire du OU câblé). En plus, certains montages utilisent ce fait pour effectuer une complémentation à peu de frais : c'est la cathode de la diode qui est reliée au port, et l'autre broche est reliée à l'alimentation générale plutôt qu'à sa masse. Du coup, la diode s'allume quand la broche est à zéro et s'éteint quand elle est à un.

  13. #13
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 450
    Points : 43 092
    Points
    43 092
    Par défaut
    Attention : « 111 » en binaire ne vaut pas 3, mais 7. Par ailleurs, ce n'est pas l'exercice demandé, dans lequel on ne demande d'allumer que deux LEDs par bouton. Soit les LEDs 0 et 2, soit les LEDs 1 et 3.
    Je confirme, c'est 7.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  14. #14
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    En effet mais pas seulement : l'état d'une broche en entrée et laissée à l'air libre est considéré comme indéterminé : ça dépend de la technologie utilisée pour faire le relevé. Ça peut être sensible aux perturbations radio si c'est la base d'un FET, comme totalement insensible si c'est un transistor bipolaire avec une résistance de pull up ou down. Avec du TTL, une entrée en l'air vaut généralement 1.
    Merci de cette précision , j’allais justement dire que les valeurs pouvait être indéterminé mais je n'était pas sur je ne savais pas d'un point de vue 'physique' quand un registre est indéterminé ou pas.

  15. #15
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 450
    Points : 43 092
    Points
    43 092
    Par défaut
    En effet mais pas seulement : l'état d'une broche en entrée et laissée à l'air libre est considéré comme indéterminé : ça dépend de la technologie utilisée pour faire le relevé. Ça peut être sensible aux perturbations radio si c'est la base d'un FET, comme totalement insensible si c'est un transistor bipolaire avec une résistance de pull up ou down. Avec du TTL, une entrée en l'air vaut généralement 1.
    Je n'ai pas fait assez d'électronique. Mais je pense que doc du composant le précise.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  16. #16
    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
    C'est plutôt la carte qui va donner l'info, j'ai même des cartes avec un switch qui permet de sélectionner l'état par défaut ON ou OFF
    après il peut même y avoir une partie logicielle dans la puce (pas pour le 8255 qui date car il était présent sur mon Hector HRX )
    qui permet d'inverser l'état des bits en lecture

    En tout cas, de la doc de 8255 il y en a partout

Discussions similaires

  1. Faire clignoter des cellules excel
    Par miromas dans le forum Excel
    Réponses: 18
    Dernier message: 08/04/2016, 09h23
  2. [XL-2010] faire clignoter des cellules lorsqu'elles dépassent la valeur de 5%
    Par tucherchestutrouves dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/11/2015, 17h37
  3. [Débutant] faire clignoter des radiobutton apres avoir agit sur un button
    Par Lunick90 dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/09/2012, 17h34
  4. Faire clignoter des zones de texte
    Par FCL31 dans le forum IHM
    Réponses: 4
    Dernier message: 20/08/2007, 11h36
  5. [VB.NET] Débutant / Faire clignoter des carrés.
    Par djmcg dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/01/2005, 19h36

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