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

m
m (Robot : Remplacement de texte automatisé (-\b(I|i|Dési|dési)nt[eé]rr?[éeêè](ssements?|sser|ssés?|ssées?|ssants?|ssantes?|as?|ais?|ait|ent)\b +\1ntére\2))
Le schéma indique que l'appui d'une touche fait un contact entre un fil horizontal et un fil vertical.
 
<u>'''Question 1'''</u> : 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 unune colonne.
<source lang="c">
// question 1 TD8
#define NOTAKEY 127
// colonne 01 à gauche
char lecture_colonne(){
char ch;
TRISB=0x070x78; // 0111 1000
chPORTB = PORTB & 0x070x87; // onB3, B4,B5 neet gardeB6 que lesmis bitsà intéressants0
ch = PORTB & 0x07; // on ne garde que les bits intéressants B0, B1 et B2
switch (ch) {
case 37 : return 0;//aaucune gauchetouche
case 53 : return 1;//a au milieugauche
case 65 : return 2;//a droiteau milieu
case 6 : return 3;//a droite
// si autre cas, pasdeux de touchetouches ou deux touchesautre
default : return NOTAKEY;
}
<source lang="c">
// #define NOTAKEY 127
// ligne 01 en haut
char lecture_ligne(){
char ch;
TRISB =0x78 0x07; // 01110000 10000111
chPORTB = PORTB & 0x780xF8; //B0, onB1 neet gardeB2 que lesmis bitsà intéressants0
ch=PORTB & 0x78; // on ne garde que les bits intéressants B3, B4,B5 et B6
switch (ch) {
case 0x380x78 : return 0;//enaucune haut = 0011 1000touche
case 0x580x38 : return 1;//en au milieuhaut = 01010011 1000
case 0x680x58 : return 2;// au milieu = 01100101 1000
case 0x700x68 : return 3;//en basau milieu = 01110110 00001000
case 0x70 : return 4;//en bas = 0111 0000
// si autre cas, pasdeux de touchetouches ou deux touchesautre
default : return NOTAKEY;
}
10 144

modifications