Bienvenue !
cool Bienvenue les fans de PIC !
(aux fans du langage Pascal aussi !)
Technique

Fermer Astuces

Fermer Comment supporter PMP

Fermer Documentation générale

Fermer Manuels

Autres trucs

Fermer Comment supporter PMP

Fermer Coup de coeur du jour

Fermer Documentation

Fermer Hors sujet

Recherche




Téléchargements
Astuces - Comment vérifier qu'un seul bouton est appuyé ?

L'objectif :

Si plusieurs boutons-poussoirs sont connectés, disons sur PORTA, quelle est la méthode la plus efficace de tester qu'un seul bouton est actionné à la fois ?

Voici une suggestion en assembleur (un extrait de code fourni par Scott Dattalo):

     MOVF  PORTA,W
     ANDLW BUTTON_MASK
     SKPNZ 
     return       ; No buttons are pressed

     MOVWF temp   ; Clear one bit by using x &(x-1)
     ADDLW 0xff   ; W=PORTA-1
     ANDWF temp,W ; W=PORTA&(PORTA-1)
     SKPZ 
     return       ; More than one button is pressed 

     ; temp holds the one and only button press

Génial non ?

Et voici l'équivalent Pascal tout prêt :

Temp := PORTA and BUTTON_MASK;
if Temp = 0 then exit; // exit if no button
if ((Temp - 1) and Temp) <> 0 then exit; // Exit if more than one at once
// Here Temp has the bit of the pressed button.

 


Date de création : 2009.03.27 5:43 PM
Dernière modification : 2013.08.05 11:23 AM
Catégorie : Astuces
Page lue 20616 fois


Imprimer l'article Imprimer l'article


react.gifRéactions à cet article

Personne n'a encore laissé de commentaire.
Soyez donc le premier !


Connexion...
 Liste des membres Membres : 75

Votre pseudo :

Mot de passe :

[ Mot de passe perdu ? ]


[ Devenir membre ]


Membre en ligne :  Membre en ligne :
Anonymes en ligne :  Anonymes en ligne : 11

Total visites Total visites: 1584307  

Record connectés :
Record connectés :Cumulé : 170

Le 01/01/2021 @ 17:50


Webmaster - Infos

Ip : 3.145.108.9

Recherche




Nouvelles des Amis
D'où venez-vous ?

Texte à méditer :  Si ça fonctionne, c'est obsolète.  Marshall McLuhan
^ Haut ^