Cours 7.1. Masquages

Un masquage est une opération binaire qui permet de modifier certains bits d'un registre sans en changer les autres. On retrouve ce type d'opérations dans la programmation des microcontrôleurs et dans de nombreuses bibliothèques. Il existe 3 types de masquages :

Exemple

Supposons un registre 8 bits nommé PORTA qui permet de piloter des leds.

Exemple d'un registre pilotant des led

Nous supposerons que ce registre est accessible en lecture et en écriture.

Voici quelques exemples d'écritures dans le registre :

Supposons que l'on désire éteindre la led n°2, sans modifier les autres. On comprend rapidement que si l'on écrit PORTA = 0x00;, nous allons bien éteindre la led n°2, mais aussi toutes les autres ! C'est là qu'interviennent les masquages. La solution consiste à réaliser un ET logique bit à bit entre le PORTA et un mot binaire (masque). Voici une représentation imagée de l'opération de masquage :

Principe général du masquage binaire

L'opération binaire est détaillées ci-dessous. On constate que le résultat du ET logique entre PORTA et le masque correspond bien à l'extinction de la led n°2 sans modification des autres bits :

$$ \begin{array}[t]{r} 0101\:0101 \\ \& \; 1111\:1011 \\ \hline 0101\: 0001 \end{array} $$

En C, nous écrirons :

PORTA = PORTA & 0xFB;

Exercice

Modifiez le programme de l'exemple ci-dessus pour éteindre la led n°6 à la place de la led °2.

Quiz

Quel est l'intérêt fondamental des masquages ?

Vérifier Bravo ! Un masquage permet de modifier un bit tout en préservant les autres. Essaie encore ...

Quels sont les types de masquages élémentaires ?

Vérifier Bravo ! La copie d'un bit est possible, mais elle résulte de plusieurs opérations de masquage. Essaie encore ...

Dans le masquage suivant, comment s'appelle l'opérande 0xFE ?

reg = reg & 0xFE;
Vérifier Bravo ! On trouve fréquemment des codes avec une variable mask qui sert à définir le masque. Essaie encore ...

Voir aussi


Dernière mise à jour : 12/10/2021