10 148
modifications
{{solution|contenu=
Le schéma indique que l'appui d'une touche fait un contact entre un fil horizontal et un fil vertical. On met alors tous les fils verticaux à 0 (3 bits de poids faible du '''PORTB''') et on cherche sur quelle touche on a appuyé en cherchant où est le 0 ? Cela nous donnera un colonne.
<u>'''Question 1'''</u> :
<source lang="c">
// question 1 TD8
char ch;
TRISB=0x07;
ch=PORTB & 0xO7; // on ne garde que les bits interessants
switch (ch) {
case 3 : return 0;//a gauche
}
</source>
<u>'''Question 2'''<u/> : On met alors tous les fils horizontaux à 0 (4 bits p6...p3 du '''PORTB''') et on cherche sur quelle touche on a appuyé en cherchant où est le 0 ? Cela nous donnera la ligne.
<source lang="c">
// #define NOTAKEY 127
// ligne 0 en bas
char lecture_ligne(){
char ch;
TRISB=0x78; // 0111 1000
ch=PORTB & 0x78; // on ne garde que les bits interessants
switch (ch) {
case
case
case
case
// si autre cas pas de touche ou deux touches
default : return NOTAKEY;
|