Vous êtes sur la page 1sur 35

CHAPITRE III: LOGICIEL d’un µContrôleur

Unité centrale de traitement (CPU)

Le CPU peut être considéré comme le «cerveau» de l'appareil. Il est chargé de


1. récupérer l’instruction d'exécution,
2. décodage de cette instruction,
3. puis exécution de cette instruction.
Le CPU travaille parfois en conjonction avec l'ALU pour terminer l'exécution de
l'instruction (dans le cas des opérations arithmétiques et logiques).

Le CPU contrôle le bus d'adresse


 de la mémoire de programme,
 le bus d'adresse de la mémoire de données
 et accède à la pile.

Horloge d'instructions
Chaque cycle d'instruction (TCY) comprend quatre cycles Q (Q1-Q4). Le temps de cycle
Q est le même que le temps de cycle de l'oscillateur du composant (TOSC). Les cycles Q
fournissent le moment de
 L’accès au Décodeur,
 La lecture,
 le traitement les données,
 L’écriture, etc., de chaque cycle d'instruction.
la relation entre les cycles Q et le cycle d'instruction.
Le diagramme suivant montre la relation entre les cycles Q et le cycle d'instruction.
Chaque cycle d'instruction (Tcy) est composé de quatre cycles Q (Q1-Q4). Le cycle Q est le
même que le cycle d'oscillation du composant (TOSC).
Les quatre cycles Q qui composent un cycle d'instructions (TCY) peuvent être généralisés
comme:
Q1: Cycle de décodage des instructions ou NOP
Q2: Cycle de lecture des instructions ou aucune opération
Q3: Traitement des données
Q4: cycle d'écriture des données d'instruction ou aucune opération

Chaque instruction affichera une opération détaillée du cycle Q pour l'instruction.


Q Cycle Activity : micro opération
Operation of the ALU and W Register
Unité logique arithmétique (ALU)

Les microcontrôleurs PICmicro contiennent une ALU 8 bits et un registre de travail 8 bits.
L'ALU (l’unité arithmétique et logique) est à usage général. Elle exécute des fonctions
arithmétiques et booléennes entre les données dans le registre de travail et dans tout
fichier de registre.

L'ALU a une largeur de 8 bits et est capable d'opérations d'addition, de soustraction, de


décalage et logiques. Les opérations arithmétiques sont de nature complément à deux. En
deux opérandes instructions, généralement
 un opérande est le registre de travail (registre W).
 L'autre opérande est un fichier registre ou une constante immédiate.
Exple: MOVWF FSR (W → FSR) & MOVLW 0x25 0x25 → W
Dans les instructions d'opérande unique, l'opérande est soit le registre W ou un registre de
fichiers.
Le registre W est un registre de travail 8 bits utilisé pour les opérations ALU. Ce n'est pas
un registre adressable.

Selon l'instruction exécutée, l'ALU peut affecter les valeurs de Carry (C), Digit Carry (DC) et
Zero (Z) bits dans le registre STATUS.
Les bits C et DC fonctionnent comme un bit d'emprunt, respectivement, en soustraction.
Voir les instructions SUBLW et SUBWF pour exemples.
III-1 Organisation et utilisation du jeu d’instructions

III-1-1 Les types d’instructions

Il existe 4 types d’instructions :

III-1-2 Les instructions « orientées octet »

Ce sont des instructions qui manipulent les données sous


forme d’octets. Elles sont codées de la manière suivante :
Format des Instructions orientées Octets ou Bytes
-6 bits pour l’instruction : logique, car comme il y a 35
instructions, il faut 6 bits pour pouvoir les coder toutes

-1 bit de destination(d) pour indiquer si le résultat obtenu doit


être conservé dans le registre de travail de l’unité de calcul (W
pour Work) ou sauvé dans l’opérande (F pour File).

- Reste 7 bits pour encoder l’opérande (File)


7 bits ne donnent pas accès à la mémoire RAM totale, donc voici
ici l’explication de la division de la RAM en deux banques. Il s’agit
en réalité des bits RP0 et RP1 du registre STATUS.
Donner pour chacun des cas le contenu de
W= xxx
FSR=xxx

Et pour le dernier exple.


Contents of Address (FSR)=xxx
Donner le contenu des registre ou mémoires
affectées après exécution de l’instruction.

FLAG_REG=xxx

W=xxx
FSR=xxx
Contents of Address (FSR)=xxxx
Donner pour chacun des cas
le test fait et
le PC=xxx
Donner, dans chacun des cas
W=xxx
Voici ce que ça donne :
movlw 0x13 ; charger 0x13, soit B’10011’, donc b4=1,
; et b3=0

Remarques
Le jeu d’instructions du 16F876 est strictement identique à celui du 16F84, et, de ce fait, présente les mêmes
limitations.
Une de celle-ci, la plus gênante, est le nombre de bits qui accompagne les instructions de saut, comme le « goto ».
Rappelez-vous que les instructions de saut sont de la forme:
Op-code + 11 bits de destination.

Or, les sauts sur 11 bits ne permettent « que » des sauts à l’intérieur d’une page de 2K Mots. Notre processeur utilise
un maximum de 8Kmots de programme, et nécessite donc 2 bits supplémentaires pour accéder à l’intégralité de la
mémoire programme. Le schéma-bloc donnant bien une largeur de bus d’adressage de 13 bits.
Pour résumer, le saut s’effectuera à l’adresse donnée en argument complétée en poids fort par les 2 bits b4 et b3 de
PCLATH. Les bits 2 à 0 de PCLATH sont inutilisés ici.