c vraique ce que fait rowread n'est pas evident au debut
regarde dans ta boites t'as les dernieres sources...
unsigned char _rowread (short Masque) _rowread permet de lire le clavier "à bas niveau", ce qui correspond à lire le câblage de celui-ci. En effet, le clavier n'est rien de plus qu'une matrice de fils, organisés en lignes et en colonnes, les intersections de fils correspondant chacune à une touche. Avec cette fonction, il vous faut préciser une ligne à "analyser", et elle vous renverra les valeurs des touches sur la ligne correspondante. Paramètres short Masque valeur codée sur deux octets, de type entier, qui correspond au masque d'une ligne, permettant de déterminer la ligne que vous souhaitez "lire". Retour unsigned char valeur entière non signée, codée sur 1 octet. Matrice clavier sur TI-89 : | COLONNES +------+----------------------------------------------------------------------- | BITS | 7 6 5 4 3 2 1 0 --+------+----------------------------------------------------------------------- L | 0 | alpha Diamond Shift 2nd Right Down Left Up I | 1 | F5 CLEAR ^ / * - + ENTER G | 2 | F4 BckSpc T , 9 6 3 (-) N | 3 | F3 CATLG Z ) 8 5 2 . E | 4 | F2 MODE Y ( 7 4 1 0 S | 5 | F1 HOME X = | EE STO APPS | 6 | ESC Matrice clavier sur TI-92+ : | COLONNES +------+----------------------------------------------------------------------- | BITS | 7 6 5 4 3 2 1 0 --+------+----------------------------------------------------------------------- | 0 | Down Right Up Left Hand Shift Diamond 2nd | 1 | 3 2 1 F8 W S Z L | 2 | 6 5 4 F3 E D X I | 3 | 9 8 7 F7 R F C STO G | 4 | , ) ( F2 T G V Space N | 5 | TAN COS SIN F6 Y H B / E | 6 | P ENTER2 LN F1 U J N ^ S | 7 | * APPS CLEAR F5 I K M = | 8 | ESC MODE + O L Theta BckSpc | 9 | (-) . 0 F4 Q A ENTER1 - ENTER2 est la touche "ENTER" localisée près du curseur multidirectionnel. ENTER1 correspond aux deux autres. Pour détecter si une touche est ou non pressé, procédez de la manière suivante : 1) repérer la ligne sur laquelle la touche est située, en partant du bas, puis placer un '0' dans la suite de bits (tous à un) correspondante. Par exemple, sur TI-89, pour lire la touche [9], il vous faudra utiliser comme masque ceci : 0b1111011 2) repérer la colonne sur laquelle la touche est située, en partant de la gauche, puis placer un '1' dans la suite de bits (tous à zéro) correspondante. Pour continuer avec notre exemple, la colonne sur laquelle la touche [9] est situé aura pour valeur (masque) ceci : 0b00001000 3) lire la touche. Pour cela, il faut utiliser la fonction _rowread de la façon suivante : _rowread(masque_ligne) & masque_colonne Ainsi, en conservant notre exemple, il faudra utiliser : _rowread(0b1111011) & 0b00001000 4) la valeur retournée par la fonction _rowread sera différente de 0 si la touche était pressée au moment où la lecture est effectuée. Cette fonction sera donc quasiment toujours utilisée dans des boucles conditionnelles. Remarque : La désactivation des interruptions automatiques n°1 et n°5 est particulièrement recommandée pour cette fonction. Pour information, ces désactivations permettent de gagner jusqu'à 50% de vitesse dans l'exécution de certains programmes ! Celà dit, préférez le détournement à la désactivation, si votre programme affiche en niveaux de gris. Détournez toujours ces interruptions automatiques avant l'activation des niveaux de gris.
squale92
a écrit : Thibaut> le texte que tu as posté me dit quelque chose
Bob 64 a écrit :
Attention : Pour savoir si une touche est relachée, il faut utiliser if(!(_rowread(0x00)&0x00)) au lieu de if(!_rowread(0x00)&0x00)
T'est passé sur le forum plusieurs fois depuis que j'ai posté ce truc...