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
- Committer:
- Giamarchi
- Date:
- 2019-01-15
- Revision:
- 1:95172f59262a
- Parent:
- 0:531f33a2550d
- Child:
- 2:c1a4641eeacf
File content as of revision 1:95172f59262a:
/*************************************/ // YNCREA ISEN Nîmes // CSI3 Electronique Numérique // // Cours : Systèmes à microcontrôleur // Prof : Frédéric Giamarchi // // Date : 15 janv 2019 // Test TP 01 : Controle de 8 Dels par 2 Boutons poussoir /*************************************/ #include "mbed.h" DigitalOut L0(PB_1); DigitalOut L1(PB_2); DigitalOut L2(PB_10); DigitalOut L3(PB_11); DigitalOut L4(PB_12); DigitalOut L5(PB_13); DigitalOut L6(PB_14); DigitalOut L7(PB_15); DigitalIn BTN3(PC_6); DigitalIn BTN4(PC_5); //DigitalOut BZ(PC_7); //uint8_t L[8] = {L0, L1, L2, L3, L4, L5, L6, L7}; void set_8Dels(uint8_t position) { L0 = position & 0x01; L1 = position & 0x02; L2 = position & 0x04; L3 = position & 0x08; L4 = position & 0x10; L5 = position & 0x20; L6 = position & 0x40; L7 = position & 0x80; } uint8_t ptr_3 = 0; uint8_t ptr_4 = 0; uint8_t pointeur = 1; uint8_t compteur = 0; uint8_t etat_del = 0; /***********************************************/ // Fonction Appui_BTN3 // Renvoie l'état actif ou relaché du bouton poussoir BTN3 uint8_t Appui_BTN3(void) { uint8_t etat_BTN3 = 0; // variable état BTN3 à 0 par défaut if(!BTN3) // Test appui sur BTN3 { wait(0.2); // tempo d'anti rebond etat_BTN3 = 1; // variable à 1 } return etat_BTN3; // La fonction renvoie la valeur 0 ou 1 } /***********************************************/ // Fonction Appui_BTN4 // Renvoie l'état actif ou relaché du bouton poussoir BTN4 uint8_t Appui_BTN4(void) { uint8_t etat_BTN4 = 0; if(!BTN4) { wait(0.2); etat_BTN4 = 1; } return etat_BTN4; } /***********************************************/ int main() { while(1) { /******** Question 1 ****************/ /* L0 = Appui_BTN3(); // Contrôle L0 par BTN3 */ /******** Question 2 ****************/ /* if(Appui_BTN3()) { pointeur <<=1; // Décalage vers la gauche if(pointeur == 0) // Test Limite gauche pointeur = 0x80; // Blocage set_8Dels(pointeur); // Affichage } */ /******** Question 3 ****************/ /* if(Appui_BTN4()) { pointeur >>=1; // Décalage vers la droite if(pointeur == 0) // Test Limite droite pointeur = 1; // Blocage set_8Dels(pointeur); } */ /******** Question 4 ****************/ wait_ms(10); // Execution toutes les 10 ms compteur++; // Incrémente un compteur temps if(Appui_BTN3()) { ptr_3++; // incrémente un pointeur compteur = 0; // RAZ compteur temps } /******** Question 5 ****************/ if(Appui_BTN4()) { ptr_4++; compteur = 0; } /******** Question 4 et 5 ****************/ if(compteur == 100) // Est-ce que cela fait 1 sec { if(ptr_3 != 0) // Test pointeur 3 -> Question 4 { // Masque OU logique avec etat_Del // Le masque est un décalage vers la gauche d'un 1 logique // Le nombre de décalage est défini par le pointeur etat_del = etat_del | 1<<(ptr_3 - 1); ptr_3 = 0; // Pointeur à 0 } if(ptr_4 != 0) // Test pointeur 4 -> Question 5 // Masque ET logique avec etat_Del // Le masque est un décalage vers la gauche d'un 1 logique // Le nombre de décalage est défini par le pointeur // Ensuite le résultat du masque est inversé etat_del = etat_del & ~(1<<ptr_4 - 1); ptr_4 = 0; set_8Dels(etat_del); } /***********************************************/ } // Fin du while(1) } // Fin du main() /***********************************************/