Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@1:95172f59262a, 2019-01-15 (annotated)
- Committer:
- Giamarchi
- Date:
- Tue Jan 15 15:55:11 2019 +0000
- Revision:
- 1:95172f59262a
- Parent:
- 0:531f33a2550d
- Child:
- 2:c1a4641eeacf
Test TP 15 janv 2019
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Giamarchi | 0:531f33a2550d | 1 | /*************************************/ |
Giamarchi | 1:95172f59262a | 2 | // YNCREA ISEN Nîmes |
Giamarchi | 1:95172f59262a | 3 | // CSI3 Electronique Numérique |
Giamarchi | 0:531f33a2550d | 4 | // |
Giamarchi | 0:531f33a2550d | 5 | // Cours : Systèmes à microcontrôleur |
Giamarchi | 0:531f33a2550d | 6 | // Prof : Frédéric Giamarchi |
Giamarchi | 0:531f33a2550d | 7 | // |
Giamarchi | 1:95172f59262a | 8 | // Date : 15 janv 2019 |
Giamarchi | 1:95172f59262a | 9 | // Test TP 01 : Controle de 8 Dels par 2 Boutons poussoir |
Giamarchi | 0:531f33a2550d | 10 | /*************************************/ |
Giamarchi | 0:531f33a2550d | 11 | #include "mbed.h" |
Giamarchi | 0:531f33a2550d | 12 | |
Giamarchi | 0:531f33a2550d | 13 | DigitalOut L0(PB_1); |
Giamarchi | 0:531f33a2550d | 14 | DigitalOut L1(PB_2); |
Giamarchi | 0:531f33a2550d | 15 | DigitalOut L2(PB_10); |
Giamarchi | 0:531f33a2550d | 16 | DigitalOut L3(PB_11); |
Giamarchi | 0:531f33a2550d | 17 | DigitalOut L4(PB_12); |
Giamarchi | 0:531f33a2550d | 18 | DigitalOut L5(PB_13); |
Giamarchi | 0:531f33a2550d | 19 | DigitalOut L6(PB_14); |
Giamarchi | 0:531f33a2550d | 20 | DigitalOut L7(PB_15); |
Giamarchi | 0:531f33a2550d | 21 | |
Giamarchi | 1:95172f59262a | 22 | DigitalIn BTN3(PC_6); |
Giamarchi | 1:95172f59262a | 23 | DigitalIn BTN4(PC_5); |
Giamarchi | 1:95172f59262a | 24 | |
Giamarchi | 1:95172f59262a | 25 | //DigitalOut BZ(PC_7); |
Giamarchi | 1:95172f59262a | 26 | |
Giamarchi | 1:95172f59262a | 27 | //uint8_t L[8] = {L0, L1, L2, L3, L4, L5, L6, L7}; |
Giamarchi | 0:531f33a2550d | 28 | |
Giamarchi | 0:531f33a2550d | 29 | void set_8Dels(uint8_t position) |
Giamarchi | 0:531f33a2550d | 30 | { |
Giamarchi | 0:531f33a2550d | 31 | L0 = position & 0x01; |
Giamarchi | 0:531f33a2550d | 32 | L1 = position & 0x02; |
Giamarchi | 0:531f33a2550d | 33 | L2 = position & 0x04; |
Giamarchi | 0:531f33a2550d | 34 | L3 = position & 0x08; |
Giamarchi | 0:531f33a2550d | 35 | L4 = position & 0x10; |
Giamarchi | 0:531f33a2550d | 36 | L5 = position & 0x20; |
Giamarchi | 0:531f33a2550d | 37 | L6 = position & 0x40; |
Giamarchi | 0:531f33a2550d | 38 | L7 = position & 0x80; |
Giamarchi | 0:531f33a2550d | 39 | } |
Giamarchi | 0:531f33a2550d | 40 | |
Giamarchi | 1:95172f59262a | 41 | uint8_t ptr_3 = 0; |
Giamarchi | 1:95172f59262a | 42 | uint8_t ptr_4 = 0; |
Giamarchi | 1:95172f59262a | 43 | uint8_t pointeur = 1; |
Giamarchi | 1:95172f59262a | 44 | uint8_t compteur = 0; |
Giamarchi | 1:95172f59262a | 45 | uint8_t etat_del = 0; |
Giamarchi | 1:95172f59262a | 46 | /***********************************************/ |
Giamarchi | 1:95172f59262a | 47 | // Fonction Appui_BTN3 |
Giamarchi | 1:95172f59262a | 48 | // Renvoie l'état actif ou relaché du bouton poussoir BTN3 |
Giamarchi | 1:95172f59262a | 49 | uint8_t Appui_BTN3(void) |
Giamarchi | 1:95172f59262a | 50 | { |
Giamarchi | 1:95172f59262a | 51 | uint8_t etat_BTN3 = 0; // variable état BTN3 à 0 par défaut |
Giamarchi | 1:95172f59262a | 52 | |
Giamarchi | 1:95172f59262a | 53 | if(!BTN3) // Test appui sur BTN3 |
Giamarchi | 1:95172f59262a | 54 | { |
Giamarchi | 1:95172f59262a | 55 | wait(0.2); // tempo d'anti rebond |
Giamarchi | 1:95172f59262a | 56 | etat_BTN3 = 1; // variable à 1 |
Giamarchi | 1:95172f59262a | 57 | } |
Giamarchi | 1:95172f59262a | 58 | return etat_BTN3; // La fonction renvoie la valeur 0 ou 1 |
Giamarchi | 1:95172f59262a | 59 | } |
Giamarchi | 1:95172f59262a | 60 | /***********************************************/ |
Giamarchi | 1:95172f59262a | 61 | // Fonction Appui_BTN4 |
Giamarchi | 1:95172f59262a | 62 | // Renvoie l'état actif ou relaché du bouton poussoir BTN4 |
Giamarchi | 1:95172f59262a | 63 | uint8_t Appui_BTN4(void) |
Giamarchi | 1:95172f59262a | 64 | { |
Giamarchi | 1:95172f59262a | 65 | uint8_t etat_BTN4 = 0; |
Giamarchi | 1:95172f59262a | 66 | |
Giamarchi | 1:95172f59262a | 67 | if(!BTN4) |
Giamarchi | 1:95172f59262a | 68 | { |
Giamarchi | 1:95172f59262a | 69 | wait(0.2); |
Giamarchi | 1:95172f59262a | 70 | etat_BTN4 = 1; |
Giamarchi | 1:95172f59262a | 71 | } |
Giamarchi | 1:95172f59262a | 72 | return etat_BTN4; |
Giamarchi | 1:95172f59262a | 73 | } |
Giamarchi | 1:95172f59262a | 74 | /***********************************************/ |
Giamarchi | 0:531f33a2550d | 75 | int main() |
Giamarchi | 1:95172f59262a | 76 | { |
Giamarchi | 0:531f33a2550d | 77 | while(1) |
Giamarchi | 0:531f33a2550d | 78 | { |
Giamarchi | 1:95172f59262a | 79 | /******** Question 1 ****************/ |
Giamarchi | 1:95172f59262a | 80 | /* |
Giamarchi | 1:95172f59262a | 81 | L0 = Appui_BTN3(); // Contrôle L0 par BTN3 |
Giamarchi | 1:95172f59262a | 82 | */ |
Giamarchi | 1:95172f59262a | 83 | /******** Question 2 ****************/ |
Giamarchi | 1:95172f59262a | 84 | /* |
Giamarchi | 1:95172f59262a | 85 | if(Appui_BTN3()) |
Giamarchi | 0:531f33a2550d | 86 | { |
Giamarchi | 1:95172f59262a | 87 | pointeur <<=1; // Décalage vers la gauche |
Giamarchi | 1:95172f59262a | 88 | if(pointeur == 0) // Test Limite gauche |
Giamarchi | 1:95172f59262a | 89 | pointeur = 0x80; // Blocage |
Giamarchi | 1:95172f59262a | 90 | set_8Dels(pointeur); // Affichage |
Giamarchi | 1:95172f59262a | 91 | } |
Giamarchi | 1:95172f59262a | 92 | */ |
Giamarchi | 1:95172f59262a | 93 | /******** Question 3 ****************/ |
Giamarchi | 1:95172f59262a | 94 | /* |
Giamarchi | 1:95172f59262a | 95 | if(Appui_BTN4()) |
Giamarchi | 1:95172f59262a | 96 | { |
Giamarchi | 1:95172f59262a | 97 | pointeur >>=1; // Décalage vers la droite |
Giamarchi | 1:95172f59262a | 98 | if(pointeur == 0) // Test Limite droite |
Giamarchi | 1:95172f59262a | 99 | pointeur = 1; // Blocage |
Giamarchi | 1:95172f59262a | 100 | set_8Dels(pointeur); |
Giamarchi | 1:95172f59262a | 101 | } |
Giamarchi | 1:95172f59262a | 102 | */ |
Giamarchi | 1:95172f59262a | 103 | /******** Question 4 ****************/ |
Giamarchi | 1:95172f59262a | 104 | |
Giamarchi | 1:95172f59262a | 105 | wait_ms(10); // Execution toutes les 10 ms |
Giamarchi | 1:95172f59262a | 106 | compteur++; // Incrémente un compteur temps |
Giamarchi | 1:95172f59262a | 107 | |
Giamarchi | 1:95172f59262a | 108 | if(Appui_BTN3()) |
Giamarchi | 1:95172f59262a | 109 | { |
Giamarchi | 1:95172f59262a | 110 | ptr_3++; // incrémente un pointeur |
Giamarchi | 1:95172f59262a | 111 | compteur = 0; // RAZ compteur temps |
Giamarchi | 0:531f33a2550d | 112 | } |
Giamarchi | 1:95172f59262a | 113 | /******** Question 5 ****************/ |
Giamarchi | 1:95172f59262a | 114 | |
Giamarchi | 1:95172f59262a | 115 | if(Appui_BTN4()) |
Giamarchi | 1:95172f59262a | 116 | { |
Giamarchi | 1:95172f59262a | 117 | ptr_4++; |
Giamarchi | 1:95172f59262a | 118 | compteur = 0; |
Giamarchi | 1:95172f59262a | 119 | } |
Giamarchi | 1:95172f59262a | 120 | /******** Question 4 et 5 ****************/ |
Giamarchi | 1:95172f59262a | 121 | |
Giamarchi | 1:95172f59262a | 122 | if(compteur == 100) // Est-ce que cela fait 1 sec |
Giamarchi | 0:531f33a2550d | 123 | { |
Giamarchi | 1:95172f59262a | 124 | if(ptr_3 != 0) // Test pointeur 3 -> Question 4 |
Giamarchi | 1:95172f59262a | 125 | { |
Giamarchi | 1:95172f59262a | 126 | // Masque OU logique avec etat_Del |
Giamarchi | 1:95172f59262a | 127 | // Le masque est un décalage vers la gauche d'un 1 logique |
Giamarchi | 1:95172f59262a | 128 | // Le nombre de décalage est défini par le pointeur |
Giamarchi | 1:95172f59262a | 129 | etat_del = etat_del | 1<<(ptr_3 - 1); |
Giamarchi | 1:95172f59262a | 130 | ptr_3 = 0; // Pointeur à 0 |
Giamarchi | 1:95172f59262a | 131 | } |
Giamarchi | 1:95172f59262a | 132 | if(ptr_4 != 0) // Test pointeur 4 -> Question 5 |
Giamarchi | 1:95172f59262a | 133 | // Masque ET logique avec etat_Del |
Giamarchi | 1:95172f59262a | 134 | // Le masque est un décalage vers la gauche d'un 1 logique |
Giamarchi | 1:95172f59262a | 135 | // Le nombre de décalage est défini par le pointeur |
Giamarchi | 1:95172f59262a | 136 | // Ensuite le résultat du masque est inversé |
Giamarchi | 1:95172f59262a | 137 | etat_del = etat_del & ~(1<<ptr_4 - 1); |
Giamarchi | 1:95172f59262a | 138 | ptr_4 = 0; |
Giamarchi | 1:95172f59262a | 139 | |
Giamarchi | 1:95172f59262a | 140 | set_8Dels(etat_del); |
Giamarchi | 1:95172f59262a | 141 | } |
Giamarchi | 1:95172f59262a | 142 | /***********************************************/ |
Giamarchi | 1:95172f59262a | 143 | } // Fin du while(1) |
Giamarchi | 1:95172f59262a | 144 | } // Fin du main() |
Giamarchi | 1:95172f59262a | 145 | /***********************************************/ |