« Utiliser les PIC 16F et 18F/Exercices/Les ports et le langage C » : différence entre les versions

m
 
{{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.
Question 2 :
<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 0x080x38 : return 0;//en haut = 0011 1000
case 0x100x58 : return 1;// au milieu = 0101 1000
case 0x200x68 : return 2;// au milieu = 0110 1000
case 0x400x70 : return 3;//en bas = 0111 0000
// si autre cas pas de touche ou deux touches
default : return NOTAKEY;
10 144

modifications